WSL2 网络桥接
WSL2 是 Windows Subsystem for Linux 2 的缩写,在 Windows 系统上运行 Linux 发行版。在 WSL2 中,WSL2 能够直接访问本地网络,但是无法被本地网络直接访问。这就需要通过网络桥接来实现 WSL2 与本地网络的互通。
实现方法
- 在 Windows 中启用 Hyper-V
在 Windows 中开启 Hyper-V 技术,用于创建虚拟机和网络。在 PowerShell 中运行以下命令来启用 Hyper-V。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
- 在 WSL2 中安装 DHCP 客户端
在 WSL2 中安装
dhclient
包来作为 DHCP 客户端。sudo apt update sudo apt install -y isc-dhcp-client
- 创建虚拟交换机
在 PowerShell 中运行以下命令创建一个名称为
vEthernet
的虚拟机交换机,并将其端口绑定到 WSL2 虚拟机上。New-VMSwitch -Name "vEthernet" -AllowManagementOS $false -NetAdapterName "vEthernet (WSL)" -Verbose
- 设置网络桥接
在 PowerShell 中运行以下命令,将虚拟交换机与本地网络桥接起来。
Remove-NetIPAddress -IPAddress 192.168.93.1 -Confirm:$false New-NetIPAddress -IPAddress 192.168.93.1 -PrefixLength 24 -InterfaceAlias "vEthernet" New-NetNat -Name "Nat-WSL" -InternalIPInterfaceAddressPrefix "192.168.93.0/24"
其中
192.168.93.1
是虚拟交换机的 IP 地址,也是 WSL2 访问本地网络的出口。 -
将浏览器代理位置到 WSL2
如果您在 WSL2 中使用代理服务器,则可以使用以下命令将浏览器代理地址指向 WSL2。
export http_proxy=http://192.168.93.1:8123/ export https_proxy=http://192.168.93.1:8123/
其中
192.168.93.1
是虚拟交换机的 IP 地址。
测试方法
接下来,我们来测试 WSL2 是否已经接入了本地网络。
- 在 WSL2 中通过 DHCP 获取 IP 地址
在 WSL2 中执行以下命令,可以看到 WSL2 成功获取到本地网络的 IP 地址。
sudo dhclient ip addr
- 在 WSL2 中通过 ping 测试网络连接
在 WSL2 中执行以下命令,可以测试与本地网络的连接是否正常。
ping -c 3 baidu.com
- 在 WSL2 中启动代理服务器
在 WSL2 中执行以下命令,启动代理服务器。
polipo -c /etc/polipo/config
- 在浏览器中测试代理服务器
在浏览器中设置代理地址为
http://localhost:8123
,然后访问任意网站,可以看到 WSL2 成功接入了本地网络。
结论
通过以上步骤,我们可以让 WSL2 顺利地接入本地网络,实现与本地网络的互通。同时,在 WSL2 中启动代理服务器,可以让浏览器通过 WSL2 访问互联网,该方法适用于需要通过代理服务器访问互联网的用户。