Lig*_*k05 23 windows internet dns windows-subsystem-for-linux
我目前使用的是 Windows 11 的 Insider 版本。(22458)
然而,我在其他版本上也遇到过几次这个问题。(并且 wsl 之前工作过)
当我启动 wsl 时,我无法执行 DNS 请求。(直接Ping IP地址即可。)
我跟踪这个问题到文件:/etc/resolv.conf
它包括 DNS 服务器地址。
默认为:172.22.192.1
然而,这个不起作用。
如果我将其更改为 1.1.1.1(Cloud Flare DNS),它会再次工作。
但是,每次重新启动 wsl 后,它都会将其更改回默认值。
有一个名为 wsl.conf 的文件,我可以在其中禁用生成此文件,但如果总是在每次重新启动后完全删除该文件。
那么我该如何解决这个问题呢?
我的第一个想法是完全重置 wsl,但既没有重置应用程序,也没有通过功能重新安装 WSL 修复它。
有人知道该怎么做吗?
Eva*_*tti 31
正如大多数答案所述,创建以下配置文件,然后重新启动 WSL 应该就足够了:
/etc/wsl.conf
[network]
generateResolvConf = false
Run Code Online (Sandbox Code Playgroud)
/etc/resolv.conf
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)
然而,由于某种原因,我resolv.conf
每次启动时都会重新创建。
所以我必须使其不可变,如下所示:
[network]
generateResolvConf = false
Run Code Online (Sandbox Code Playgroud)
很多时候这个问题困扰着我,我最终制作了这个简单的帮助代码:
https://github.com/epomatti/wsl2-dns-fix-config
小智 9
这是 WSL 的问题,而不是 Ubuntu 或 Windows 的问题。有很多解决方案,我发现最好的一个https://gist.github.com/coltenkrauter/608cfe02319ce60facd76373249b8ca6
它还包括 VPN 信息,但这些步骤在没有 VPN 的情况下也适用。
在 Ubuntu 终端中运行这些命令。
Run Code Online (Sandbox Code Playgroud)cd ~/../../etc # Go to etc folder in WSL. echo "[network]" | sudo tee wsl.conf # Create wsl.conf file and add the first line. echo "generateResolvConf = false" | sudo tee -a wsl.conf # Append wsl.conf the next line. wsl --terminate Debian # Terminate WSL in Windows cmd, in case the OS is Ubuntu not Debian. cd ~/../../etc # Go to etc folder in WSL. sudo rm -Rf resolv.conf # Delete the resolv.conf file.
在 Windows cmd、PowerShell 或已连接 VPN 的终端中,执行以下操作:
Get-NetIPInterface
或ipconfig /all
获取主要和辅助 DNS。将步骤 2 中获得的 DNS 主 DNS 和辅助 DNS 替换为下一步中的 XXXX 中的数字
echo "nameserver X.X.X.X" | sudo tee resolv.conf
(创建 resolv.conf 并附加该行。)
echo "nameserver X.X.X.X" | sudo tee -a resolv.conf
(在 resolv.conf 中添加该行)
wsl --terminate Debian
(如果是 Ubuntu 而不是 Debian,请在 Windows cmd 中终止 WSL)。
sudo chattr +i resolv.conf
最后在 Windows cmd、PowerShell 或终端中:
Run Code Online (Sandbox Code Playgroud)Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000
图片来源:@MartinCaccia、@yukosgiti、@machuu 和 @AlbesK:
https://github.com/microsoft/WSL/issues/4277
https://github.com/microsoft/WSL/issues/4246
WSL 从 Windows 的 DHCP 服务器获取其 IP 地址(及其 DNS 服务器、网络掩码和其他内容)。在 Windows 上修复它,或修复 172.22.192.1 上的 DNS 服务器。
这是 Windows 问题,不是 Ubuntu 问题。
不,我不知道 Windows 如何执行 DHCP。
归档时间: |
|
查看次数: |
97439 次 |
最近记录: |