跳至主要內容

標籤「DNS」的 1 篇文章

查看所有標籤

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。

  1. 創建或編輯 wsl.conf 文件

    在 WSL 環境中,創建或編輯 /etc/wsl.conf 文件:

    sudo vim /etc/wsl.conf

    添加以下內容:

    [network]
    generateResolvConf = false

    保存並退出。

  2. 重啟 WSL

    在 PowerShell 或 CMD 中,終止 WSL 以使其應用更改:

    wsl --shutdown

    然後重新啟動你的 WSL 發行版。

  3. 手動編輯 /etc/resolv.conf

    現在,你可以手動編輯 /etc/resolv.conf 並添加你喜歡的 DNS 服務器。例如,使用 Google DNS:

    sudo vim /etc/resolv.conf

    添加以下內容:

    nameserver 8.8.8.8
    nameserver 8.8.4.4

    保存並退出。

    :::warning 注意 如果你在 wsl.conf 中設置了 generateResolvConf = false,/etc/resolv.conf 將不再被自動覆蓋。 :::

方法 2:在 Windows 中配置 DNS​

WSL 從 Windows 繼承 DNS 設置,因此你也可以直接在 Windows 的網絡適配器設置中更改 DNS 服務器。

  1. 打開 網絡和 Internet 設置 -> 更改適配器選項。
  2. 右鍵點擊你的網絡連接(例如 Wi-Fi 或乙太網),選擇 屬性。
  3. 選擇 Internet 協議版本 4 (TCP/IPv4),然後點擊 屬性。
  4. 選擇 使用下列 DNS 服務器地址,然後輸入你偏好的 DNS 服務器,例如 Google DNS (8.8.8.8 和 8.8.4.4)。
  5. 點擊 確定 保存更改。

重啟你的 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 環境的網絡連接穩定可靠。