我被分配了一项任务,为具有委派 DNS 区域的子域创建 DNS 服务器。我确实测试了区域文件并使用 dig 工具,我可以确认它在调用 localhost 和服务器 IP 时正常工作,但是当通过全局服务器使用 dig 时,它无法解析并超时。我的主管告诉我问题似乎出在添加的 iptables 规则上,但我不知道可能是什么。以下屏幕截图显示了访问时传入的数据包(出于安全原因,我隐藏了 IP,抱歉):https://prnt.sc/f6sJxmTDirsP
下面的脚本行是我当前正在运行的 iptables 规则(注意端口 53):
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [121:27920]
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p udp --sport 53 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
答案1
以下行:
-A INPUT -p udp --sport 53 -j ACCEPT
应该:
-A INPUT -p udp --dport 53 -j ACCEPT
您还缺少允许 DNS 服务器传入 TCP 连接的规则。
此规则:
-A OUTPUT -p udp --dport 53 -j ACCEPT
是不必要的,因为它属于 OUTPUT 策略的涵盖范围。