apt update 错误,下载失败——记一次乌龙事件

情况描述

麒麟系统台式机,在执行apt update命令时,出现了下载失败的错误,导致无法下载软件包。具体如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
kylin@kylin-W510-PGU-WBY0:~$ sudo apt update
错误:1 http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-2303-updates InRelease
连接失败 [IP: 119.188.150.242 80]
错误:2 http://archive2.kylinos.cn/DEB/KYLIN_DEB V10-SP1 InRelease
连接失败 [IP: 60.25.93.187 80]
错误:3 http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1 InRelease
连接失败 [IP: 60.25.93.187 80]
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有 6 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
W: 无法下载 http://archive.kylinos.cn/kylin/KYLIN-ALL/dists/10.1-2303-updates/InRelease 连接失败 [IP: 119.188.150.242 80]
W: 无法下载 http://archive.kylinos.cn/kylin/KYLIN-ALL/dists/10.1/InRelease 连接失败 [IP: 60.25.93.187 80]
W: 无法下载 http://archive2.kylinos.cn/DEB/KYLIN_DEB/dists/V10-SP1/InRelease 连接失败 [IP: 60.25.93.187 80]

排查思路

问题定位

由于该问题在该网络环境内普遍出现。首先怀疑网络不通。于是ping 119.188.150.242,通。其次怀疑端口不通,于是curl http://archive.kylinos.cn/kylin/KYLIN-ALL/dists/10.1-2303-updates/InRelease,文件正常下载。不明所以。

将源改用为https链接,问题解决。或改用4g网络,问题解决。

所以能确定是某互联网出口(或者内网其他什么地方)的安全设备拦截了,而且是针对应用层的http协议识别的,优先怀疑WAF等设备。

原因摸索

抓包,对比curl的请求和apt的请求有何不同,使用抓包命令tcpdump host 119.188.150.242 and port 80 -vvv

对比发现,apt的请求多了一行User-Agent: Debian APT-HTTP/1.3,于是尝试curl http://archive.kylinos.cn/kylin/KYLIN-ALL/dists/10.1-2303-updates/InRelease -H "User-Agent: Debian APT-HTTP/1.3",果然无法下载,返回了空包。

更进一步,请求任何链接,只要带上该UA,都返回了空包。确定是针对UA做了限制。

乌龙事件

经排查,发现了上网行为管理设备中,禁用了高带宽消耗应用,其中包含apt-get,让人哭笑不得。

解禁后,问题解决。

吐槽

我并不是很懂这项配置的逻辑。从某种意义上说,apt-get算得上高带宽消耗,但这种消耗是必要的,总不能因为它带宽,就不下载更新软件了吧。本次排查用了很久,也是因为没有想到还有设备会直接尽apt-get。


apt update 错误,下载失败——记一次乌龙事件
https://boyinthesun.cn/posts/cfab4f7b08a3.html
作者
BoyInTheSun
发布于
2025年3月27日
许可协议