web-dev-qa-db-ja.com

IPv6からIPv4へのフォールバック

現在、IPv4経由でインターネットに接続しています。sixxs.netからトンネルを使用しており、サブネットとIPv6の1つをeth0インターフェイスに割り当てています。

したがって、eth0にはIPv4とIPv6があります。

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:02:XX:XX:61:36 brd ff:ff:ff:ff:ff:ff
    inet XXX.XXX.0.22/24 brd XXX.XXX.0.255 scope global eth0
    inet6 2a01:XXXX:XXXX::1/64 scope global 
       valid_lft forever preferred_lft forever

私がいくつかに接続しようとしているとき。 IPv6対応のWebサイトであれば問題ありませんが、IPv6をお勧めしますが、何かが起こってIPv6が利用できない場合は、IPv4にフォールバックしたいと思います。それは可能ですか?

または、プログラムがサポートしていない場合でも(たとえば、-4オプションで)ユーザーにIPv6ではなくIPv4を一時的に強制することは可能ですか?

2
Ency

これは、ネットワークのデフォルトの動作であるため、すでに発生しているはずです。

ただし、実際には、邪魔になる可能性のある小さなことが1つか2つあります。仕組みは次のとおりです。

  1. URLにアクセスしたい、たとえばwww.kame.net。 DNSは、AAAAAレコードを要求する必要があります。

  2. AAAAレコードが返されると、IPv6アドレスへの接続を試みます。

  3. 接続を確立できない場合(ホストがオフライン、IPv6接続がダウンしているなど)、またはAAAAレコードが存在しない場合は、代わりにIPv4が使用されます。

次の場合に問題が発生する可能性があります。

  1. AAAAアドレスを返さない、正しく構成されていない、または古いDNSサーバーは、IPv6が使用されないことを意味します。

  2. 正しく構成されていないIPv6ネットワーク(たとえば、ルーティング可能なIPv6アドレス(リンクローカルアドレスではない)を持っているが、RAが検出されていない、またはRAがインターネットに接続されていない実際に、TCP/IPスタックがタイムアウトしてIPv4にフェイルバックするまで、最大90秒かかることがあり、事実上役に立たなくなります。

独自のDNSルックアップを実行する独自のアプリケーションを作成している場合、これはアプリケーションに作成する必要のある動作でもあります。ただし、これも当てはまる場合、IPv6のサポートはそれよりも少し複雑です(たとえば、IPv4上に構築されたログパーサーにはIPアドレス用の固定側の32ビットフィールドがありました。もちろん、それは私たちが最初のIPv6ネットワークを実装しました)。

3
Mark Henderson