我有 3 个节点,它们具有从 bash 脚本加载的几乎相同的 iptables 规则,但是一个特定节点阻止了端口 53 上的流量,尽管列出了它正在接受该流量:
$ iptables --list -v
链输入(策略丢弃 8886 个数据包,657K 字节) pkts 字节数 目标 协议 选择加入 退出 源 目标 0 0 接受全部 -- lo 任何地点任何地点 2 122 接受 icmp -- 任何 任何 任何地方 icmp 回显请求 20738 5600K 接受全部 -- 任何任何任何地方任何位置状态相关,已建立 0 0 接受 tcp -- eth1 任何地方 node1.com 多端口 dports http,smtp 0 0 接受 udp -- eth1 任何地方 ns.node1.com udp dpt:domain 0 0 接受 tcp -- eth1 任何地方 ns.node1.com tcp dpt:domain 0 0 接受全部 -- eth0 任何 node2.backend 任何位置 21 1260 接受全部 -- eth0 任何 node3.backend 任何位置 0 0 接受全部 -- eth0 任何 node4.backend 任何位置 链 FORWARD(策略 DROP 0 个数据包,0 字节) pkts 字节数 目标 协议 选择加入 退出 源 目标 链输出(策略接受15804个数据包,26M字节) pkts 字节数 目标 协议 选择加入 退出 源 目标
nmap -sV -p 53 ns.node1.com// 来自远程服务器
于 2011-02-24 11:44 EST 启动 Nmap 4.11(http://www.insecure.org/nmap/) ns.node1.com 上有趣的端口(1.2.3.4): 港口国服务版本 53/tcp 过滤域 Nmap 已完成:扫描 1 个 IP 地址(1 个主机启动),耗时 0.336 秒
有任何想法吗?
谢谢
答案1
我注意到实际上没有数据包到达您的iptables
DNS ACCEPT 规则。我认为您的规则可能iptables
指定了不一致的条件组合,这些条件组合永远不会与传入的 DNS 查询匹配。
在您的案例中,您的 DNS ACCEPT 规则指定传入接口必须是eth1
,并且目标 IP 地址必须解析为ns.node1.com
。您应该检查传入的 DNS 查询是否ns.node1.com
可以通过eth1
网络接口到达。
另一种可能性是,您的测试客户端和服务器之间的某个地方有另一个数据包过滤器,它阻止了 DNS 数据包。
答案2
可能是 tcp 端口被另一个防火墙阻止了。使用 tcpdump/Wireshark 来调试问题。
从我:
nmap -sV -p 53 x.x.x.x
Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-25 02:32 YEKT
Interesting ports on x.x.x.x:
PORT STATE SERVICE VERSION
53/tcp open domain ISC BIND Not available