WSL + Tailscale 导致 apt update 卡 0% 的解决方案

在用 Windows Subsystem for LinuxUbuntu 时,执行:

bash 复制代码
sudo apt update

一直卡在:

css 复制代码
0% [Working]

同时现象是:

bash 复制代码
ping 8.8.8.8      # 可以
ping mirrors.tuna.tsinghua.edu.cn  # 不行

这说明:

网络是通的,但 DNS 解析失败。


问题根因

查看 /etc/resolv.conf

bash 复制代码
cat /etc/resolv.conf

发现:

arduino 复制代码
nameserver fec0:0:0:ffff::1
search xxx.ts.net

这通常是因为开启了 Tailscale, WSL 自动继承了 Windows 的 VPN DNS。

但这个 IPv6 DNS 在 WSL 内部无法正常解析,导致:

  • apt 卡住
  • 域名无法解析
  • 误以为网络坏了

解决方案(永久修复)

1️⃣ 关闭 WSL 自动生成 DNS

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

写入:

ini 复制代码
[network]
generateResolvConf = false

2️⃣ 删除旧 DNS 文件

bash 复制代码
sudo rm /etc/resolv.conf

3️⃣ 手动写入稳定 DNS

bash 复制代码
sudo nano /etc/resolv.conf

写入:

复制代码
nameserver 8.8.8.8
nameserver 1.1.1.1

4️⃣ 重启 WSL

在 Windows PowerShell 执行:

powershell 复制代码
wsl --shutdown

重新打开 Ubuntu。


验证

bash 复制代码
ping mirrors.tuna.tsinghua.edu.cn
sudo apt update

恢复正常。


原理说明

WSL2 会把 Windows 当前 DNS 注入 Linux。

当 VPN(如 Tailscale)修改了 Windows DNS 后:

  • WSL 继承 VPN DNS
  • VPN DNS 在 WSL 内不可达
  • 域名解析失败

固定 DNS 是最稳定的方案。

结论:

WSL 能 ping IP 但不能 ping 域名,大概率是 DNS 被 VPN 注入导致。 关闭自动生成 resolv.conf + 手动指定 DNS 是长期稳定解法。

相关推荐
vipbic3 小时前
别再把“做个H5”挂嘴边了:这个词,官方压根就没有定义过
前端
ZC跨境爬虫5 小时前
跟着 MDN 学CSS day_39:(Flexbox 弹性盒子核心机制)
前端·css·ui·html·tensorflow
小陈同学呦5 小时前
前端如何处理订单状态导航的数据竞态问题
前端·javascript
喵个咪5 小时前
GoWind Toolkit 前端代码生成|Vue3(ElementPlus/Vben)、React(AntDesign)全自动一键生成教程
前端·vue.js·react.js
摆烂大大王7 小时前
玩转 OpenClaw:用 TaskFlow + Heartbeat 打造自动化工作流
前端·人工智能·自动化
zhangxingchao7 小时前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端
梦想的颜色7 小时前
TypeScript 完全指南(上):从零开始掌握类型系统
前端·typescript
之歆7 小时前
Day01_ES6+ 专业指南:从基础到实战的现代JavaScript开发(下)
前端·javascript·es6
lichenyang4538 小时前
鸿蒙 MVVM 实战:从 Demo 到工程化,聊聊登录、状态管理与埋点系统设计
前端
IT_陈寒8 小时前
Vite打包时遇到的坑,原来问题出在这里
前端·人工智能·后端