WSL2 Ubuntu20.04 无法联网,解决方案
文章目录
- 背景
- 一、快速修复步骤(按顺序尝试)
- 1. 重启 WSL2 虚拟化服务
- 2. 重置 Windows 网络适配器
- 二、深度排查与修复
- 1. 检查基础网络连通性
- 2. DNS 修复
- 3. 网络配置修复
- 三、高级配置(长期稳定方案)
- 1. 创建静态网络配置
- 2. 禁用 Hyper-V 随机 MAC
- 四、验证修复
- 常见错误对照表
- 附:WSL2 网络架构图
背景
在 WSL2 中运行 Ubuntu 20.04 无法联网通常是由于 网络配置冲突 或 DNS 解析问题 导致。以下是系统性解决方案:
一、快速修复步骤(按顺序尝试)
1. 重启 WSL2 虚拟化服务
# 在 Windows PowerShell 中执行:
wsl --shutdown # 关闭所有 WSL 实例
wsl -d Ubuntu-20.04 # 重新启动 Ubuntu
2. 重置 Windows 网络适配器
# 在 PowerShell 中以管理员身份执行:
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
# 重启电脑
二、深度排查与修复
1. 检查基础网络连通性
在 Ubuntu 终端中执行:
ping 8.8.8.8 # 测试 IPv4 连通性
ping 114.114.114.114 # 测试国内 DNS 连通性
- 如果 IP 能通但域名无法解析 → 跳转到 DNS 修复
- 如果 IP 不通 → 跳转到 网络配置修复
2. DNS 修复
原因:WSL2 默认从 Windows 继承 DNS,但可能配置被覆盖。
修复步骤:
# 在 Ubuntu 中操作:
sudo rm /etc/resolv.conf # 删除旧配置
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
# 关闭 Ubuntu 后重新启动
3. 网络配置修复
原因:Windows 防火墙/VPN/代理软件拦截了 WSL2 流量。
解决方案:
- 关闭 Windows 防火墙(临时测试):
- 控制面板 → Windows Defender 防火墙 → 启用或关闭 → 全部关闭
- 处理 VPN/代理冲突:
- 如果使用 VPN(如思科 AnyConnect),在连接 VPN 后执行:
sudo ip route del default
sudo ip route add default via $(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
- 手动设置 WSL2 网关:
# 在 Ubuntu 中获取 Windows 主机 IP
export WIN_IP=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
# 设置默认路由
sudo ip route del default
sudo ip route add default via $WIN_IP
三、高级配置(长期稳定方案)
1. 创建静态网络配置
在 /etc/wsl.conf 添加:
[network]
generateResolvConf = false
hostname = mywsl
在 /etc/resolv.conf 设置:
nameserver 8.8.8.8
nameserver 223.5.5.5
search home # 根据你的网络环境修改
2. 禁用 Hyper-V 随机 MAC
在 Windows PowerShell 中执行:
# 找到 WSL2 虚拟交换机名称(通常为 "vEthernet (WSL)")
Get-NetAdapter
# 禁用 MAC 地址随机化
Set-NetAdapter -Name "vEthernet (WSL)" -MacAddress "001122334455" -NoRestart
四、验证修复
curl -I https://www.baidu.com # 测试 HTTPS 访问
nslookup www.qq.com # 测试 DNS 解析
常见错误对照表
附:WSL2 网络架构图
+-------------------+ +-------------------+
| Ubuntu 20.04 | | Windows 11 |
| (虚拟以太网适配器)| <-> | (vEthernet WSL) |
+-------------------+ +-------------------+
↓ ↓
(NAT 网络) (物理网络适配器)
通过以上步骤,90% 的 WSL2 网络问题可以得到解决。如果问题依旧,建议提供以下信息进一步诊断:
- ip addr show 输出
- cat /etc/resolv.conf 内容
- Windows 主机网络适配器列表(ipconfig /all)