【Linux】WSL2的Linux子系统网络设置
1. 启用镜像网络模式
默认情况下,WSL2 的网络行为与传统虚拟机不同,其内部 IP 地址与宿主 Windows 不同,导致无法直接通过 IP 访问 WSL2 服务。
解决方法是开启镜像网络(mirrored networking),这样 Windows 和 WSL2 将共享同一个 IP 地址。
步骤:
在 Windows 用户主目录(如 C:\Users\你的用户名)下新建或修改 .wslconfig 文件,添加如下配置:
1 | [wsl2] |
编辑完成后,执行以下命令重启 WSL:
1 | wsl --shutdown |
2. 无法 ping 通 WSL2 的 IP
这是因为 Windows 默认关闭了对 ICMP(ping)的响应。
解决方法:
使用管理员权限打开 PowerShell,运行以下命令开启回显请求(ICMP):
1 | netsh advfirewall firewall add rule name="允许ICMPv4回显请求" protocol=icmpv4:8,any dir=in action=allow |
3. ping 通了WSL2 的 IP但 SSH 无法连接
默认情况下,WSL2 的 22 端口(SSH)未开放到外部。
解决方法:
执行以下命令,允许 WSL2 暴露 SSH 端口:
1 | netsh advfirewall firewall add rule name="Allow WSL2 SSH" dir=in action=allow protocol=TCP localport=22 |
4. 使用 localhost:port 能访问,但用 IP:port 无法访问
这通常是因为 Hyper-V 的默认设置不允许外部访问虚拟机端口。
解决方法:
使用管理员权限打开 PowerShell,运行以下命令,允许 Hyper-V 虚拟机入站连接:
1 | NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow |
参考
评论