1.查看现有规则

DOCKER-USER 链的规则是否生效与 链的优先级 和 规则顺序相关

sudo iptables -L DOCKER-USER --line-numbers

2.添加规则

允许已建立的连接(必须放在最前面)

sudo iptables -I DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

允许 192.168.1.100 访问所有 Docker 容器:

sudo iptables -I DOCKER-USER -s 192.168.1.100 -j ACCEPT

允许 192.168.1.100 访问 Docker 容器时,仅允许访问 TCP 80 端口

sudo iptables -I DOCKER-USER -p tcp --dport 80 -s 192.168.1.100 -j ACCEPT

添加规则到指定位置

sudo iptables -I DOCKER-USER 3 -p tcp --dport 80 -s 192.168.1.101 -j ACCEPT

参数说明: -I在最前面插入

3.禁止其他所有 IP 的访问

注意iptables规则是从上往下执行的所以这条命令要放在最下面

sudo iptables -A DOCKER-USER -j DROP

参数说明: -A在最后面插入

4.删除规则 (添加或删除会重新排序规则)

删除所有规则

sudo iptables -F DOCKER-USER

删除指定规则

sudo iptables -D DOCKER-USER 4

5.恢复默认规则

sudo iptables -F DOCKER-USER

sudo iptables -I DOCKER-USER -j RETURN

6.持久化规则 (防止重启失效)

iptables默认不会自动保存规则,因此需要使用 iptables-persistent 工具来保存规则

安装 iptables-persistent

sudo apt install iptables-persistent

保存规则

sudo netfilter-persistent save

重新加载规则

sudo netfilter-persistent reload