
在我在適用於 Linux 的 Windows 子系統中執行的幾乎所有操作中,我都會收到一條通知「如何解析主機名稱」。為什麼每次全新安裝時都會發生這種情況以及如何解決?
答案1
- 檢查是否存在 resolv.conf 符號連結和檔案:
cd /etc
ls -lha
stat resolv.conf
你應該看到一個符號連結指向:
File: resolv.conf -> ../run/resolvconf/resolv.conf
Size: 29 Blocks: 0 IO Block: 4096 symbolic link
../run/resolvconf/resolv.conf 中的原始檔案將在啟動 WSL Ubuntu 時新創建,並具有以下內容:
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:>
# [network]
# generateResolvConf = false
nameserver 172.23.0.1
名稱伺服器位址可能與您的情況不同
- 在根等資料夾中建立一個 wsl.conf 檔案(您可能需要 sudo):
sudo nano /etc/wsl.conf
- 將以下行貼到文件中並退出儲存 (Ctrl+X):
[network]
generateResolvConf = false
- 刪除 resolv.conf 檔案的符號鏈接
cd /etc
sudo rm resolv.conf
- 在 /etc 中建立一個新的 resolv.conf 文件
sudo nano resolv.conf
並將以下內容貼到其中並使用(Ctrl+O 和 Ctrl+X)儲存:
# This file was automatically generated by WSL. To stop automatic generation of this file,
# add the following entry to /etc/wsl.conf:>
# [network]
# generateResolvConf = false
# nameserver 172.23.0.1
nameserver 8.8.8.8
答案2
我不知道為什麼會發生這種情況(請透過解釋改進答案),這是此問題的有效解決方案:
1.執行:
nano /etc/hostname
用大寫字母輸入您的電腦名稱(類似 DESKTOP-SOMETHING)。刪除電腦名稱以外的任何內容。
儲存並退出。
2.然後,執行:
nano /etc/hosts
然後,確保文件的前兩行如下所示:
127.0.0.1 localhost.localdomain localhost
127.0.1.1 DESKTOP-SOMETHING
儲存並退出。
答案3
就我而言,有用的命令是:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
答案4
為了解析 WSL2 中的本機 Windows 網路主機,對我有用的是在 中新增以下內部 DNS 解析項目(名稱伺服器)/etc/resolv.config
:
search <name-of-my-internal-ad-domain.net>
nameserver 10.0.xx.xxx # local WAN DNS server
nameserver 10.0.xx.xxx # local WAN DNS server
nameserver 1.1.1.1
sudo tee /etc/resolv.conf << EOF
search <name-of-my-internal-ad-domain.net>
nameserver 10.0.xx.xxx
nameserver 10.0.xx.xxx
nameserver 1.1.1.1