这里有一个有点奇怪的问题,希望有人能帮我描述和/或修复。我们使用的是 /24 网络高级最近切换到脑桥。所有名称服务器都已通过注册商更新,它们显示在根名称服务器和所有内容中 - 到目前为止一切顺利,对吧?我可以挖掘根服务器并获取新 IP,whois 很好,所有“是否已插入?”基础工作看起来都很棒。
我在新网络上运行 DNSBBB254旧网络位于AAA254随着变化仍在世界各地传播。AAA254DNS 服务器实际上正在向全世界提供脑桥捕获尚未看到上游更改的落后者,这是正常业务。每个服务器还为其自己的 IP 范围运行反向 DNS。
所以!在记录对旧AAA254服务器我看到一个奇怪的 PTR 区域请求来自BBB254为其自己的反向 IP B 网络!并且,它始终是两个 IP - 我的防火墙 (.4) 和 VPN 服务器 (.6) - 除了这两个之外没有其他的。
2009 年 8 月 4 日 09:56:09.755 客户端 BBB254#37384:查询:4.BBBin-addr.arpa IN PTR +
2009 年 8 月 4 日 10:00:05.380 客户端 BBB254#37385:查询:6.BBBin-addr.arpa IN PTR +
为什么会有这样的查询,要求提供BBB254已经托管,去我的AAA254服务器?!我不应该看到任何来自BBB254到AAA254完全没有,但我仍然收到一些奇怪的 PTR 作业,我无法完全弄清楚。从 B 执行“dig -x”不会导致它转到 A,所以事情没那么简单。我搜索了 B(它是一个 linux/bind9 框)上的每个配置文件,寻找对 A 网络的任何引用,但什么也没找到。
有人知道这是怎么回事吗?我该如何修复它?为什么新服务器 B 会向 A 请求此 PTR,而它知道自己托管该范围?
我曾追随过各种各样的足迹,比如:
挖掘 +norecurse 4.BBBin-addr.arpa PTR @x.arin.net
...然后...
dig +norecurse 4.BBBin-addr.arpa PTR @a.[授权服务器名称]
...一切看起来都正确。欢迎提出任何想法,进一步了解导致此请求循环的原因,我有点不知道下一步该看什么。
答案1
除 IP 地址外,这些日志摘录都是逐字逐句的吗?
如果是这样,那么令人惊讶的是,在 4 分钟的时间间隔内显然没有其他 IP 流量,因为这些查询的源端口仅增加了一个。
我建议您尝试确认确实是 BBB254 发送这些查询(tcpdump
在发送主机上运行)。
如果可以,请尝试找出导致这些问题的进程。如果是named
在新服务器上,请启用更多日志记录以找出原因(rndc trace
和rndc querylog
)。
请注意,如果您一直在重新编号您的网络并重新配置您的机器而不关闭它们,那么任何长期运行的守护进程可能仍然有旧的/etc/resolv.conf
缓存。
进入编程领域,这是因为只有在任何程序第一次调用或时,解析器库中的函数/etc/resolv.conf
才会读取。解析器库不会动态检测配置文件的更改。res_init()
gethostbyname()
gethostbyaddr()
答案2
resolv.confB.B.B.254
是否可能配置为将请求发送到旧 DNS 服务器?(不应该这样,因为递归和权威不应该混合)。此外,B.B.B.254
是否可能配置为具有 NAT 的 RFC1918 范围的默认网关?在这种情况下,在后面该机器的递归解析配置可能存在错误。
此外,拥有实际的 IP 范围可能会有所帮助,这样人们就可以实际检查您的授权。
答案3
我很高兴(欣喜若狂!)报告它已经解决了——问题实际上是 syslogdbbb254! Alnitak 给我指明了正确的方向,在 bbb254 机器上运行 tcpdump 捕获几次并将命名放入调试级别 5 后,我偶然发现 DNS 查询正在进行,但并非来自命名进程。
我不是 syslogd 方面的专家,但这与 syslogd 以远程日志模式运行并接受相关设备(.4、.6)的日志有关。尽管它在新网络上正常工作,但它的小守护进程大脑中仍然缓存了旧网络上的信息(虽然我不太明白是怎么回事),并且正是这个进程向旧 DNS 服务器发出了新的反向 IP 范围的 PTR 请求。一个简单的“/etc/init.d/syslogd restart”清除了错误的请求,现在一切都好了。
最终的事情总是简单的事情,只需要 8 个小时的调试就可以实现。:)
答案4
瞎猜:你确定已经刷新了所有 DNS 缓存吗?我见过类似这样的奇怪现象,因为某些缓存中存在过时的 DNS 视图,但由于某种原因,这些视图没有被刷新……