現在、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を一時的に強制することは可能ですか?
これは、ネットワークのデフォルトの動作であるため、すでに発生しているはずです。
ただし、実際には、邪魔になる可能性のある小さなことが1つか2つあります。仕組みは次のとおりです。
URLにアクセスしたい、たとえばwww.kame.net
。 DNSは、AAAA
とA
レコードを要求する必要があります。
AAAA
レコードが返されると、IPv6アドレスへの接続を試みます。
接続を確立できない場合(ホストがオフライン、IPv6接続がダウンしているなど)、またはAAAA
レコードが存在しない場合は、代わりにIPv4が使用されます。
次の場合に問題が発生する可能性があります。
AAAA
アドレスを返さない、正しく構成されていない、または古いDNSサーバーは、IPv6が使用されないことを意味します。
正しく構成されていないIPv6ネットワーク(たとえば、ルーティング可能なIPv6アドレス(リンクローカルアドレスではない)を持っているが、RAが検出されていない、またはRAがインターネットに接続されていない実際に、TCP/IPスタックがタイムアウトしてIPv4にフェイルバックするまで、最大90秒かかることがあり、事実上役に立たなくなります。
独自のDNSルックアップを実行する独自のアプリケーションを作成している場合、これはアプリケーションに作成する必要のある動作でもあります。ただし、これも当てはまる場合、IPv6のサポートはそれよりも少し複雑です(たとえば、IPv4上に構築されたログパーサーにはIPアドレス用の固定側の32ビットフィールドがありました。もちろん、それは私たちが最初のIPv6ネットワークを実装しました)。