一、基础网络配置
0x01 获取wsl实例地址
powershell里执行
wsl hostname -I
或者在wsl里执行
hostname -I
获得类似172.30.186.128 172.17.0.1的输出,取第一个ip即可
0x02 配置windows端口转发
netsh interface portproxy add v4tov4 listenport=【宿主机端口】 listenaddress=0.0.0.0 connectport=【WSL服务端口】 connectaddress=【WSL_IP】
# 示例
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=172.30.186.128
0x03 宿主机防火墙放行
netsh advfirewall firewall add rule name="WSL Port" dir=in action=allow protocol=TCP localport=【宿主机端口】remoteip=【放行的IP】
二、服务配置要求
0x01、服务绑定地址
确保wsl内服务监听0.0.0.0,而非127.0.0.1,例如
python3 -m http.server 8080 --bind 0.0.0.0
0x02、验证服务连通性
在宿主机执行
Test-NetConnection -ComputerName 127.0.0.1 -Port 【宿主机端口,示例是8080】
三、进阶配置方案
0x01、win11专用方案(22H2+)
powershell里执行
wsl --shutdown
wsl --export <发行版名称> backup.tar
wsl --import <新发行版名称> <安装路径> backup.tar --version 2 --network bridged
0x02、IP动态更新方案
编辑wsl里的/etc/wsl.conf,如果没有则新建,添加
[boot]
command = "sudo service ssh start && echo 【WSL密码】 | sudo -S /path/to/update-iptables.sh"p配合脚本自动更新端口转发规则
四、访问验证
0x01、局域网设备访问地址
http://【Windows主机IP】:【宿主机端口】
通过ipconfig获取windows主机的局域网IP。
0x02、管理端口转发规则
# 查看所有规则
netsh interface portproxy show all
# 删除指定规则
netsh interface portproxy delete v4tov4 listenport=端口号 listenaddress=0.0.0.0
注意:wsl实例的ip在重启后会变化,建议配合自动化脚本更新转发规则。