WSL环境配置

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

  1. hyper-v 创建一个名为vSwitch: 外部网络,勾选允许管理操作系统共享此设备器;
  2. 编辑[当前Windows用户]/.wslconfig;wsl –shutdown重启wsl
    [wsl2]
    networkingMode=bridged
    vmSwitch=vSwitch
    dhcp=false
    firewall=false
    
  3. 进入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
    
  4. 启用 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
    
  5. 重启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