2016-06-19 69 views
0

我试图用bash脚本自动创建和删除规则。IPTables删除IP和端口规则

目前,我有这样一个规则:

iptables -t nat -I PREROUTING -p udp -d {IPDESTINATION} --dport {PORTDESTINATION} -m u32 --u32 '0>>22&[email protected]=0xFFFFFFFF && 0>>22&[email protected]=0x54536F75 && 0>>22&[email protected]=0x72636520 && 0>>22&[email protected]=0x456E6769 && 0>>22&[email protected]=0x6E652051 && 0>>22&[email protected]=0x75657279' -j REDIRECT --to-port {REDIRECTPORT} 

我需要能够通过指定IP目的地和端口目标删除该规则。我已经尝试类似如下:

iptables -D PREROUTING -s {IPDESTINATION} -t nat 

即使没有提供的端口目的地,我无法删除该规则,因为它与错误

iptables: Bad rule (does a matching rule exist in that chain?). 

回应这是可能的NAT规则? {IPDESTINATION}等都填写有效的细节。

+0

复制的http://stackoverflow.com/q/10197405/103167?但这是一个系统管理问题,在StackOverflow上脱离主题。 –

+0

不完全是这样,可以通过行号删除规则,例如(iptables -t nat -D PREROUTING 1),但这不可能与我在Bash中做的事情相同,它需要通过DSTIP和DSTPORT去除 – user1372896

+0

Did你读到的不仅仅是这个问题上最高票数的答案吗?例如,接受的答案显示如何在不使用行号的情况下执行此操作。 –

回答

0

如果你不能做删除此规则: 的iptables -t NAT -D PREROUTING 1

一种解决方法是创建谁包含了所有的规则的文件:

1)创建一个bash文件中像“rulesFW.sh”

#!/bin/bash 
iptables -F -t nat 

2)在你的脚本,每次添加一个规则到iptables的时候,追加用命令bash的文件。

3)如果您希望将文件

4删除规则,删除谁符合您的规则(目的地IP等参数线......))重新启动脚本