据我所知,在 Windows 10 上更改 WSL2 使用哪个 DNS 服务器的官方过程如下所述。(WSL2 是适用于 Linux 的 Windows 子系统的新版本,它在 Windows 10 上的轻量级 VM 中运行实际的 Linux 内核。)
然而,这个过程对我不起作用——我最终得到的系统只是超时并且无法解析任何地址。
我究竟做错了什么?
到目前为止,这是我拼凑起来的过程:
1.关闭生成/etc/resolv.conf
使用您的 Linux 提示符(我使用的是 Ubuntu),使用以下内容修改(或创建)/etc/wsl.conf
[network]
generateResolvConf = false
(显然在当前版本中有一个错误,这些行上的任何尾随空格都会出错。)
2.重启WSL2虚拟机
退出所有 Linux 提示并运行以下 Powershell 命令
wsl --shutdown
3.创建自定义/etc/resolv.conf
打开一个新的 Linux 提示符并 cd 到/etc
如果resolv.conf
软链接到另一个文件,请删除链接
rm resolv.conf
新建一个resolv.conf
,内容如下
nameserver 1.1.1.1
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
该文件/etc/switch.conf
不存在。
该工具resolvectl
不在我的路径上;它不存在于/usr/bin/resolvectl
。
同样systemd-resolve
不在我的路上;它不存在于/usr/bin/systemd-resolve
。