我在更新 Ubuntu 12.04 服务器系统时遇到了一些棘手的问题。
当我发出以下命令时(以 root 身份):
apt-get update
...什么也没有发生,过了一会儿,apt-get 放弃并出现大量错误,例如:
W: Failed to fetch http://nl.archive.ubuntu.com/ubuntu/dists/precise-updates/restricted/i18n/Translation-en Unable to connect to nl.archive.ubuntu.com:http:
下面是 stdout 的副本。请注意,我没有等待命令完成,而是用CTRL-中止了它C,以节省一些时间
root@webserver:/var/log/apt# apt-get update
0% [Connecting to nl.archive.ubuntu.com (213.136.29.218)]^C
我的 sources.list 如下所示:
root@webserver:/var/log/apt# cat /etc/apt/sources.list
###### Ubuntu Main Repos
deb http://nl.archive.ubuntu.com/ubuntu/ precise main restricted
deb-src http://nl.archive.ubuntu.com/ubuntu/ precise main restricted
###### Ubuntu Update Repos
deb http://nl.archive.ubuntu.com/ubuntu/ precise-security main restricted
deb http://nl.archive.ubuntu.com/ubuntu/ precise-updates main restricted
deb-src http://nl.archive.ubuntu.com/ubuntu/ precise-security main restricted
deb-src http://nl.archive.ubuntu.com/ubuntu/ precise-updates main restricted
我的/etc/apt.apt.conf
是空的,没有使用代理
root@webserver:/var/log/apt# cat /etc/apt/apt.conf
root@webserver:/var/log/apt# echo $http_proxy
root@web-octoplus01:/var/log/apt# echo $HTTP_PROXY
root@web-octoplus01:/var/log/apt#
使用美国镜子给出相同的结果。美国镜像的特殊之处在于,每尝试三次它就会突然成功!(只有 91.189.91.14 地址有效,其余地址都会导致相同的错误)
root@web-octoplus01:/var/log/apt# host us.archive.ubuntu.com
us.archive.ubuntu.com has address 91.189.91.14
us.archive.ubuntu.com has address 91.189.91.15
us.archive.ubuntu.com has address 91.189.91.13
us.archive.ubuntu.com has IPv6 address 2001:67c:1562::15
us.archive.ubuntu.com has IPv6 address 2001:67c:1562::13
us.archive.ubuntu.com has IPv6 address 2001:67c:1562::14
是不是因为我的服务器在 Ubuntu 上被列入了不一致的黑名单?
我没看到什么?
答案1
由于 IPv4 版本可以工作,您可以在 /etc/gai.conf 文件(控制目标地址选择)中将到目标节点的连接类型的优先级从 IPv6 更改为 IPv4。
取消文档中的以下内容的注释:
优先级 ::ffff:0:0/96 100
正如文件中所述,这样,喜欢 IPv4 连接的站点可以使用 IPv4 而不是 IPv6 进行连接。