为什么这些iptables规则不起作用

我认为需要更多的细节。 我在我的地区开了一个新的咖啡馆,人们正在下载增加我的账单的东西,所以我想在我的路由器上阻塞协议,然后重新启用任何PC,如果PC需要它在以后的日子,可能是几天或几个月

我的路由器运行Openwrt态度调整

我阻止http只是为了testing,然后使用l7filter添加协议

嗨,我是在iptables的noob,并摆弄它拿到它。

这是系统

Router IP-192.168.1.10 PC1 IP-192.168.1.11 PC2 IP-192.168.1.12 Laptop IP-192.168.1.13 Mobile IP-192.168.1.14 

我应用了下面的规则,并删除了所有的http数据包。

 iptables -I FORWARD -m layer7 --l7proto http -j DROP 

然后我想为PC1启用http我写了下面的规则,但http不起作用。

 iptables -I FORWARD -mlayer7 --l7proto http -s 192.168.1.11 -j ACCEPT 

它只在我input规则时才起作用

 iptables -I FORWARD -m layer7 --l7proto http -j ACCEPT 

但现在它可以在所有的系统上使用。

我应该怎么做才能阻止所有系统上的http,然后启用它,让我们说只有PC1。

感谢您的帮助!

产量

 Chain FORWARD (policy DROP 12 packets, 2700 bytes) pkts bytes target prot opt in out source destination 5 200 ACCEPT all -- * * 192.168.1.113 0.0.0.0/0 LAYER7 l7proto http 25 1036 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 LAYER7 l7proto http 

 iptables -I -INPUT -p tcp ! -s [IP address here] --dport 80 -j DROP 

密切关注“!” 运营商。 它会丢弃所有不是来自源IP地址的stream量。

但是,在稍后的评论中,你会说:

内森我试图实现的是先阻止一切HTTP,然后重新启用任何设备一个接一个我的愿望

这有点不同。 在这种情况下,您将需要依靠订购。 您需要明确拒绝所有的HTTP,但是对于您要接受的每个主机, 该删除规则之上添加一条规则。 内森的回答更多的是针对性的。

请执行下列操作:

iptables -I INPUT -p tcp -s 192.168.1.11 --dport 80 -j ACCEPT iptables -I INPUT -p tcp --dport 80 -j DROP

这将允许端口80(http)上来自该IP的stream量,否则将其丢弃。 不知道你为什么使用FORWARD链。