我认为需要更多的细节。 我在我的地区开了一个新的咖啡馆,人们正在下载增加我的账单的东西,所以我想在我的路由器上阻塞协议,然后重新启用任何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
链。