为什么我的计算机尝试将 ICMP 类型 3 发送到 OpenDNS?

为什么我的计算机尝试将 ICMP 类型 3 发送到 OpenDNS?

在我的防火墙日志中,我看到很多这样的条目。

IN= OUT=eth0 SRC=192.168.1.105 DST=208.67.220.220 LEN=148 TOS=0x00 PREC=0xC0 TTL=64 ID=55705 PROTO=ICMP 类型=3 代码=3 [SRC=208.67.220.220 DST=192.168.1.105 LEN=120 TOS=0x00 PREC=0x00 TTL=54 ID=0 DF PROTO=UDP SPT=53 DPT=25566 LEN=100 ]

看起来位于 208.67.220.220 的 OpenDNS 服务器通过 UDP 从端口 53 向我的计算机发送了某种消息,并且我的计算机尝试使用 ICMP 代码类型 3 进行响应(我的防火墙会阻止它,因为我已将其配置为阻止 ICMP)除外,但也有少数例外。)

来自 OpenDNS 服务器的 ICMP 类型 3 是有意义的,因为我的计算机会尝试查询他们的服务器,但我不明白为什么我的计算机会尝试将此消息发送到他们的服务器,除非他们的服务器试图查询我的服务器。自己的计算机用于某个目的地,我不明白为什么他们的服务器会这样做。

来自他们服务器的 UDP 数据包是某种查询吗?

这里发生了什么?

答案1

您是否在 IP 192.168.1.105 的计算机上运行 Chrome? Chrome 似乎尝试使用 ICMP 到 OpenDNS 进行预取。

http://productforums.google.com/forum/#!topic/chrome/spzCFoXR7m4

请参阅帮助参考。看来关闭 DNS 预取是可能的。

您可以按照此处的说明将其关闭:

http://www.google.com/support/forum/p/Chrome/thread?tid=7e45d89c67905b20&hl=en


编辑#1:后续问题

@ProxyNinja 在下面的评论中提出了以下问题:

但 ICMP 类型 3 听起来像是对查询的响应。它如何用于预取?

我对此的回答是:

我的猜测是,像这样执行 ping 操作会强制本地解析器执行 DNS 查询,从而使其提前得到解析。 ping 并不重要,他们所追求的是它引起的 DNS 解析。

答案2

这是运行 dnsmasq 的系统的预期行为

ICMP 类型 3 是“目标无法到达”。这意味着您的上游 DNS 服务器尝试向您发送响应,并且系统上用于接收该端口的端口在响应到来之前已关闭。

您在另一个答案的评论中提到您正在运行 dnsmasq。默认情况下,当 dnsmasq 定义了多个上游服务器时,每隔如此多的请求,它将向上游发送其查询全部其中。这有助于它找出哪些服务器当前正在响应以及哪些服务器速度最快。一般来说,在得到最快的响应后,它会关闭端口。如果来自其他 DNS 服务器的任何进一步响应,则不再有应用程序侦听它们,因此 dnsmasq 所在的系统会回复“目标无法到达”ICMP 消息。除了日志中显示的一点点额外流量之外,它实际上不应该引起任何问题。

欲了解更多信息,请参阅评论Debian 错误 #580064,有人报告了这个问题,dnsmasq 的主要开发人员回复说这是预期的行为。

相关内容