说服 apt-get *不*使用 IPv6 方法

说服 apt-get *不*使用 IPv6 方法

我工作的 ISP 正在建立一个内部 IPv6 网络,为最终连接到 IPv6 互联网做好准备。因此,该网络中的几台服务器现在在运行时默认尝试通过其 IPv6 地址连接到 security.debian.org apt-get update,这导致每当我下载任何类型的更新时都必须等待很长的超时。

有没有办法告诉 apt 是喜欢 IPv4 还是完全忽略 IPv6?

答案1

-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

配置选项Acquire::ForceIPv4Acquire::ForceIPv6添加到版本中0.9.7.9~exp1(看错误 611891)从 Ubuntu Saucy(2013 年 10 月发布)和 Debian Jessie(2015 年 4 月发布)开始可用。

答案2

作为吉尔斯 说, 使用gai.conf。笔记:

  1. 与 APT 相比,它的工作级别(DNS 和 IP 网络)要低得多,因此它将改变全部您的应用程序网络——至少,所有使用getaddrinfo.
  2. 在编辑您的 之前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

如果我们只想为其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(否则它会永远停滞)。


也可以看看:

答案3

你可以设置apt-cacher-ng在备用计算机上充当所有主机的代理/缓存。您可以强制配置仅使用特定主机或在该一台计算机上使用 @badp 建议的 /etc/hosts 技巧。

apt-get install apt-cacher-ng

一旦你安装了 apt-cache-ng,你只需要将以下行(将 IP 地址/主机名更改为指向你的缓存机器)放入/etc/apt/apt.conf.d/90httpproxy

Acquire::http { Proxy "http://[192.168.1.254]:3142"; };

我使用该设置来减少带宽使用,但它应该可以解决您的问题。不幸的是,我不知道直接禁用 apt-get 本身的 ipv6 查找的方法。

答案4

添加一行来/etc/hosts覆盖相关地址怎么样?例如,

130.89.149.226  ftp.debian.org      
195.20.242.89   security.debian.org 

相关内容