Linux
iptables 阻止 DNS
我的防火牆配置上已解鎖埠 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
即使這不能解決您的問題,無論如何最好包含此規則,因為某些程序依賴於正常工作的環回適配器才能正常工作。