apt update 错误,下载失败——记一次乌龙事件
情况描述
麒麟系统台式机,在执行apt update
命令时,出现了下载失败的错误,导致无法下载软件包。具体如下。
1 |
|
排查思路
问题定位
由于该问题在该网络环境内普遍出现。首先怀疑网络不通。于是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。