简介
wsl2在使用时因为网络问题导致使用及其不方便,而桥接模式恰巧能解决这些痛点,具体实施过程如下
一、 禁用自动生成dns解析
创建 /etc/wsl.conf,且内容如下:
[network]
generateResolvConf = false
然后删掉 /etc/resolv.conf(因为自动生成的为一个软连接),并重新建一个 /etc/resolv.conf 文本文件,并将其 DNS 服务器地址指定为自己想用的,如下:
# generateResolvConf = false
nameserver 223.5.5.5
这一步只需要执行一次,之后并不需要每次都配置
二、设置ip和路由
新建一个ip_set.sh并输入如下内容:
ip addr add 192.168.2.13/24 broadcast 192.168.2.255 dev eth0 #设置ip到eth0
ip route delete default #删除默认路由
ip route add default via 192.168.2.1 dev eth0 #默认路由到网关
新建一个dns_set.sh并输入如下内容
echo "nameserver 223.5.5.5" > /etc/resolv.conf
三、每次开机时的操作
3.1 手动设置
在网络共享中心中删除上一次启动的网桥,否则设置失败
设置wsl桥接
Set-VMSwitch WSL -NetAdapterName WLAN
桥接完成在wsl中设置ip_set.sh和dsn_set即可完成子系统的网络联通
开机状态下删除虚拟交换机命令
remove-vmswitch -name “WSL”
3.2 PowerShell 脚本自动执行
创建一个powershell脚本 set_wsl2_Internet_Bridge.ps1
#先设置子系统的ip和dns 同时也为了让系统创建wsl网卡
echo "设置wsl ip 和dns"
wsl -d Ubuntu-18.04 -u root /home/ydc256/ip_set.sh
wsl -d Ubuntu-18.04 -u root /home/ydc256/dns_set.sh
echo "设置wsl 桥接到以太网上"
Set-VMSwitch WSL -NetAdapterName "以太网"
echo "设置桥接后的以太网dns"
netsh interface ip add dnsservers name="vEthernet (WSL) 2" address=114.114.114.114
netsh interface ip add dnsservers name="vEthernet (WSL) 2" address=8.8.8.8
echo "设置完成"
这样需要使用时执行powershell脚本即可,完成wsl2网络桥接的设置
设置完成后控制面板上的情况
四、桥接后效果
ping 外网和宿主机
宿主机ping 子系统