我正在尝试设置一些防火墙规则以允许一台服务器和另一台服务器之间的 SSH、传入 ping、munin 和 MySQL(所有这些服务都按照我的规则正常工作),但是当我应用这些规则时,我无法再 ping或解析任何 DNS(因此我可以 ping74.125.225.65
但不能google.com
)。
以下是我使用的规则:
# Accept traffic on localhost:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow SSH from anywhere:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
# Accept ICMP Ping requests (incoming and outgoing):
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
# Allow munin from subdomain.example.com:
iptables -I INPUT -p tcp -s 123.23.45.1 --dport 4949 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -p tcp -d 123.23.45.1 --dport 4949 -m state --state ESTABLISHED -j ACCEPT
# Allow MySQL from subdomain.example.com:
iptables -I INPUT 2 -p tcp -s 123.23.45.1 --dport 3306 -j ACCEPT
iptables -A OUTPUT -p tcp -d 123.23.45.1 --dport 3306 -j ACCEPT
# Drop all other traffic:
iptables -A INPUT -j DROP
resolv.conf
,/etc/hosts
等都是正确的,如果我简单地执行$ iptables -F
, 并再次 ping google,它就可以正常工作。只有应用防火墙规则后,我才能得到ping: unknown host google.com
.
您没有允许 DNS 流量的规则,那么它如何工作?