docker 重启后 iptables 规则丢失。如何永久保存?

问题描述 投票:0回答:2

我正在运行 docker 和 Zerotier,为了让 Zerotier 正常工作,我需要向 iptables 添加规则。然而,每次重新启动后,这条规则都会被 docker 删除。

所以我想使用 iptables-persistent 来存储规则。但重启后规则仍然消失。 我用的是

sudo iptables -I DOCKER-USER -p all -i br0 -j ACCEPT
sudo iptables-save 

知道我错过了什么吗?

docker iptables
2个回答
0
投票

当 Docker 启动时,它会创建自己的

iptables
规则。它为
DOCKER-USER
创建
FORWARD
链。建议将您的规则放在那里。问题是每当您重新启动系统时规则就会消失。 Docker 文档没有给出特定的解决方案。我的解决方案是:

1 - 创建带有规则的脚本

/root/bin/docker-iptables.sh

#!/bin/bash

while ! iptables -n --list DOCKER-USER >/dev/null 2>&1
  do
    sleep 1;
  done

  iptables -I DOCKER-USER -d 192.168.1.0/24 -j DROP
  iptables -I DOCKER-USER -d 192.168.1.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

2 - 添加脚本以在启动时启动 我选择了

crontab

crontab -l

# m   h    dom   mon   dow   command
@reboot                    /root/bin/docker-iptables.sh &

您也可以尝试这个解决方案。

https://github.com/boTux-fr/systemd-service-iptables/tree/master


-1
投票

iptables-save
将规则输出到标准输出。您需要将输出写入系统从中加载它们的文件,通常是
/etc/iptables/rules.v4

如果你是 root,这会起作用:

iptables-save > /etc/iptables/rules.v4

sudo
当然不能很好地处理重定向,但至少一些
iptables-save
实现(Ubuntu 20.04)有一个
-f
/
--file
选项,可以写入
sudo
下的指定文件:

sudo iptables-save -f /etc/iptables/rules.v4

© www.soinside.com 2019 - 2024. All rights reserved.