WSL设置内网访问

文章来源:https://www.yuque.com/hhun/code/wsl_interface

获取虚拟机ip及端口转发

因为每次都会用wsl2虚拟机分配一个ip所以使用windows自带的端口转发命令netsh可以实现在获取了虚拟机ip之后转发至wsl2进而进行访问。

注意:WSL2不能设置为固定IP,否则会出现很多不可意料的问题。

【WSL子系统服务器管理】可以批量管理转发端口点击下载

WSL每次重启后IP都会发生变化,每次启动WSL后,需要在宿主机清空WSL端口映射,并且添加WSL端口映射。

1、获得虚拟机ip

用管理员身份打开PowerShell输入命令 arp -a 回车

11.png

如图所示虚拟机ip为 172.25.140.5(每次启动都会变)


2、设置端口转发(需要管理员权限运行)

输入命令

netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.25.140.5

listenport=【宿主机Windows平台监听端口】

listenaddress=【宿主机Windows平台监听IP,*或0.0.0.0为所有IP】

connectport=【wsl2平台监听端口】

connectaddress=【wsl2平台ip】

3、然后查看下端口转发状态

输入命令

netsh interface portproxy show all

23.png

如图所示端口转发成功

4、然后查看本机的局域网ip地址

输入CMD命令 ipconfig /all

13.png

找个在局域网的电脑访问一下本机的局域网ip地址 192.168.31.51 测试即可。

不成功的话可能需要配置下入站规则试试。

5、删除端口转发格式

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0
或
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=*

注意:写的是 0.0.0.0 删的时候也需要是 0.0.0.0 进行对应,不然会提示找不到文件。


配置入站规则

设置–>更新和安全–>Windows安全中心–>防火墙和网络保护–>高级设置—>入站规则–>新建规则–>端口–>TCP,特定本地端口–>允许连接

本地端口 21, 22, 80, 8080, 888, 8888

设置外网访问WSL

  1. 宿主机端口转发WSL端口

  2. 并且配置了入站规则后

  1. 在路由器上转发宿主机端口 21, 22, 80, 8080, 888, 8888