說服 apt-get not 使用 IPv6 方法
我工作的 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
. 筆記:
- 這在比 APT 低得多的級別(DNS 和 IP 網路)上工作,因此它將改變您所有應用程序的網路方式——至少,所有使用
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
(否則它會永遠停止)。也可以看看:
- http://www.funtoo.org/wiki/IPv6_Networking#Prefer_IPv4_over_IPv6(存檔@ https://web.archive.org/web/20180905053005/https://www.funtoo.org/IPv6_Networking#Prefer_IPv4_over_IPv6)
- http://www.getipv6.info/index.php/Customer_problems_that_could_occur#GNU.2FLinux(存檔@ https://web.archive.org/web/20180920175314/https://getipv6.info/display/IPv6/IPv6+資訊+首頁#GNU.2FLinux )