我工作的 ISP 正在建立一个内部 IPv6 网络,为最终连接到 IPv6 互联网做准备。因此,该网络中的一些服务器在运行时默认尝试通过其 IPv6 地址连接到 security.debian.org apt-get update
,这导致每当我下载任何类型的更新时都必须等待很长时间.
有没有办法告诉 apt 是更喜欢 IPv4 还是完全忽略 IPv6?
mmo*_*oya 344
-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
Run Code Online (Sandbox Code Playgroud)
配置选项Acquire::ForceIPv4
并Acquire::ForceIPv6
已添加到版本0.9.7.9~exp1(参见错误 611891),该版本自 Ubuntu Saucy(2013 年 10 月发布)和 Debian Jessie(2015 年 4 月发布)起可用。
Lmw*_*ngi 90
正如吉尔斯所说,使用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
Run Code Online (Sandbox Code Playgroud)
案例 1:所有主机都首选 IPV4
附加到/etc/gai.conf
以下行:
precedence ::ffff:0:0/96 100
Run Code Online (Sandbox Code Playgroud)
保存编辑后的文件(无需重新启动)后,您应该会看到telnet
使用 IPV4 的网络应用程序(例如):例如,
$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 216.218.186.2...
Run Code Online (Sandbox Code Playgroud)
案例 2:对特定主机更喜欢 IPV6
如果我们只想www.he.net
为其网络或它的网络偏爱 IPV6 ,我们可以将其全部或部分 IPV6 地址的掩码/前缀附加到/etc/gai.conf
. 例如,以下行:
precedence 2001:470::/32 100
Run Code Online (Sandbox Code Playgroud)
(保存编辑后的文件后)产生
$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 2001:470:0:76::2...
^C
Run Code Online (Sandbox Code Playgroud)
案例 3:对特定主机更喜欢 IPV4
如果我们反转掩码,反过来会成立吗?根据@GrueMaster,附加
precedence 2001:470::/96 100
Run Code Online (Sandbox Code Playgroud)
在禁用 IPV6 后为他工作security.ubuntu.com
(否则它会永远停止)。
也可以看看:
Ric*_*chm 11
您可以在备用机器上设置apt-cacher-ng作为所有主机的代理/缓存。您可以强制配置只使用特定的主机,或者在一台机器上使用@badp 建议的 /etc/hosts 技巧。
apt-get install apt-cacher-ng
Run Code Online (Sandbox Code Playgroud)
完成 apt-cache-ng 设置后,您只需要在/etc/apt/apt.conf.d/90httpproxy 中删除以下行(更改 IP 地址/主机名以指向您的缓存机器)
Acquire::http { Proxy "http://[192.168.1.254]:3142"; };
Run Code Online (Sandbox Code Playgroud)
我使用该设置来减少带宽使用,但它应该可以解决您的问题。不幸的是,我不知道有什么方法可以直接禁用 apt-get 本身的 ipv6 查找。
在/etc/hosts
覆盖相关地址时添加一行如何?例如,
130.89.149.226 ftp.debian.org
195.20.242.89 security.debian.org
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
188217 次 |
最近记录: |