iptables的配置文件保存在/etc/sysconfig/iptables-config下,书写了iptables规则以后如果需要保存规则,则可以使用命令:iptables-save,使用此命令保存的规则位置可以是任意的,此时保存的规则在重启机器后无法自动生效,需要使用命令iptables-restore恢复,或者写入开机启动脚本/etc/rc.d/rc.local里面。
以下为教材里使用的命令:
保存规则:#iptables-save >/etc/iptables-script
恢复规则:#iptables-restore>/etc/iptables-script
保存和恢复的位置只要是两者一致就可以了,如果iptables-script没有则需要创建。
若想开机自动启用脚本,则可以使用以下命令放到系统初始化Shell脚本/etc/rc.d/rc.local中
#echo '/sbin/iptables-restore /etc/iptables-script' >>/etc/rc.d/rc.local
但近日查看一些资料,发现规则保存的位置在/etc/sysconfig/iptables下,所以一些资料就有了
保存规则:#iptables-save >/etc/sysconfig/iptables
恢复规则:#iptables-restore>/etc/sysconfig/iptables
若想开机自动启用脚本,则可以使用以下命令放到系统初始化Shell脚本/etc/rc.d/rc.local中
#echo '/sbin/iptables-restore /etc/sysconfig/iptables' >>/etc/rc.d/rc.local
此外还有一命令保存规则 #service iptables save,如下图:
规则自动保存到了/etc/sysconfig/iptables,用此命令保存的规则开机会自动生效,所以为了统一期间,建议以后规则的保存都保存在/etc/sysconfig/iptables下。
语法是: iptables -D chain rulenum [options]
其中: chain 是链的意思,就是INPUT FORWARD 之类的
rulenum 是规则的编号。从1 开始。可以使用 --line-numbers 列出规则的编号
所以,例如上面要删除一个INPUT链的规则的话可以这样:iptables -D INPUT 3
意思是删除第3条规则。
还有第二种方法。第二种办法是 -A 命令的映射,不过用-D替换-A。当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。也就是说,你如何用iptables -A.... 语句定义了一个规则,则删除此规则时就用 -D 来代替- A 其余的都不变即可。
======================
说一下上面的 --line-numbers 选项,如下面的命令:
iptables -L INPUT --line-numbers 列出INPUT 链所有的规则
num target prot opt source destination
1 REJECT tcp -- anywhere anywhere tcp dpt:microsoft-ds reject-with icmp-port-unreachable
2 REJECT tcp -- anywhere anywhere tcp dpt:135 reject-with icmp-port-unreachable
3 REJECT tcp -- anywhere anywhere tcp dpt:netbios-ssn reject-with icmp-port-unreachable
4 REJECT udp -- anywhere anywhere udp dpt:microsoft-ds reject-with icmp-port-unreachable
5 REJECT udp -- anywhere anywhere udp dpt:135 reject-with icmp-port-unreachable
...
...
删除指定行规则:
[root@localhost rc.d]# iptables -D INPUT 4