我正在运行一个网络爬虫,我从我的数据中心收到了一些关于指向私有IP的连接的报告(比如10.0.0.1)。我已经实现了对我的爬虫代码的环回/私有ip检查,并且我意识到许多域决定遵循IPv6地址。
我正在使用我自己的绑定DNS缓存,而且当我试图访问其他计算机/网络上的这些域时,我可以毫无问题地访问它们,并且它们的所有DNS设置看起来都很好。
如上文所示,将这些域解析为私有/回送IPv6地址的原因是什么?我能做些什么来检查其他与这个问题有关的事情呢?
可能是因为我的绑定DNS缓存吗?这可能是因为我的数据中心的路由器配置错误吗?
谢谢你提前..。
解决方案:@kasperd在这个问题上帮了我很多忙,他发现这是因为我的代码实现错误。
发布于 2015-12-29 12:45:32
你在问题中做了一些错误的假设。
大多数IPv6地址空间都是保留的,包括您提到的两个地址所属的6000::/3范围。
如果任何保留地址都出现在AAAA记录中,则表示配置无效。这可能会导致连接问题,尽管正确实现的客户端将退回到使用该域的其他地址之一。
在AAAA记录中出现无效地址的第一个显而易见的原因是,首先配置AAAA记录的人犯了错误。如果你提到一个域名,我们可以告诉你是否是这样。
还可以通过错误配置缓存DNS服务器来生成这种无效的AAAA记录。我认为Bind有足够的灵活性来提出这些问题。
配置错误的路由器本身不足以产生这样的问题。但是许多路由器都有与路由无关的附加功能,所以理论上,路由器可能会有一些功能,如果使用不当,就会产生这样的无效记录。
如果仔细查看无效的IPv6地址,就会发现每个八进制都在可打印的ASCII字符(20 - 7e)的范围内。这可能会提示无效地址的来源。
聊天调试摘要。这个问题是由于爬虫代码中的一个bug造成的:
ip = ipaddress.ip_address(hostname)该行将解释任何恰好只有16个字符的主机名,就好像它是一个IPv6地址一样。没有对主机名执行DNS解析。
https://serverfault.com/questions/745744
复制相似问题