这种情况从未发生过,但突然我无法访问在 wsl2 中在本地主机上运行的服务器。
进一步分析发现,IP 存在差异
wsl hostname -I
192.168.40.75
ipconfig
Ethernet adapter vEthernet (WSL):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::491e:.......
IPv4 Address. . . . . . . . . . . : 192.168.40.65
Subnet Mask . . . . . . . . . . . : 255.255.255.240
Default Gateway . . . . . . . . . :
.......
是什么原因造成的?我以后该如何预防?
答案1
您看到的 IP 地址是正常的。它wsl hostname -I
为您提供的是虚拟 NIC 的地址里面WSL,同时ipconfig
向您展示该连接的 Windows 端。
wsl ip route show
应该显示从 WSL 实例出来的默认路由是 Windows IP。
至于无法通过 Windows 访问 WSL 服务localhost
,这可能是由于错误/问题导致的,即当 Windows 处于休眠状态时,WSL 会丢失本地主机转发。虽然您可能认为您最近没有休眠,但正常的 Windows 关机实际上会导致伪休眠,这是因为 Windows 中的“快速启动”功能默认启用。
解决方案通常(希望)只是退出 WSL 实例,执行wsl --shutdown
,然后重新启动 WSL。请参阅这个答案更多细节。