Linux

iptables 阻止 DNS

  • December 4, 2010

我的防火牆配置上已解鎖埠 53,但我的防火牆仍然阻止我的 dns 查找。

我知道 dns 查找正在工作,因為如果我將預設輸入策略更改為接受,則名稱解析正確完成。

這是 iptables 腳本

Generated by iptables-save v1.3.5 on Fri Dec  3 12:23:49 2010
*filter
:INPUT DROP [41:3304]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [558:59294]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -i eth0 -p tcp -m tcp --sport 1024:65535 --dport 22 -j ACCEPT
-A INPUT -s 172.16.0.134 -p tcp -m tcp --sport 1024:65535 --dport 80 -j ACCEPT
-A INPUT -s 172.16.0.134 -p tcp -m tcp --sport 1024:65535 --dport 443 -j ACCEPT
-A INPUT -s 172.16.0.134 -p tcp -m tcp --sport 1024:65535 --dport 20 -j ACCEPT
-A INPUT -s 172.16.0.134 -p tcp -m tcp --sport 1024:65535 --dport 21 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -s 172.16.0.4 -j DROP
-A OUTPUT -s 172.16.0.136 -j DROP
-A OUTPUT -s 172.16.0.135 -j DROP
COMMIT
# Completed on Fri Dec  3 12:23:49 2010 <code>

iptables -L 產量

[root@saas-dev-dcpc ~]# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp spts:1024:65535 dpt:ssh
ACCEPT     tcp  --  172.16.0.134         anywhere            tcp spts:1024:65535 dpt:http
ACCEPT     tcp  --  172.16.0.134         anywhere            tcp spts:1024:65535 dpt:https
ACCEPT     tcp  --  172.16.0.134         anywhere            tcp spts:1024:65535 dpt:ftp-data
ACCEPT     tcp  --  172.16.0.134         anywhere            tcp spts:1024:65535 dpt:ftp
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere            udp dpt:domain

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  172.16.0.4           anywher
DROP       all  --  172.16.0.136         anywhere
DROP       all  --  172.16.0.135         anywhere

Chain RH-Firewall-1-INPUT (0 references)
target     prot opt source               destination 

認為如果您-m state --state RELATED,ESTABLISHED -j ACCEPT向所有鏈添加規則,這將得到解決。看起來您可能只允許一個方向的 DNS 流量。

或者,--sport 53也嘗試使用規則。

因此,您的 DNS 數據包被 INPUT 鏈的 DROP 策略阻止,即使您顯然有iptables規則應該接受傳入 UDP 和 TCP 數據包到埠 53。這很奇怪。要獲得有關問題所在的更多線索,請在規則集的末尾添加一條 LOG 規則iptables,如下所示:

iptables -A INPUT -j LOG

做一些 DNS 查詢,看看系統日誌文件中顯示了什麼(如果有的話)(可能/var/log/syslog和/或/var/log/messages)。如果傳入的 DNS 查詢數據包被丟棄,它們將被上述規則記錄。

如果日誌中沒有顯示任何內容,則說明出現了其他問題,導致您的 DNS 伺服器無法響應。對您的系統一無所知,我不會冒險猜測,但我確實注意到您沒有從 INPUT 過濾中排除環回適配器。

嘗試將以下內容添加到規則集的頂部:

-A INPUT -i lo -j ACCEPT

即使這不能解決您的問題,無論如何最好包含此規則,因為某些程序依賴於正常工作的環回適配器才能正常工作。

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