为什么我从 dig 得到“Got bad packet : FORMERR”?

为什么我从 dig 得到“Got bad packet : FORMERR”?

我第一次运行 DNS 查询(例如)时dig google.com,得到了一个很好的答案。但是,后续查询返回

;; Got bad packet: FORMERR
55 bytes
25 d8 81 a0 00 01 00 01 00 00 00 01 06 67 6f 6f          %............goo
67 6c 65 03 63 6f 6d 00 00 01 00 01 c0 0c 00 01          gle.com.........
00 01 00 00 01 16 00 04 d8 3a d1 8e 00 00 00 00          .........:......
00 00 00 00 00 00 00             

                    .......

是什么导致了此错误?此问题似乎只出现在我的电脑上。在同一网络上的其他计算机上运行相同的查询不会出现此错误。

答案1

我看到 DNS 查询解析时断时续地成功,但多次失败。出现以下错误之一。

;; Got bad packet: bad label type
78 bytes

;; Got bad packet: FORMERR
94 bytes

;; Got bad packet: bad compression pointer
78 bytes

就我而言,是我的解析器有问题resolv.conf。实际上,我发现我的 dig 存在许多问题。这是我本地 wifi 路由器上配置错误的解析器。尝试将其关闭并重新打开。就我而言,他们已将其硬编码为使用 ISP 网络名称服务器,但这些服务器也无法正确解析 IP 地址。

我遇到了一系列问题。首先,我的华为 wifi / LTE 路由器resolv.conf通过设置为默认路由器DHCP

我需要通过DHCP网络管理器禁用此功能设置。nameserver 192.168.8.1并强制它使用来自 google/Cloudflare 的开放 DNS 解析器。

cat /etc/resolv.conf
# Generated by NetworkManager
search one.one.one.one google-public-dns-a.google.com
nameserver 192.168.8.1
nameserver 1.1.1.1
nameserver 1.0.0.1
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 8.8.8.8
nameserver 8.8.4.4

我的第二个问题是我添加了一个搜索域search one.one.one.one google-public-dns-a.google.com。我很久没有在这台笔记本电脑上使用过这个 wifi 连接了,而且我在那里设置的设置是我在做实验时设置的。这加剧了我所看到的问题。bad label type

我需要在网络管理器中更改我的网络。在 IPv4 设置 -> 方法 -> 仅自动 (DHCP) 地址下。这一定不是Automatic (DHCP)。因为这包括您的 DHCP 服务器设置的任何内容。包括本地网络 DNS 服务器,来自路由器 IP 192.168.8.1

我安装了互联网上最好的两个开放 DNS 解析器谷歌公共 DNScloudflares 公共 DNS

保存您的设置并重新连接到您的网络。

我的resolv.conf后来看起来就是这样。

cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 1.1.1.1
nameserver 1.0.0.1
nameserver 8.8.8.8
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 8.8.4.4

此后,我的 DNS 解析便可正常工作。

相关内容