Bev*_*van 37 dns ubuntu windows-10 windows-subsystem-for-linux
据我所知,更改 WSL2 在 Windows 10 上使用的 DNS 服务器的官方流程如下所述。(WSL2 是适用于 Linux 的 Windows 子系统的新版本,它在 Windows 10 上的轻量级 VM 中运行实际的 Linux 内核。)
但是,这个过程对我不起作用 - 我最终得到的系统只是超时并且无法解析任何地址。
我究竟做错了什么?
这是我到目前为止拼凑的过程:
1.关闭生成 /etc/resolv.conf
使用您的 Linux 提示符(我使用的是 Ubuntu),使用以下内容修改(或创建)/etc/wsl.conf
[network]
generateResolvConf = false
Run Code Online (Sandbox Code Playgroud)
(显然当前版本中存在一个错误,这些行上的任何尾随空格都会使事情出错。)
2.重启WSL2虚拟机
退出所有 Linux 提示并运行以下 Powershell 命令
wsl --shutdown
Run Code Online (Sandbox Code Playgroud)
3.创建自定义 /etc/resolv.conf
打开一个新的 Linux 提示符,然后 cd 到 /etc
如果resolv.conf
软链接到另一个文件,请删除链接
rm resolv.conf
Run Code Online (Sandbox Code Playgroud)
resolv.conf
使用以下内容创建一个新的
nameserver 1.1.1.1
Run Code Online (Sandbox Code Playgroud)
4.重启WSL2虚拟机
与第 2 步相同
5. 启动新的 Linux 提示符。
利润!
2020 年 3 月 18 日更新
我的/etc/hosts
文件包含这个:
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateHosts = false
127.0.0.1 localhost
127.0.1.1 [redacted] bearps-desktop
10.168.244.140 host.docker.internal
10.168.244.140 gateway.docker.internal
127.0.0.1 kubernetes.docker.internal
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)
该文件/etc/switch.conf
不存在。
该工具resolvectl
不在我的路径上;它不存在于/usr/bin/resolvectl
。
同样systemd-resolve
不在我的路上;它不存在于/usr/bin/systemd-resolve
。
Bev*_*van 16
我上面记录的过程是正确的——这就是你在 WSL2 下更改 DNS 设置的方式。
我的错误是使用众所周知的 CloudFlare (1.1.1.1) 和 Google (8.8.8.8 & 8.8.4.4) 公共 DNS 服务器进行测试。事实证明,我的本地网络阻止我使用公共 DNS。
当我使用正确的内部 DNS 服务器 IP 地址测试上述过程时,一切正常。
在此处添加其他答案,您还想设置resolv.conf
不可变。
sudo chattr +i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
就我而言,即使使用wsl.conf
.
出于这个原因,我创建了这个小程序,可以用一个 shell 来自动执行所有操作:
https://github.com/epomatti/wsl2-dns-fix-config
归档时间: |
|
查看次数: |
37449 次 |
最近记录: |