WSL安装
# 以管理员身份运行PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
reboot
wsl --set-default-version 2
wsl --update
wsl --install Ubuntu-24.04
Bridged Network
- hyper-v 创建一个名为vSwitch: 外部网络,勾选允许管理操作系统共享此设备器;
- 编辑[当前Windows用户]/.wslconfig;wsl –shutdown重启wsl
[wsl2]
networkingMode=bridged
vmSwitch=vSwitch
dhcp=false
firewall=false
- 进入wsl,创建静态IP配置文件
# vim /usr/lib/systemd/network/99-wsl.network
[Match]
Name=eth0
[Network]
Description=bridge
DHCP=false
Address=192.168.20.10/24
Gateway=192.168.20.1
- 启用 systemd-networkd 配置网络,禁止 DNS 自动生成
# vim /etc/wsl.conf
[boot]
systemd=true # 使用 systemd
[network]
generateResolvConf=false # 禁止 DNS 自动生成
#
rm -rf /etc/resolv.conf
echo "nameserver 114.114.114.114" > /etc/resolv.conf
# 启用 systemd-networkd 配置网络
sudo systemctl enable systemd-networkd
- 重启wsl;wsl –shutdown
WSL 服务对外开放
- 网络模式仅支持NAT,通过portproxy将wsl的服务端口映射到windows的远程端口,即可实现访问
$wsl_ip = wsl hostname -I | ForEach-Object {
$_.Trim().Split()[0]
}
Write-Host "WSL IP: $wsl_ip"
netsh interface portproxy reset
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=12222 connectaddress=$wsl_ip connectport=2222
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=16008 connectaddress=$wsl_ip connectport=6008
netsh interface portproxy show all