ping 顯示“名稱或服務未知”
我在樹莓派上執行 Arch Linux。
突然:
- 我無法 ping 到某個網站。
- 我無法從瀏覽器訪問網站。
我還有兩台電腦(都執行 Arch Linux)連接到 Internet,我可以在其中 ping 和使用 Internet。此外,
/etc/resolv.conf
在其他電腦上是相同的:nameserver 10.230.252.252 nameserver 203.147.88.2 nameserver 8.8.8.8 search domain.name
我可以使用 VNC。我也可以 ping 到 8.8.8.8。當嘗試在 Chromium 上訪問 DuckDuckGo 時,我得到:
This site can’t be reached duckduckgo.com’s server IP address could not be found. DNS_PROBE_FINISHED_NXDOMAIN
我有一個有效的 Internet 連接。怎麼了?
雖然我的另一台 x86_64 PC 都執行 Arch Linux 從來沒有遇到過問題,但到目前為止,在執行 NetworkManager 時,這經常發生在 Arch Linux ARM 上。
問題就好像你連上了wifi,但是你ping不通,不能上網,但是你可以訪問本地網路上的所有電腦,甚至可以使用遠端桌面共享軟體。
當您的 ping 或瀏覽器嘗試解析主機時,很有可能出現問題。我可以想到3個解決方案:
解決方案 1
我相信這是數千個執行 Archlinux ARM 並使用 NetworkManger 的 Raspberry Pi 系統的問題。
在我的情況下, /etc/resolv.conf 是一個損壞的符號連結到
../run/systemd/resolve/stub-resolv.conf
.NetworkManager 無法填充符號連結,並且 /etc/resolv.conf 為空。我們必須:
- 刪除損壞的符號連結:
# rm /etc/resolv.conf
- 創建一個
/etc/NetworkManager/conf.d/dns.conf
包含以下內容的文件:[main] dns=none main.systemd-resolved=false
- 重啟網路管理器:
sudo systemctl restart NetworkManager
如果不遵循解決方案 2,這應該可以解決問題。
解決方案 2
如果上述方法沒有為您解決問題,您可以通過以下方式臨時填充 /etc/resolv.conf:
sudo systemctl restart systemd-resolved && sudo systemctl stop systemd-resolved
之所以可行,是因為可能有些東西弄亂了
/etc/resolv.conf
文件。上面的命令應該會覆蓋內容,但同樣,您應該查看導致問題的原因。解決方案 3
如果你不能得到你的
/etc/resolv.conf
支持,只需創建一個新的/etc/resolv.conf
(如果存在空的舊連結或符號連結,則刪除)並粘貼程式碼:search domain.name nameserver 8.8.8.8 nameserver 1.1.1.1 nameserver 1.0.0.1
請注意,在第一行中,您還可以使用路由器的 IP 地址,例如(
nameserver 192.168.43.1
在我的情況下)這將使其他系統可以在同一網路上 ping 通。像這樣生成解析不是一個好主意,但是我在使用 NetworkManager 的自動生成解析時遇到了麻煩。即使在我的 PC 上,Systemd-resolvd 也會生成錯誤的。有點奇怪,這裡我用的是google的primary dns和cloudflare的primary dns,你可以用8.8.8.8搭配8.8.4.4或者1.1.1.1搭配1.0.0.1。
儘管該步驟有效,但您可能希望在 NetworkManager 重新啟動時停止覆蓋文件:
將此條目添加到
/etc/NetworkManager/NetworkManager.conf
[main] dns=none systemd-resolved=false
他們為我在 Raspberry Pi 3 模型 B 上的安裝工作。希望這對你也有用。