简介

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

GitHub 加速计划 / ws / WSL
17.08 K
797
下载
Issues found on WSL
最近提交(Master分支:19 天前 )
86fa5afa 1 个月前
e899d0b7 1 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐