我创建了以下规则(仅适用于FORWARD):
iptables -P FORWARD DROP
iptables -A FORWARD -o lo -j ACCEPT
iptables -A FORWARD -s ##MYIPHERE## -j ACCEPT
然后我运行 iptables -L 并得到以下结果:
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- ##MYREVERSEDNS## anywhere
ACCEPT all -- localhost anywhere
所以我可以看到默认策略是删除,但是为什么第一行是这样的:
ACCEPT all -- anywhere anywhere
这是否意味着默认策略将被覆盖,并且允许转发来自任何地方的所有流量?我需要添加另一条规则吗?谢谢
答案1
这是因为iptables -L
不包括所有细节。它只提供粗略概述。要获取更详细的列表,请使用详细开关:iptables -vL
。它看起来像这样:
Chain FORWARD (policy ACCEPT 363K packets, 256M bytes)
pkts bytes target prot opt in out source destination
0 0 DOCKER all -- any docker0 anywhere anywhere
0 0 ACCEPT all -- any docker0 anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- docker0 !docker0 anywhere anywhere
0 0 ACCEPT all -- docker0 docker0 anywhere anywhere
如您所见,接口名称(仅docker0
在此示例中)是可见的。
如果您希望“代码”准确地重新创建规则,请使用以下iptables-save
命令:
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT