Apt

說服 apt-get not 使用 IPv6 方法

  • December 11, 2021

我工作的 ISP 正在建立一個內部 IPv6 網路,為最終連接到 IPv6 網際網路做準備。結果,該網路中的幾台伺服器現在在執行時預設嘗試通過其 IPv6 地址連接到 security.debian.org apt-get update,這導致每當我下載任何類型的更新時都必須等待很長時間的超時.

有沒有辦法告訴 apt 要麼更喜歡 IPv4,要麼完全忽略 IPv6?

-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::ForceIPv4並被Acquire::ForceIPv6添加到版本0.9.7.9~exp1(參見錯誤 611891),該版本自 Ubuntu Saucy(2013 年 10 月發布)和 Debian Jessie(2015 年 4 月發布)以來可用。

正如Gilles 所說,使用gai.conf. 筆記:

  1. 這在比 APT 低得多的級別(DNS 和 IP 網路)上工作,因此它將改變您所有應用程序的網路方式——至少,所有使用getaddrinfo.
  2. 在編輯你的之前gai.conf,你應該備份它,並閱讀它(別擔心,它很短)。您目前的文件中可能已經提到了以下編輯;如果目前文件指示的內容與下面提到的不同,您可能應該更喜歡目前文件中的內容。

但是,如果這是您想要的(它可能是),讓我們繼續。假設我們有兩個主機www.he.netwww.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

如果我們只想為 IPV6www.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(否則它會永遠停止)。


也可以看看:

引用自:https://unix.stackexchange.com/questions/9940