当我执行以下操作时,IPTABLES 所有网络都会被丢弃

当我执行以下操作时,IPTABLES 所有网络都会被丢弃

这是我的第一篇文章,请帮助我。我只想允许来自一个网络的流量并放弃所有网络,我做错了什么?我的程序的输出是它在所有情况下丢弃数据包。脚本运行后,将不再访问任何站点。发行版: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

在脚本的最后

相关内容