我工作的ISP正在建立内部IPv6网络,以准备最终连接到IPv6 Internet。结果,该网络中的多个服务器现在在运行时默认尝试通过其IPv6地址连接到security.debian.org apt-get update
,这导致每当我下载任何类型的更新时都必须等待很长的超时时间。
有没有办法让他们倾向于偏爱IPv4或完全忽略IPv6?
/etc/gai.conf
使security.debian.org
A记录在AAA记录之前返回,但我不知道确切要在该文件中放入什么。
我工作的ISP正在建立内部IPv6网络,以准备最终连接到IPv6 Internet。结果,该网络中的多个服务器现在在运行时默认尝试通过其IPv6地址连接到security.debian.org apt-get update
,这导致每当我下载任何类型的更新时都必须等待很长的超时时间。
有没有办法让他们倾向于偏爱IPv4或完全忽略IPv6?
/etc/gai.conf
使security.debian.org
A记录在AAA记录之前返回,但我不知道确切要在该文件中放入什么。
Answers:
-o Acquire::ForceIPv4=true
运行时添加apt-get
。
如果要使设置持久化,只需创建/etc/apt/apt.conf.d/99force-ipv4并将其放入Acquire::ForceIPv4 "true";
:
echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4
Config选项Acquire::ForceIPv4
并Acquire::ForceIPv6
已添加到0.9.7.9〜exp1版本(请参见bug 611891),该版本自Ubuntu Saucy(于2013年10月发布)和Debian Jessie(于2015年4月发布)之后可用。
apt.conf
您需要这样写:(Acquire::ForceIPv4 "true";
双引号)
sudo echo 'test' > file
将无法正常工作,因为重定向是通过用户权限执行的
如Gilles所说,使用gai.conf
。笔记:
getaddrinfo
。gai.conf
,您应该备份并阅读(不要担心,这很短)。您当前的文件中可能已经提到了下面的编辑;如果当前文件指示的内容与下面提到的有所不同,则您可能应该选择当前文件中的内容。但是,如果这是您想要的(可能是),那就继续吧。假设我们有两个主持人,www.he.net
并且www.ripe.net
:
$ host www.he.net
www.he.net is an alias for he.net.
he.net has address 216.218.186.2
he.net has IPv6 address 2001:470:0:76::2
$ host www.ripe.net
www.ripe.net has address 193.0.6.139
www.ripe.net has IPv6 address 2001:67c:2e8:22::c100:68b
情况1:所有主机都首选IPV4
追加到/etc/gai.conf
以下行:
precedence ::ffff:0:0/96 100
保存编辑后的文件(无需重新启动)后,您应该telnet
使用IPV4 查看联网应用程序(例如):
$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 216.218.186.2...
情况2:对特定主机更喜欢IPV6
如果我们只想为IPV6 www.he.net
或其网络选择IPV6 ,则可以为其的IPV6地址的全部或部分附加掩码/前缀/etc/gai.conf
。例如,以下行:
precedence 2001:470::/32 100
(保存编辑的文件后)产生
$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 2001:470:0:76::2...
^C
情况3:对特定主机更喜欢IPV4
如果我们颠倒了面具,反面是真的吗?根据@GrueMaster,附加
precedence 2001:470::/96 100
在禁用IPV6后为他工作security.ubuntu.com
(否则它将永远停止)。
也可以看看:
#security.debian.org has IPv6 address 2610:148:1f10:3::73 \n #security.debian.org has IPv6 address 2001:4f8:8:36::6 \n precedence 2001:4f8::/96 100 \n precedence 2610:148::/96 100
在/etc/gai.conf中添加了2行,并且apt-get update现在可以正常工作了。
您可以在备用计算机上设置apt-cacher-ng来充当所有主机的代理/缓存。您可以强制配置仅使用特定主机,或在该计算机上使用@badp建议的/ etc / hosts技巧。
apt-get install apt-cacher-ng
设置apt-cache-ng后,只需在/etc/apt/apt.conf.d/90httpproxy中删除以下行(更改IP地址/主机名以指向您的缓存机)。
Acquire::http { Proxy "http://[192.168.1.254]:3142"; };
我使用该设置来减少带宽使用,但是它可以解决您的问题。不幸的是,我不知道一种直接禁用apt-get本身的ipv6查找的方法。
如何在/etc/hosts
覆盖相关地址时添加一行?例如,
130.89.149.226 ftp.debian.org
195.20.242.89 security.debian.org
/etc/hosts
自己不拥有的IP地址混乱。
劫持旧话题,但最近也面临同样的问题。因此,基于上面给出的建议以及host和whois的输出:
# host security.debian.org
security.debian.org has address 212.211.132.250
security.debian.org has address 195.20.242.89
security.debian.org has address 212.211.132.32
security.debian.org has IPv6 address 2001:8d8:580:400:6564:a62:0:2
security.debian.org has IPv6 address 2001:a78:5:0:216:35ff:fe7f:be4f
security.debian.org has IPv6 address 2001:a78:5:1:216:35ff:fe7f:6ceb
在稍微不同的方式解决的问题-降低其含有IPv6网络的优先级security.debian.org的在/etc/gai.conf:
# Make IPv6 for security.debian.org undesirable
precedence 2001:8d8:580::/48 5
precedence 2001:a78:5::/48 5
因此,除了security.debian.org之外,IPv6仍然是首选。
截至2014年10月8日,我遇到了同样的问题,试图在本地网络上的代理后面更新debian。希望这对其他人有帮助,我在这里发表回应。正如其他人提到的那样,编辑/etc/hosts
是应该注意的事情。
但是我个人只是想完成更新。
更新时/etc/apt/sources.list的内容(在更新之前有所不同。):
deb http://http.debian.net/debian/ testing main
deb-src http://http.debian.net/debian/ testing main
deb http://mirrors.kernel.org/debian/ wheezy main
deb-src http://mirrors.kernel.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main
/etc/apt/apt.conf的内容:
Acquire::http::proxy "http://192.168.1.10:7777/";
Acquire::http::Timeout "10";
Acquire::ftp::Timeout "10";
除了/ etc / hosts:
#Workaround for making apt-get work (08-10-2014)
195.20.242.89 security.debian.org
130.89.148.12 ftp.debian.org
现在,apt-get update ; apt-get upgrade
以root身份运行很好。
如其他答案中所述,请在域上使用运行host命令来获取正确的ip,以插入到hosts文件中。
例:
$ host ftp.debian.org
ftp.debian.org has address 130.89.148.12
这已成功将系统更新为Debian GNU/Linux testing (jessie)
。您可能不希望运行测试存储库,而只是从源中删除它。测试存储库为您提供了多个软件包的最新更新,但不稳定。
hosts
文件是一个高度次优的解决方案。