Windows11 WSL2 镜像模式下 DNS 解析失效(Temporary failure resolving)

1. 现象描述

在 Windows 11 中开启了 WSL2 的镜像网络模式 (Mirrored Mode) 后,虽然系统具备基础的连通性(如可以 Ping 通外网 IP),但在执行 sudo apt update或使用域名访问网页时,频繁出现如下错误:

复制代码
Temporary failure resolving 'mirrors.tuna.tsinghua.edu.cn'
Err:2 http://security.ubuntu.com/ubuntu noble-security InRelease

通过 cat /etc/resolv.conf发现,DNS 指向了一个奇怪的地址:

复制代码
nameserver 10.255.255.254

2. 根因分析

在 WSL2 传统模式下,网络通过 NAT 转发,WSL 依赖虚拟网关进行 DNS 转发。而在 Win11 镜像模式下,WSL 与 Windows 共享网络栈,理应直接继承宿主机的 DNS 配置。

导致失效的三个核心原因:

  1. 解析路径死循环 :WSL 自动生成的 10.255.255.254在镜像模式下往往无法正确回传至 Windows 的解析器。

  2. 配置冲突 :WSL 的内置 dnsTunneling特性与部分 VPN 或第三方防火墙不兼容。

  3. 遗留逻辑 :系统重启后,WSL 默认会重写 /etc/resolv.conf,覆盖掉用户手动设置的有效 DNS。

3. 解决方案(标准化流程)

第一步:关闭 WSL 自动生成 DNS 功能

我们需要接管 DNS 的控制权,防止 WSL 在每次启动时"自作聪明"地修改配置。

编辑 WSL 配置文件:

复制代码
sudo nano /etc/wsl.conf

添加或修改如下内容:

复制代码
[network]
generateResolvConf = false

第二步:手动配置高可用 DNS 服务器

由于原文件通常是软链接,需要先删除再重建物理文件。

复制代码
# 删除软链接
sudo rm /etc/resolv.conf

# 写入可靠的 DNS (阿里 DNS & Google DNS)
sudo bash -c 'echo "nameserver 223.5.5.5" > /etc/resolv.conf'
sudo bash -c 'echo "nameserver 8.8.8.8" >> /etc/resolv.conf'

# (可选) 锁定文件防止被意外修改
sudo chattr +i /etc/resolv.conf

第三步:优化 .wslconfig 选项

在 Windows 宿主机用户目录下(%UserProfile%\.wslconfig),确保镜像模式配置科学。

复制代码
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

第四步:彻底重启 WSL 实例

在 Windows PowerShell 中执行命令,确保配置被重新加载:

复制代码
wsl --shutdown

4. 进阶排查建议

如果配置后仍不稳定,建议检查以下两项:

  • 防火墙放行:镜像模式下,Windows 防火墙可能拦截 UDP 53 端口。管理员权限运行:

    复制代码
    New-NetFirewallRule -DisplayName "WSL DNS" -Direction Inbound -Action Allow -Protocol UDP -LocalPort 53
  • VPN 干扰:部分代理软件开启"系统代理"或"TUN 模式"时会强制劫持 DNS。建议在开发时将代理设置为"规则模式"而非"全局模式"。

5. 总结

WSL2 的镜像模式极大方便了本地开发,但也带来了复杂的网络交互。通过"禁用自动生成 + 手动锁定 DNS"的组合拳,可以解决 90% 以上的域名解析失败问题。

相关推荐
我真的想 啸20 小时前
在 Ubuntu 24.04 系统上安装并使用 Codex CLI
linux·ubuntu·arcgis
嵌入小生0071 天前
线程(2)/ 线程属性 /相关函数接口--- 嵌入式(Linux)
linux·嵌入式·线程·软件编程·僵尸线程·马年开工第一学·线程属性
No8g攻城狮1 天前
【Linux】Linux nano 编辑器全攻略:从入门到精通
linux·运维·编辑器·nano
zl_dfq1 天前
Linux 之 【网络套接字编程】(固定宽度整数类型、socket常见API、netstat)
linux·网络
huaweichenai1 天前
Linux安装http-server并部署html静态站点
linux·运维·服务器
Gss7771 天前
Linux 正则表达式详解(基础 + 扩展 + 实操)
linux·运维·正则表达式
北冥湖畔的燕雀1 天前
Linux权限与Vim,gcc以及make/makefile操作全解析
linux·运维·服务器
代码游侠1 天前
Linux驱动复习——驱动
linux·运维·arm开发·笔记·学习
LuDvei1 天前
LINUX文件操作函数
java·linux·算法
czxyvX1 天前
017-Linux-网络基础概念
linux·网络