我目前有这个片段:
# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X
运行此命令后,是否有可能某些不受影响的规则仍然有效?
这个想法是拥有一个完全干净的 iptables 配置,可以轻松地被新的规则集替换(不用担心路由/ifconfig 的参数)。
答案1
简洁地回答你的问题,不会:刷新每个表后不会有任何“剩余”规则。但为了彻底起见,你可能还想将内置INPUT
和FORWARD
链的策略设置为ACCEPT
:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X
清除 ip6tables 规则:
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -F
ip6tables -X
...这样就行了。iptables -nvL
应该产生这个(或非常类似)输出:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
答案2
这将正确地将你的 iptables 系统完全重置为非常基本的状态:
iptables-save | awk '/^[*]/ { print $1 }
/^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
/COMMIT/ { print $0; }' | iptables-restore
所有策略将重置为“接受”,并刷新当前使用的每个表。除内置链之外的所有链都将不复存在。
答案3
将配置备份到 iptables_backup.conf 并清除所有规则。
iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore
要恢复以前的配置:
iptables-restore < iptables_backup.conf
答案4
只需 1 或 2 个命令即可完成此操作:
$ sudo iptables-save > iptables.bak
$ sudo iptables -F
结果:
$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 3138 packets, 5567K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3602 packets, 6547K bytes)
pkts bytes target prot opt in out source destination