![bind/named 无法在外部 UDP 上运行](https://linux22.com/image/1396566/bind%2Fnamed%20%E6%97%A0%E6%B3%95%E5%9C%A8%E5%A4%96%E9%83%A8%20UDP%20%E4%B8%8A%E8%BF%90%E8%A1%8C.png)
这个很奇怪。
我很久以前就在 centos5 上设置过它。我记得它以前能用。现在有一段时间不能用了。我刚刚才被告知,所以不知道是什么原因导致它不能用。
到目前为止:它在本地运行良好(udp 和 tcp)(dig @localhost)它通过 tcp 从外部运行良好(dig @YYYY +tcp)但它没有通过 udp 从外部响应(dig @YYYY)
对于此域,我尝试使用外部 Linux 源和在线工具进行 dig。在线工具已验证可与另一个域和 8.8.8.8 作为服务器一起使用。此外,为了排除 ISP 的 UDP 丢失,我在另一个域上使用 @8.8.8.8 测试了 dig,结果成功了。
我不认为防火墙是个问题,因为 tcpdump 说:
[root@localhost etc]# tcpdump -n udp "dst port 53 or src port 53"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
02:26:43.871668 IP X.46044 > 192.168.0.101.domain: 42303+ A? <<MY_DOMAIN>>. (32)
02:26:43.874388 IP 192.168.0.101.domain > XXXX.46044: 42303*- 1/1/1 A YYYY (83)
02:26:48.874140 IP X.46044 > 192.168.0.101.domain: 42303+ A? <<MY_DOMAIN>>. (32)
02:26:48.876168 IP 192.168.0.101.domain > XXXX.46044: 42303*- 1/1/1 A YYYY (83)
02:26:53.876772 IP X.46044 > 192.168.0.101.domain: 42303+ A? <<MY_DOMAIN>>. (32)
02:26:53.878231 IP 192.168.0.101.domain > XXXX.46044: 42303*- 1/1/1 A YYYY (83)
3 packets captured
3 packets received by filter
0 packets dropped by kernel
并且,启用 rndc querylog 会在消息中显示:
Feb 5 02:14:48 localhost named[15570]: starting BIND 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 -u named -t /var/named/chroot
Feb 5 02:14:48 localhost named[15570]: adjusted limit on open files from 1024 to 1048576
Feb 5 02:14:48 localhost named[15570]: found 1 CPU, using 1 worker thread
Feb 5 02:14:48 localhost named[15570]: using up to 4096 sockets
Feb 5 02:14:48 localhost named[15570]: loading configuration from '/etc/named.conf'
Feb 5 02:14:48 localhost named[15570]: using default UDP/IPv4 port range: [1024, 65535]
Feb 5 02:14:48 localhost named[15570]: using default UDP/IPv6 port range: [1024, 65535]
Feb 5 02:14:48 localhost named[15570]: no IPv6 interfaces found
Feb 5 02:14:48 localhost named[15570]: listening on IPv4 interface lo, 127.0.0.1#53
Feb 5 02:14:48 localhost named[15570]: listening on IPv4 interface eth0, 192.168.0.101#53
Feb 5 02:14:48 localhost named[15570]: command channel listening on 127.0.0.1#953
Feb 5 02:14:48 localhost named[15570]: zone <<MY_DOMAIN>>/IN: loaded serial 107
Feb 5 02:14:48 localhost named[15570]: running
Feb 5 02:15:06 localhost named[15570]: isc_log_open 'named.run' failed: permission denied
Feb 5 02:15:06 localhost named[15570]: query logging is now on
Feb 5 02:15:16 localhost named[15570]: client XXXX#43793: query: <<MY_DOMAIN>> IN A +
因此它收到了查询。它似乎也在回答,但据我所知,没有数据包被丢弃。iptables 配置了 OUTPUT ACCEPT,并且没有针对输出链的规则。我也尝试过禁用防火墙,但没有任何效果,所以我再次怀疑它来自 iptables。
那么为什么黑客无法通过 udp 进行攻击呢?
欢迎任何指点。我没有主意了。
物理设置是:INET <-> 路由器 <-> 服务器
如果有重要影响,路由器是 Trendnet TW100-94w1CA。
答案1
这不是 ISP 第一次不喜欢用户运行 DNS 服务器。你确定它没有配置为开放解析器吗?这就是阻止它的理由。
由于您暗示它停止工作而您这边没有任何变化,我怀疑 ISP 方面已经设置了一条新的防火墙规则(不受您控制)来阻止传出的 DNS /响应/。如今的防火墙可以通过深度数据包检查来做到这一点,并让您的出站 /查询/正常工作。
验证这一点的唯一方法是能够看到 DNS 响应数据包通过上游(ADSL?)路由器。
当然,可能还有许多其他根本原因,但目前看来可能性不大。