我在 centos 机器上打开端口 53 进行 DNS 配置时遇到了问题。
这是我的 iptables 配置
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
当我对机器运行 nmap 扫描时,只显示端口 80 处于打开状态。我是否遗漏了什么?
编辑:
完整的 iptable
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p udp -m state --state NEW,ESTABLISHED -m udp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --state NEW -m tcp --dport 80 -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
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
COMMIT
答案1
你的语义被颠倒了。
您发布的规则允许传出DNS 连接到远程 DNS 服务器,而不是传入与本地 DNS 服务器的连接。
要允许连接到本地 DNS 服务器,请反转 INPUT 和 OUTPUT 规则:
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 53 -j ACCEPT
(并且请花几分钟时间修改您的防火墙,使其具有状态。)
答案2
使用-I
而不是-A
。
由于您有一个 DNS 服务器正在监听,因此它将监听端口 53,因此输入规则应该是
-I INPUT -p udp -m udp --dport 53 -j ACCEPT
答案3
您确定 DNS 服务器正在运行吗?即使您打开了端口,服务也需要处于活动状态。您可以通过运行 netstat 命令来验证本地正在监听的内容。此外,您是否尝试过暂时完全关闭防火墙,只是为了看看会出现什么?