wsl 2 设置静态 DNS 服务地址及 Linux 和 Windows 主机网络互相访问设置
来源:https://blog.niekun.net/archives/1801.html
在升级到 wsl 2 后发现一些网络问题和之前的 wsl 不一样了,主要是 DNS 解析和 wsl 和 Windows 网络互访问题,这里介绍如何处理。
DNS 解析
wsl 2 使用的 DNS 解析服务器设置在文件:/etc/resolv.conf
内设置,这是一个 link 文件,真正的文件路径是:/run/resolvconf/resolv.conf
,这个文件是每次 wsl 启动时自动生成的,内容如下:
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.24.144.1
nameserver 后面的就是指定的 DNS 服务器地址。我发现有时候分配的服务器地址是无效的,如:127.0.0.53
,使用 ping 来测试发现提示无法解析地址。需要设置一个固定的 DNS 地址,方法如下:
-
新建文件:
/etc/wsl.conf
,内容如下:[network] generateResolvConf = false
以上配置好就不会自动创建 /run/resolvconf/resolv.conf
文件了。
退出 wsl,关机然后重新启动:
exit
wsl --shutdown
wsl
删除 link 文件:/etc/resolv.conf
:
rm /etc/resolv.conf
然后新建 /etc/resolv.conf
文件,内容如下,可自定义 nameserver 地址:
nameserver 114.114.114.114
再次退出 wsl,关机然后重新启动:
exit
wsl --shutdown
wsl
查看 /etc/resolv.conf
文件是否是之前自定义的地址:
cat /etc/resolv.conf
测试网络服务:
ping niekun.net
参考链接:https://github.com/microsoft/WSL/issues/5256#issuecomment-666545999