修改WSL的网络模式为镜像模式
...大约 2 分钟
注意,网络镜像模式需要 wsl 版本 ≥ 2.0.0,Windwos 版本 ≥ 23H2
切换网络模式
在 %UserProfile%
目录下新建一个 .wslconfig
文件,写入如下配置:
[wsl2]
networkingMode=mirrored
dnsTunneling=true
autoProxy=true
firewall=true
networkingMode
:镜像网络模式dnsTunneling
:更改将 DNS 请求从 WSL 代理到 Windows 的方式autoProxy
:强制 WSL 使用 Windows 的 HTTP 代理信息firewall
:Windows 防火墙规则以及特定于 Hyper-V 流量的规则可以筛选 WSL 网络流量
这样设置之后,重新启动 wsl ,在 wsl 中查看 ip 地址,可以看到 wsl 的 ip 地址和 Windows 本机的 ip 地址就是一样的了。
如何从局域网访问WSL中的服务
将 wsl 的网络模式改成镜像模式之后,当我们在 wsl 中启动一个允许局域网访问的web服务后,可以发现虽然 ip 地址是本机的 ip 地址,且在自带的 Windows 防火墙中已经开启了端口,还是无法从局域网中访问该服务。
是因为还有个名叫 Hyper-V 防火墙 的东西。需要在该防火墙中开启需要向外暴露的端口。
Hyper-V防火墙的基本命令
1.获取 WSL GUID
Get-NetFirewallHyperVVMCreator
2.获取防火墙规则
Get-NetFirewallHyperVRule -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}'
3.开启端口
New-NetFirewallHyperVRule -Name <规则名字> -DisplayName "<规则名字>" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts <端口号>
4.移除一条规则
Remove-NetFirewallHyperVRule -DisplayName '<规则名字>'
参考
Powered by Waline v3.3.0