WSL 上的名称解析暂时失败

WSL 上的名称解析暂时失败

在 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/

我查看了 resolv.conf 文件,它可能已损坏,因为它只给出了几行 @@@。有人知道如何修复这个问题吗?

当我跑步的时候

ls -al /etc/resolv.conf
-rw-r--r-- 1 root root 261 Nov 28 12:54 /etc/resolv.conf

更新:

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

nameserver 8.8.8.8

答案1

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

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

    sudo tee /etc/wsl.conf << EOF
    [network]
    generateResolvConf = false
    EOF
    
  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
    

答案2

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

答案3

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

wsl --shutdown

然后重启wsl,它就成功了。是的,我知道这个解决方案太简单了,如果你想避免重置到 WSL,它可能对你不太好。但如果你想找一些简单的东西,也许值得一试

答案4

当我运行的时候ls -lah /etc/resolv.conf,我看到它是一个符号链接../run/resolvconf/resolv.conf

但后来我注意到它../run/resolvconf/resolv.conf不存在,事实上,虽然/run/目录存在,但实际上/run/resolvconf/却不存在。

因此我创建了该目录并创建了一个空文件sudo vim /run/resolvconf/resolv.conf

然后我编辑该文件以包含:

nameserver 1.1.1.1

保存该文件后,ping google.com成功了!

(看起来该文件是必需的。我不知道我的文件是怎么被删除的。)

https://github.com/microsoft/WSL/issues/6601对我很有帮助。

相关内容