这是我的第一篇文章,请帮助我。我只想允许来自一个网络的流量并放弃所有网络,我做错了什么?我的程序的输出是它在所有情况下丢弃数据包。脚本运行后,将不再访问任何站点。发行版:Ubuntu 16.04
#Flush old
iptables -F
iptables -X
#Allow loopback
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
#Allow DNS
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
#Accept IP, use your own IP
iptables -I INPUT -s $(IP) -p tcp --dport 443 -j ACCEPT
iptables -I OUTPUT -s $(IP) -p tcp --dport 443 -j ACCEPT
#Drop rest
iptables -I INPUT -i lo -j REJECT
iptables -I OUTPUT -o lo -j REJECT
使用拒绝和丢弃两者,不太有效。
答案1
您正在将规则I
插入而不是A
附加REJECT
到表中。
由于规则是按顺序读取和应用的,因此您实际上是在其余规则之前插入要读取的拒绝规则。
尝试将您的REJECT
规则更改为
iptables -A INPUT -i lo -j REJECT
iptables -A OUTPUT -o lo -j REJECT
反而。一定要添加
iptables-save
在脚本的最后