WSL 2 Ubuntu 20.04域名解析异常及pip/git访问缓慢问题求助
问题根本原因
- WSL2的虚拟网络架构和WSL1不同,WSL1直接复用宿主机网络栈,WSL2是走独立的虚拟网卡NAT网络,默认会自动同步宿主机的DNS配置。升级后出现解析失败,通常是因为虚拟网卡适配异常,无法正确拉取宿主机的DNS列表,或是宿主机连接企业VPN时,WSL2没有继承内网DNS规则,导致内网、公网域名均无法解析。
配置1.1.1.1生效但访问缓慢的逻辑
- 1.1.1.1是Cloudflare提供的公共DNS服务,可以正常解析公网域名,所以添加后能解决基础的网络访问失败问题;但它无法解析你公司的内网Gitlab域名,且如果你身处国内,该公共DNS的节点延迟很高,同时缺少内网DNS的配置,系统解析域名时会先尝试公共DNS解析内网域名超时后再回退,就会出现命令执行前长时间等待的问题。
完善解决方案
步骤1:获取正确的DNS地址
在Windows系统的命令提示符中执行ipconfig /all,找到当前在用的物理网卡(WiFi/有线)、VPN虚拟网卡对应的DNS服务器地址,优先记录企业内网DNS地址,再记录公网DNS地址。
步骤2:修正WSL2的DNS配置
确认/etc/wsl.conf已有如下配置,禁止系统自动覆盖resolv.conf:
[network] generateResolvConf = false
修改/etc/resolv.conf,按优先级填写你刚才获取的DNS地址,示例如下:
nameserver 企业内网DNS地址 nameserver 223.5.5.5 nameserver 114.114.114.114
执行命令锁定resolv.conf防止被篡改:sudo chattr +i /etc/resolv.conf
步骤3:优化网络延迟
如果修改后还是存在访问慢的问题,检查WSL2虚拟网卡的MTU值和宿主机是否匹配:
- 在Windows命令提示符执行
netsh interface ipv4 show subinterfaces,查看当前在用网卡的MTU值 - 在WSL2中执行
sudo ip link set dev eth0 mtu 对应MTU值,如果需要永久生效,可将该命令写入~/.bashrc或/etc/profile文件末尾
步骤4:生效配置
在Windows命令提示符执行wsl --shutdown关闭WSL实例,重新打开WSL后配置即可生效。
内容的提问来源于stack exchange,提问作者shaun
相关产品推荐
相关产品推荐

