無法解析 WSL 中的主機名

無法解析 WSL 中的主機名

在我在適用於 Linux 的 Windows 子系統中執行的幾乎所有操作中,我都會收到一條通知「如何解析主機名稱」。為什麼每次全新安裝時都會發生這種情況以及如何解決?

答案1

  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

名稱伺服器位址可能與您的情況不同

  1. 在根等資料夾中建立一個 wsl.conf 檔案(您可能需要 sudo):

sudo nano /etc/wsl.conf

  1. 將以下行貼到文件中並退出儲存 (Ctrl+X):
[network]
generateResolvConf = false
  1. 刪除 resolv.conf 檔案的符號鏈接
cd /etc
sudo rm resolv.conf
  1. 在 /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

相關內容