web-dev-qa-db-ja.com

ブラウザでIPv4よりもIPv6を優先させるにはどうすればよいですか?

Miredoをインストールし、IPv6を起動して実行しているようです。 IPv6アドレスを指定すると、ホストをping6し、wgetまたはwebbrowserでWebページをダウンロードできますが、IPv4とIPv6の両方で提供されるホスト名を指定すると、ブラウザーは接続用のIPv4アドレスを選択します。

どうすればそれを変更し、ブラウザでIPv4ではなくIPv6を使用できるようにすることができますか?

いろいろと調べてみると、6to4/Teredoトンネルでは、ブラウザーがIPv6よりもIPv4を好むというヒントを見つけましたが、今のところ、その理由や方法を説明していません。

16
Grumbel

ブラウザがオプションを好むのではなく、オペレーティングシステムです。 標準 は、おおよそ次のような優先順位を定義します。

  1. ipv6
  2. ipv4
  3. 6to4-Traffic

これは、/etc/gai.conf(gaiはgetaddrinfoの略で、ホスト名を解決するための標準システムコール)のラベル/優先順位ブロックを編集することで変更できます。

gai.confの詳細な説明は manページ にあります。

ちなみに、これはSinatトンネルが6to4よりも好まれたというJonathonの経験も説明しています。

10
freddyb

Firefoxおよびその他のMozilla/Geckoベースのブラウザの場合、IPv6がある場合はnetwork.dns.disableIPv6about:config設定はfalseでなければなりません(Ubuntuではデフォルトでtrueに設定されています。ホームルーターのバグのあるDNSプロキシで問題が発生します)。

7
JanC

Freddybが指摘したように、これは、ホスト名を解決する標準システムコールの構成getaddrinfoに依存します。

問題を解決するには、/etc/gai.confのコンテンツを次の行に置き換えます。

label ::1/128       0
label ::/0          1
label 2002::/16    2
label ::/96         3
label ::ffff:0:0/96 4
label fec0::/10     5
label fc00::/7      6
#label 2001:0::/32   7

updated:前の応答が間違っていたことを指摘するためのthx to freddyb:3行目ではなく、最後の行にコメントする必要があります。今ではうまくいきます!

6
pklaus

最近、Chrome、Firefox、および派生ブラウザは、サイトがIPv4よりも高速に応答する場合、実際にはIPv6を回避します。構成設定を使用してこの動作を変更することはできません。

この機能自体は一般的なユーザーにとっておそらく妥当なものですが、それを無効にできないことはほとんど私を怒らせます。現在、IPv6接続は非常に優れており、トンネリングによる遅延が大きい場合でも、IPv6にはIPv4を介した接続に比べていくつかの利点があります。私は長年IPv6でブラウジングしてきましたが、IPv6のルーティングとパフォーマンスはずっと良くなっていますが、このひどいブラウザの「ハック」機能は10年前に戻ってきました。

6
MegaGuest

OK、私はこれを調べてきましたが、奇妙です。

1)ローカルプロキシを使用します。
マシンで実行されているSquidを介してプロキシするようにFirefoxを設定した場合、Firefox(より正確にはSquid)はmiredoトンネルを介して接続します。 miredoがインストールされているが、Firefoxが「プロキシなし」に設定されている場合、Firefoxは最初にIPV4を使用します。

2)aiccuをインストールする
 aiccuをインストールしてトンネル(SiXXSなど)を設定すると、プロキシ設定に関係なく、IPV6がFirefoxで最初に使用されます。

MiredoはIPV6サイトに接続するために存在するため、IPV4が利用できない場合にのみ使用される可能性があります。その場合、aiccuを試してください。

2
Jonathon

答えは簡単です。ラベルを変更します。

label 2002::/16    1
label 2001:0::/32   1

これにより、「Vanilla」ipv6と同等になります。

コメントアウトしたままにすると、デフォルト値が選択されます。

1
Stoat