為什麼我從 dig 收到“包損壞:FORMERR”?

為什麼我從 dig 收到“包損壞: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.事實上,我在挖掘過程中發現了許多問題。這是我本機 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 解析工作正常。

相關內容