这是我的内部开发服务器的防火墙脚本。 我想能够与http / https出去,但我只想通过内部networking内的ssh / http访问服务器。
iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F iptables -A INPUT -i eth0 -p tcp -s 10.1.1.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --sport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -s 10.1.1.0/24 --dport http -j ACCEPT
似乎按照我的预期工作,但由于某种原因,我似乎无法进入外部世界。 例如:
super@dev0:~$ ping google.com ping: unknown host google.com
由于我把我的默认OUTPUT策略设置为ACCEPT,所以我不应该没有任何限制地离开? 我误解了什么?
您不允许重新input相关数据包。您所看到的不仅仅是ping不起作用,而且甚至无法parsingDNS名称。 您需要为ESTABLISHED和RELATED数据包进行状态匹配:
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
你也可以只允许ping入站:
iptables -I INPUT 2 -p icmp --icmp-type echo-request -j ACCEPT
ping使用ICMP。 你的规则与国家是TCP。 ICMP数据包不在您的networking中,但被“INPUT DROP”默认策略阻止。