私が働いているISPは、IPv6インターネットへの最終接続を準備するために内部IPv6ネットワークを確立しています。その結果、このネットワーク上の複数のサーバーはデフォルトでIPv6アドレスを介してsecurity.debian.orgに接続しようとしていますapt-get update
。これにより、すべての種類のアップデートをダウンロードするたびに待たなければならない長いタイムアウトが発生します。
IPv4を好むかIPv6を完全に無視するかをaptに通知する方法はありますか?
答え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::ForceIPv4
とAcquire::ForceIPv6
バージョンに追加0.9.7.9~exp1(望むよりエラー611891)はUbuntu Saucy(2013年10月リリース)およびDebian Jessie(2015年4月リリース)から入手できます。
答え2
〜のようにザイルズは言う、使用gai.conf
。メモ:
- APTよりはるかに低いレベル(DNSおよびIPネットワーキング)で動作するため、変更されます。みんなあなたのアプリケーションネットワーク - 少なくともすべて
getaddrinfo
。 - 編集する前に
gai.conf
バックアップして読んでください(短いので心配しないでください)。現在のファイルには、次の編集内容が記載されている可能性があります。現在のファイルが以下の内容と異なる内容を表す場合は、現在のファイルの内容を優先することをお勧めします。
しかし、それがあなたが望むものであれば(おそらくそうです)、次に進みます。 2つのホスト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
編集したファイルを保存した後(再起動する必要はありません)、IPV4を使用するネットワークアプリケーションが表示されますtelnet
(例:)。
$ 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
(そうでなければ永久に停止します)。
また見なさい:
- 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+Info+Home#GNU.2FLinux)
答え3
設定できます適切なキャッシャー-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