2024-04-19   


以前用的nat模式,通过设置端口转发可以把wsl内部网络端口暴露出去
netsh interface portproxy set v4tov4 listenport=42551 listenaddress=0.0.0.0 connectport=42551 connectaddress=(wsl的ip)
后面根据微软wsl文档所说,网络配置为镜像模式后是局域网是可以直接访问wsl的, 所以我改成了镜像模式

折腾

用户文件夹下新增.wslconfig文件,内容

[experimental]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

重启wsl, 然后发现docker 容器暴露的端口 通过telnet ip死活不通;但是telnet 127.0.0.1 port 是通的,百思不得其解,关闭防火墙,hyperv防火墙添加规则,添加端口转发规则,统统都不行;但是我看文档说镜像模式不是可以解决lan访问wsl的问题吗;

折腾了一下午,终于发现原因,文档说的没错,lan是可以直接访问wsl的,只是本机只能通过127.0.0.1访问wsl,是没法通过局域网ip访问的; 我在局域网另一个计器上telnet 本机ip,发现果然可以,打开浏览器也直接可以访问wsl docker容器里的网站。

资料:

https://learn.microsoft.com/en-us/windows/wsl/networking#mirrored-mode-networking
https://github.com/microsoft/WSL/issues/10494#issuecomment-1726758663
https://zhuanlan.zhihu.com/p/593263088

Q.E.D.


我并不是什么都知道,我只是知道我所知道的。