WSL 上的 DNS 配置
這篇備忘錄記錄了在 WSL(Windows Subsystem for Linux)上配置 DNS 的方法。
WSL 允許你在 Windows 上運行 Linux 環境,但有時網絡配置(尤其是 DNS)可能會遇到問題。了解如何正確配置 DNS 可以確保你的 WSL 環境能夠正常解析域名。
WSL 中的 DNS 工作原理
默認情況下,WSL 會嘗試從 Windows 主機獲取 DNS 配置。這通常是通過在 WSL 虛擬機中生成 /etc/resolv.conf 文件來實現的。這個文件通常包含一個指向 Windows DNS 服務的 IP 地址,例如 172.X.X.X。
常見問題
- 無法解析域名:這是最常見的問題,表現為無法訪問互聯網或特定服務。
- DNS 解析速度慢:有時默認配置會導致 DNS 查詢變慢。
解決方法
方法 1:禁用 /etc/resolv.conf 的自動生成 (推薦)
WSL 每次啟動時都會自動重新生成 /etc/resolv.conf。禁用此功能可以讓你手動配置 DNS。
-
創建或編輯
wsl.conf文件在 WSL 環境中,創建或編輯
/etc/wsl.conf文件:sudo vim /etc/wsl.conf添加以下內容:
[network]
generateResolvConf = false保存並退出。
-
重啟 WSL
在 PowerShell 或 CMD 中,終止 WSL 以使其應用更改:
wsl --shutdown然後重新啟動你的 WSL 發行版。
-
手動編輯
/etc/resolv.conf現在,你可以手動編輯
/etc/resolv.conf並添加你喜歡的 DNS 服務器。例如,使用 Google DNS:sudo vim /etc/resolv.conf添加以下內容:
nameserver 8.8.8.8
nameserver 8.8.4.4保存並退出。
注意如果你在
wsl.conf中設置了generateResolvConf = false,/etc/resolv.conf將不再被自動覆蓋。
方法 2:在 Windows 中配置 DNS
WSL 從 Windows 繼承 DNS 設置,因此你也可以直接在 Windows 的網絡適配器設置中更改 DNS 服務器。
- 打開 網絡和 Internet 設置 -> 更改適配器選項。
- 右鍵點擊你的網絡連接(例如 Wi-Fi 或乙太網),選擇 屬性。
- 選擇 Internet 協議版本 4 (TCP/IPv4),然後點擊 屬性。
- 選擇 使用下列 DNS 服務器地址,然後輸入你偏好的 DNS 服務器,例如 Google DNS (8.8.8.8 和 8.8.4.4)。
- 點擊 確定 保存更改。
重啟你的 WSL 發行版,它應該會自動獲取新的 DNS 設置。
方法 3:使用 netsh (Windows 命令)
在某些情況下,你可以使用 netsh 命令來重置或配置 Windows 的 DNS 緩存。
ipconfig /flushdns
netsh interface ip delete dns "乙太網" all
netsh interface ip add dns "乙太網" 8.8.8.8 index=1
將 "乙太網" 替換為你的實際網絡適配器名稱。
測試 DNS 解析
你可以使用 ping 或 dig 命令來測試 DNS 解析是否正常工作:
ping google.com
或
sudo apt install dnsutils # 如果沒有安裝 dig
dig google.com
總結
通過禁用 /etc/resolv.conf 的自動生成並手動配置,或者直接在 Windows 中更改 DNS 設置,你可以有效地解決 WSL 中的 DNS 問題。選擇適合你的方法,以確保 WSL 環境的網絡連接穩定可靠。