1. 从“明明昨天还好好的”说起:WSL2网络连接的那些坑
不知道你有没有遇到过这种情况:昨天还在Windows 11上愉快地用ssh localhost -p 2222连进WSL2里的Ubuntu,或者用数据库客户端连上了WSL2里跑的MySQL,今天一开机,突然就“Connection refused”了。你挠挠头,检查了WSL2服务是启动的,Ubuntu也跑得好好的,但宿主机(也就是你的Windows 11)就是死活连不上WSL2里的任何服务。这种感觉,就像家里的Wi-Fi路由器明明亮着灯,但手机电脑就是搜不到信号一样,让人又急又懵。
这其实是一个在Windows 11上使用WSL2的开发者,尤其是后端、全栈或者搞AI本地部署的朋友们,特别容易踩进去的“经典大坑”。问题的根源,往往不在于WSL2本身,而在于它运行时所依赖的Windows底层虚拟化环境——特别是Hyper-V,以及Windows 11在安全策略上的一些“贴心”更新。简单来说,WSL2本质上是一个运行在Hyper-V管理程序之上的轻量级虚拟机。当这个虚拟机和你的物理Windows主机之间通信时,数据流需要经过一道叫做“Hyper-V虚拟交换机”的关卡,而Windows防火墙(特别是新增的Hyper-V防火墙)会在这里进行审查。有时候,一次Windows更新、一个安全补丁、甚至是你无意中修改的某个网络配置,都可能让这道关卡变得“不通人情”,把你的网络请求给拦下来。
所以,这篇文章就是来解决这个“断连”问题的。我会带你从最基础的排查思路开始,一步步深入到Hyper-V防火墙的机制,最后给出一个更稳定、更推荐的长效解决方案——镜像网络模式的配置。整个过程,我会尽量用大白话和实际操作的命令来解释,保证你就算不是网络专家,也能跟着一步步把自己的环境给调通。咱们的目标很简单:让你的宿主机和WSL2重新“握手言和”,网络畅通无阻。
2. 第一步:基础排查,先别急着动“大手术”
遇到网络问题,最忌讳的就是一上来就乱改配置。咱们先做几个简单的检查,排除掉那些最显而易见的可能性。这就像电脑开不了机,你得先看看电源插没插,而不是直接拆主板。
首先,确认WSL2和你的Linux发行版正在运行。 打开Windows终端(PowerShell或CMD都可以),输入:
wsl --list --verbose
这条命令会列出所有已安装的WSL发行版及其状态。确保你要连接的那个发行版(比如Ubuntu-22.04)后面显示的是 Running。如果是 Stopped,那就先启动它:wsl -d Ubuntu-22.04。
其次,检查WSL2内部的网络服务是否真的在监听。 我们需要进入WSL2内部去看。在刚才的终端里,输入 wsl 进入默认的Linux发行版,或者用 wsl -d <发行版名称> 进入指定的。然后,假设你无法连接的是SSH服务(端口22),运行:
sudo netstat -tulpn | grep :22
或者更通用的:
ss -tulpn | grep :22
如果能看到类似 tcp LISTEN 0 128 0.0.0.0:22 的输出


1万+

被折叠的 条评论
为什么被折叠?



