Domain-Name-System

iptables 阻止 ping/訪問域名的能力

  • December 14, 2012

我正在嘗試設置一些防火牆規則,以允許在一台伺服器和另一台伺服器之間進行 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 流量的規則,那麼它是如何工作的呢?

引用自:https://serverfault.com/questions/458167