以下是“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 正常工作的端口?
答案1
您的 Web 服务器是否尝试将 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 服务器,并且 bind 使用递归查找所有内容,则响应可能来自任何地方。在这种情况下,您可以使用 conntrack:
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
这允许对出站连接做出响应。如果您有大量 DNS 查询,则可能必须增加 conntrack 表大小或减少其超时。
答案2
添加日志记录规则来查看删除了什么:
iptables -A INPUT -j LOG
速度变慢很可能是由于您忘记的某个端口超时造成的。