Total Pageviews

Sunday 28 February 2016

怎么删除一条已有的iptables规则

学习IPTABLES 时候只学过新增规则,用iptables -F后全部规则都会清空,但是如何删除一条规则呢?网上搜索了下,删除规则的方法:
语法是: iptables -D chain rulenum [options]
其中: chain 是链的意思,就是INPUT或FORWARD 之类的.
             rulenum 是规则的编号。从1 开始。可以使用  --line-numbers 列出规则的编号.
说一下 --line-numbers 选项,如下面的命令:
1、查看需要删除的规则,本例为FORWARD 规则。
[root@Router ~]# iptables -L FORWARD --line-numbers  
hain FORWARD (policy ACCEPT)
num  target     prot opt source               destination       
1    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
2、删除指定行的规则:
[root@Router ~]# iptables -D FORWARD 3  删除指定的第3行规则
-------------------------------------
在网上找了一下,删除规则的命令方法:
语法是: iptables -D chain rulenum [options]
其中: chain 是链的意思,就是INPUT或FORWARD 之类的定语。
rulenum 是该条规则的编号。从1开始。可以使用iptables -L INPUT --line-numbers列出指定的链的规则的编号来。
所以,例如上面要删除一个INPUT链的规则的话可以这样:
iptables -D INPUT 3
意思是删除第3条规则。
说一下上面的 --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


删除指定的第4行规则:
iptables -D INPUT 4
OK了。。。
------------------------
使用iptables -F 要小心,搞不好,你就马上同服务器断开连接了

以下是来自 http://wiki.ubuntu.org.cn/IptablesHowTo 上的说明
可以通过iptables -F清除所有规则来暂时停止防火墙: (警告:这只适合在没有配置防火墙的环境中,如果已经配置过默认规则为deny的环境,此步骤将使系统的所有网络访问中断)

如果想清空的话,先执行
 iptables -P INPUT ACCEPT

然后执行
iptables -F

通过iptables -L 看到如下信息
Chain INPUT (policy DROP 0 packets, 0 bytes)  (注意 是DROP)
执行/sbin/iptables -F就肯定立马断开连接

当执行了
iptables -P INPUT ACCEPT
再次通过iptables -L看信息的话就是
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
所以现在是可以安全使用
iptables -F了