Domain-Name-System
在打開適當埠的 iptables 配置後,站點變得緩慢且無響應?
這是“iptables-save”的輸出:
# Generated by iptables-save v1.4.4 on Sun Nov 21 11:28:56 2010 *mangle :PREROUTING ACCEPT [921:116690] :INPUT ACCEPT [921:116690] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [856:343403] :POSTROUTING ACCEPT [856:343403] COMMIT # Completed on Sun Nov 21 11:28:56 2010 # Generated by iptables-save v1.4.4 on Sun Nov 21 11:28:56 2010 *nat :PREROUTING ACCEPT [18:1076] :POSTROUTING ACCEPT [189:12510] :OUTPUT ACCEPT [189:12510] COMMIT # Completed on Sun Nov 21 11:28:56 2010 # Generated by iptables-save v1.4.4 on Sun Nov 21 11:28:56 2010 *filter :INPUT DROP [188:58400] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [856:343403] -A INPUT -p icmp -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p udp -m udp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p udp -m udp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p udp -m udp --dport 443 -j ACCEPT COMMIT # Completed on Sun Nov 21 11:2
該伺服器託管我的綁定伺服器,該伺服器用作相關特定域的權威名稱伺服器。伺服器還託管站點本身。在這些埠打開的情況下啟動 iptables 規則時,什麼會導致速度變慢?我是否缺少一些應該允許 dns 正常工作的埠?
您的網路伺服器是否試圖將 IP 地址反向解析為主機名?當 bind 必須遞歸或轉發請求時,預設情況下(從 bind 8.1 開始)它會選擇隨機埠來發出請求。由於 UDP 數據包返回到發送它的埠,因此它們被此防火牆阻止。
你可以取消註釋
query-source address * port 53;
在 named.conf.options 文件中(無論如何在 Debian 上)強制它使用埠 53。選擇隨機埠是為了幫助防止記憶體中毒攻擊(在真正的數據包到達之前,有人將欺騙的響應數據包返回給您) 所以修復防火牆而不是更改綁定是個好主意。
如果您的綁定伺服器(以及
/etc/resolv.conf
所有其他應用程序)配置為使用特定的轉發器,那麼您可以創建一個規則(如果有多個),例如iptables -A INPUT -p udp -s OTHERDNSSERVER --sport 53 -j ACCEPT
這將允許來自您的外部 DNS 伺服器(埠 53)的數據包。如果您的 ISP/主機沒有為您提供要使用的 DNS 伺服器,並且綁定使用遞歸來查找所有內容,那麼響應可能來自任何地方。在這種情況下,您將使用 conntrack:
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
這允許響應出站連接。如果您有很多 DNS 查詢,您可能需要增加 conntrack 表大小或減少其超時。