配置WSL2为桥接模式(原来是NAT模式)
配置为桥接模式之后局域网中的设备就可以直接访问WSL,不需要借助电脑的端口转发
首先在命令行(具有管理员权限)中输入
Get-NetAdapter,查看电脑的网卡情况(此时可能看不到WSL的虚拟网卡)
然后使用命令
Set-VMSwitch WSL -NetAdapterName <桥接到的网卡名称>,将其中的尖括号部分替换为需要桥接到的网卡,比如WLANSet-VMSwitch WSL -NetAdapterName WLAN
然后再次使用
Get-NetAdapter,输出如下
可见增加了基于Hyper-V的WSL虚拟网卡
然后使用Windows的
ipconfig查询计算机的网关等信息,同时在设置中查看计算机的DNS等信息,然后使用这些信息配置WSL的网络
使用如下命令配置WSL的网络(WSL中)
sudo ip addr del $(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1) dev eth0
sudo ip addr add <需要设置的IP地址>/24 broadcast <局域网广播地址(一般是网络号.网络号.网络号.255)> dev eth0
sudo ip route add 0.0.0.0/0 via <默认网关> dev eth0然后WSL
ping百度可以ping通
Windows
pingWSL的IP也可以ping通
参考链接
注意这样实际上是整个电脑通过WSL的网卡在上网,使用的就是主机的IP地址
更改WSL为桥接模式之后远程显示的问题
因为更改WSL为桥接模式之后,WSL变为局域网下与Windows平级的设备,所以需要重新配置
.bashrcvim ~/.bashrc
找到这一行
export DISPLAY=<IP地址>:0
将这一行中尖括号的部分修改为计算机在局域网中的IP地址然后即可继续使用WSL桌面(比如
startxfce4)
修改DNS服务器
您可以通过以下步骤在WSL中设置DNS服务器:
启动WSL,进入目录,创建
wsl.conf文件。例如,您可以使用以下命令:cd ~/../../etc
sudo vim wsl.conf
sudo touch wsl.conf将这些行添加到wsl.conf中:
[network]
generateResolvConf=false退出WSL,关闭WSL。您可以使用以下命令:
exit
wsl --shutdown此时,由于有了wsl.conf,run/resolvconf应该不再存在,并且将不再被创建。
删除现有的符号链接文件。例如,您可以使用以下命令:
cd ~/../../etc
sudo rm resolv.conf创建一个新的resolv.conf文件。例如,您可以使用以下命令:
sudo vim resolv.conf
sudo touch resolv.conf将自己的DNS添加到resolv.conf中。例如:
nameserver 8.8.8.8
其中
8.8.8.8是您想要使用的DNS服务器地址。重启WSL。您可以使用以下命令:
exit
wsl --shutdown再次启动WSL