0%

WSL2 局域网访问以及固定 IP

WSL 局域网访问以及固定 IP。

1. WSL2 局域网访问以及固定 IP

1. 固定 IP

1、(不知道有没有用)首先登陆虚拟机(Ubuntu-20.04示例)创建 /etc/wsl.conf ,写入以下内容,默认为true,true 将 WSL 设置为生成 /etc/resolv.conf

1
2
[network]
generateResolvConf=false

2、使用管理员模式执行powershell脚本更改 IP (尝试过开机自启但是没找到好的方法)

1
2
3
4
5
wsl -d Ubuntu-20.04 -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
wsl -d Ubuntu-20.04 -u root ip addr add 192.168.50.2/24 broadcast 192.168.50.255 dev eth0
wsl -d Ubuntu-20.04 -u root ip route add 0.0.0.0/0 via 192.168.50.1 dev eth0
wsl -d Ubuntu-20.04 -u root echo nameserver 192.168.50.1 ^> /etc/resolv.conf
powershell -c "Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress 192.168.50.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.50.0/24;"

成功后如图

(Windows端)

(WSL端)

2. 端口转发(局域网访问)

1 、Windows 转发端口

  1. 使用管理员模式启动 powershell

  2. 执行命令

    1
    netsh interface portproxy add v4tov4 listenport=8080 listenaddress=* connectport=8080 connectaddress=192.168.50.2 protocol=tcp

    命令表示将 Windows 的 8080 端口访问转发到 WSL(192.168.50.2) 的 8080 端口上。

删除命令

1
2
3
4
#重置端口转发规则
netsh interface portproxy reset
#删除指定端口转发规则
netsh interface portproxy delete v4tov4 listenport=9400 protocol=tcp

2、设置防火墙规则

(不知道有没有用)打开控制面板中的防火墙,新增入站规则,将C:\WINDOWS\System32\svchost.exe程序设为允许

2. 参考资料

WSL2 的一些网络访问问题 | Artin’s Blog (bytem.io)

wsl2固定IP解决方案 - 张子庭的博客 (loyating.com)

给 WSL2 设置静态 IP 地址 - 知乎 (zhihu.com)

WSL无网络,Ikuai禁止二级路由:修复 WSL 无 Internet 网络连接问题