简介

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 子系统
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐