企業ネットワークでIPv6をテストしていて、OS Xに問題があります。telnet -6
やtraceroute6
などのほとんどのIPv6コマンドで、次のエラーが発生します。
connect: No route to Host
たとえば、Webサーバーがあります。これは失敗します:
$ telnet -6 fe80::… 80 # this fails
ping6
が機能するため、サーバーにアクセスできることがわかっています(-I
引数を使用する必要があることに注意してください)。
$ ping6 -I en1 fe80::… # this works
また、WindowsからTelnetを実行できるため、Webサーバーが実行されていることがわかります。
C:\> telnet fe80::… 80 # this works
いくつかの構成フラグまたはコマンドライン引数がないと思います。
Fe80 ::/16プレフィックスはリンクローカルアドレス用であり、特別です。実行してみてください
netstat -nr
oS Xおよび
netsh int ipv6 show routes
windowsの場合。 OS Xでは、ほとんどの場合、インターフェースごとに個別のfe80 ::ルートが表示されます。 lo0とen1の場合。 Windows(少なくとも、XP)はそのようには見えません。 OS Xには同じプレフィックスへの複数のルートがあるため、トラフィックを正しい方向に向けるには ゾーンインデックス を使用する必要があります。
$ telnet -6 fe80::…%en1 80
インターフェイスは、通常、複数のIPv6アドレスを持つことができます。リンクローカルアドレスはfe80 ::/16の範囲から自動的に作成され、ルーティングされません(ポイントツーポイント接続)。 Gerald Combsの言及 のように、使用するインターフェースを指定できない場合は、ゾーンインデックスを指定する必要があります。
通常の使用、およびローカルリンクを越えた接続の場合、インターフェイスにルーティング可能なアドレスを追加する必要があります。これは、ISP(またはSixXSやhe.netなどのトンネルプロバイダー)から独自のIPv6範囲を取得し、ルーターアドバタイズ、DHCPv6、または手動でデバイスに配布することで実行できます。
テストするだけの場合は、RFC4193に従ってこれに使用する必要があるfc00 ::/7の特別な「ユニークユニキャスト」IP範囲を使用することもできます。
このドキュメントでは、グローバルに一意であり、通常サイト内でのローカル通信を目的としたIPv6ユニキャストアドレス形式を定義しています。これらのアドレスは、グローバルインターネット上でルーティング可能ではない
this site をチェックしてください。これは、範囲を生成することから始めます。
リンクのローカルfe80 ::アドレスにバグを見つけたと思います。リンクローカルであるにもかかわらず、私のパブリックアドレスを使用して私のために動作します。
$ telnet -6 2001::xxx:: 80
Trying 2001::xxx::...
Connected to 2001::xxx::
Escape character is '^]'.
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Date: Thu, 30 Dec 2010 01:18:00 GMT
Server: Apache
Last-Modified: Sun, 30 May 2010 20:11:06 GMT
Accept-Ranges: bytes
Content-Length: 44
Connection: close
Content-Type: text/html
Connection closed by foreign Host.
実際のv6アドレスを取得してみてください。