WSL 上的名称解析暂时失败

m_b*_*ash 10 networking resolv.conf windows-subsystem-for-linux

在 WSL 上运行 Ubuntu 并尝试推送到 github 并使用 pip 下载新的 python 模块,我收到此错误。

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f9d654fe0b8>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /simple/tensorflow/
Run Code Online (Sandbox Code Playgroud)

我查看了 resolv.conf 文件,可能它已损坏,因为它只给出了几行@@@。任何人有任何想法如何解决这个问题?

当我跑 l

ls -al /etc/resolv.conf
-rw-r--r-- 1 root root 261 Nov 28 12:54 /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

更新:

我设法解决了这个问题。需要编辑文件并添加如下一行:

nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

mat*_*epa 58

  1. 在 WSL2 内,创建或附加文件:/etc/wsl.conf

  2. 将以下行放入文件中,以确保您的 DNS 更改不会被破坏。(这将替换 wsl.conf 中可能存在的所有内容。您也可以在此处使用编辑器。)

    sudo tee /etc/wsl.conf << EOF
    [network]
    generateResolvConf = false
    EOF
    
    Run Code Online (Sandbox Code Playgroud)
  3. cmd 在窗口(!!),运行wsl --shutdown

  4. 启动 WSL2

  5. 在 WSL2 中运行以下命令(行search是可选的)

    sudo rm -rf /etc/resolv.conf
    sudo tee /etc/resolv.conf << EOF
    search yourbase.domain.local
    nameserver 8.8.8.8
    nameserver 1.1.1.1
    EOF
    
    Run Code Online (Sandbox Code Playgroud)

  • 什么是 *yourbase.domain.local*?如何获得这些详细信息?而且,只完成了 3 个步骤后,它就对我有用了!我们在第 2 步中做什么?您能添加更多细节吗? (4认同)

小智 12

我也有同样的问题。它似乎也与 VPN 有关。我发现,只有在系统重新启动后启动 WSL-Ubuntu 之前首次连接 VPN 时,DNS 查找才会失败。首先启动 WSL-Ubuntu,然后连接 VPN 似乎可以正常工作。


小智 6

对我来说这是一个简单的修复。来自 powershell:

wsl --shutdown
Run Code Online (Sandbox Code Playgroud)

然后重启wsl就成功了。是的,我知道这个解决方案太简单了,如果您试图避免重置为 WSL,可能对您不利。但如果你寻找简单的东西,也许值得尝试


小智 3

我有同样的错误。Ping IP 地址有效,但没有 DNS 解析。WSL 之外一切都很好。对我来说,这个问题是由 OpenVPN 引起的,当我断开与工作场所的 VPN 的连接时,错误就消失了。