在Windows 10上配置WSL2桥接网络模式
背景
WSL2默认使用NAT网络模式,这会导致在部署需要监听特定端口(尤其是UDP端口)的服务时遇到困难。本文记录了如何在Windows 10上为WSL2配置桥接网络模式,使其获得独立的IP地址,能够直接接收来自网络的连接请求。
环境
- Windows 10
- WSL2 (Ubuntu)
- 8GB内存
需要用到的工具
- Hyper-V:Windows的虚拟化技术
- WSLAttachSwitch:第三方工具,用于将WSL2连接到Hyper-V虚拟交换机
步骤详解
1. 启用Hyper-V功能
可以通过以下方式启用:
在PowerShell(管理员)中执行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
或通过"控制面板" -> "程序" -> "启用或关闭Windows功能"启用Hyper-V
注意:启用后需要重启计算机
2. 创建Hyper-V虚拟交换机
在PowerShell(管理员)中执行:
# 查看网络适配器
Get-NetAdapter
# 创建虚拟交换机(将"WLAN"替换为你实际使用的网卡名称)
New-VMSwitch -SwitchName "VETH" -NetAdapterName "WLAN" -AllowManagementOS $True
3. 下载并使用WSLAttachSwitch
从GitHub下载WSLAttachSwitch:https://github.com/dantmnf/WSLAttachSwitch/releases
将下载的可执行文件放在一个方便访问的位置
在PowerShell(管理员)中执行:
C:\path\to\WSLAttachSwitch.exe "VETH"
4. 在WSL2中配置新网卡
查看网络接口:
ip a
此时应该能看到新增的eth1接口,但状态是DOWN
启用eth1接口并获取IP地址:
sudo ip link set eth1 up sudo dhclient eth1
再次检查网络接口,确认eth1已获取IP地址:
ip a
此时状态是up,代表已经分配到了局域网的ip
解决IP地址频繁变化问题
使用DHCP自动获取IP地址时,可能会遇到IP地址频繁变化的问题,即使WSL2实例一直运行且网络连接稳定。为解决这个问题,可以为WSL2配置静态IP地址:
1. 清除当前动态IP配置
# 停止DHCP客户端
sudo dhclient -r eth1
# 清空eth1的所有IP地址配置
sudo ip addr flush dev eth1
2. 配置静态IP地址
# 设置静态IP(根据你的网络环境选择合适的IP地址)
sudo ip addr add 192.168.3.210/24 dev eth1
# 删除现有默认路由
sudo ip route del default
# 添加新的默认路由(使用你的网关地址)
sudo ip route add default via 192.168.3.1 dev eth1
3. 验证配置
# 检查IP配置
ip addr show dev eth1
# 测试网络连接
ping 8.8.8.8
评论区