WSL2的网络问题

Ubuntu APT Update 卡住的排查与解决方案

背景

最近在使用 Ubuntu 进行 sudo apt-get update 时,发现更新一直卡在 Connecting to 172.23.153.121,并最终超时。起初以为是网络问题,但 ping archive.ubuntu.comping security.ubuntu.com 都能返回数据,说明基础网络是通的。

深入排查后,发现 APT 可能被配置了错误的代理或镜像源,导致更新请求被错误地重定向到 172.23.153.121,最终导致超时。以下是详细的排查过程和解决方案。


排查过程

1. 检查 APT 源是否正确

首先查看 /etc/apt/sources.list,确认是否存在错误的源配置:

1
cat /etc/apt/sources.list

我的 sources.list 内容如下:

1
2
3
deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse

看起来没有问题,说明问题不是由于源地址错误引起的。


2. 检查 APT 代理设置

APT 可能被配置了一个错误的代理,导致所有请求都被重定向。检查 apt.conf.d 目录:

1
grep -r "172.23.153.121" /etc/apt/apt.conf.d/

果然,发现了类似的代理配置:

1
/etc/apt/apt.conf.d/00proxy:Acquire::http::Proxy "http://172.23.153.121:80/";

解决方案:删除或修改该文件

1
sudo rm /etc/apt/apt.conf.d/00proxy

或者手动编辑:

1
sudo nano /etc/apt/apt.conf.d/00proxy

删除 Acquire::http::Proxy 相关的行,保存退出。


3. 检查环境变量中的代理

如果 apt.conf.d 没有问题,可能是系统环境变量导致的。执行:

1
env | grep -i proxy

如果返回:

1
2
http_proxy=http://172.23.153.121:80
https_proxy=http://172.23.153.121:80

那么需要取消代理:

1
2
unset http_proxy
unset https_proxy

并检查 bash 配置文件:

1
grep -i proxy ~/.bashrc ~/.bash_profile ~/.profile /etc/environment /etc/bash.bashrc /etc/profile

如果发现 export http_proxyexport https_proxy,需要手动编辑相应文件删除,并执行:

1
source /etc/environment

4. 清除 APT 缓存并重试

清除旧的 APT 数据,防止缓存影响:

1
2
3
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get clean
sudo apt-get update

5. 检查 DNS 设置

如果问题依然存在,可能是 DNS 解析问题。查看 DNS 配置:

1
cat /etc/resolv.conf

如果 DNS 服务器不是 8.8.8.88.8.4.4,可以手动修改:

1
sudo nano /etc/resolv.conf

添加:

1
2
nameserver 8.8.8.8
nameserver 8.8.4.4

然后再次运行:

1
sudo apt-get update

6. 强制 APT 使用 IPv4

如果仍然超时,尝试强制 APT 仅使用 IPv4:

1
sudo apt-get update -o Acquire::ForceIPv4=true

7. 更换国内镜像源(可选)

如果你在国内,使用官方的 archive.ubuntu.com 可能会较慢,可以更换为阿里云或清华源。

编辑 /etc/apt/sources.list

1
sudo nano /etc/apt/sources.list

替换为:

1
2
3
deb http://mirrors.aliyun.com/ubuntu focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu focal-updates main restricted universe multiverse

然后更新:

1
sudo apt-get update

总结

  1. 检查 APT 代理配置 (/etc/apt/apt.conf.d/),删除错误的代理设置。
  2. 检查系统环境变量 (env | grep -i proxy),删除不必要的代理。
  3. 清理 APT 缓存 (sudo rm -rf /var/lib/apt/lists/* && sudo apt-get clean)。
  4. 修复 DNS 设置 (sudo nano /etc/resolv.conf,改成 8.8.8.8)。
  5. 强制使用 IPv4 (sudo apt-get update -o Acquire::ForceIPv4=true)。
  6. 更换国内镜像源(阿里云、清华等)。