22.16. IPv6

原作: Kaplan Aaron [FAMILY Given].
再構成と追記: Rhodes Tom [FAMILY Given].

IPv6 (IPng IP next generation とも呼ばれます) は、著名な IP プロトコル (IPv4 とも呼ばれます) の新しいバージョンです。 他の最新の *BSD システムと同様に FreeBSD は KAME IPv6 リファレンス実装を含んでいます。したがって、あなたの FreeBSD システムには IPv6を試すために必要なものすべてが備わっています。 この節では IPv6 の設定と実行に関して説明します。

1990 年代のはじめには、人々は IPv4 アドレス空間が急速に縮小していることに気づくようになりました。 インターネットの成長率が増大するにしたがって、 2 つの心配ごとがでてきました。

IPv6 は以下の、そしてその他多くの問題を扱います。

他にも以下のように IPv6 の便利な機能がたくさんあります。

詳細については下記を参照してください。

22.16.1. IPv6 アドレスの背景

いくつか違うタイプの IPv6 アドレスがあります。 ユニキャスト (Unicast)、エニーキャスト (Anycast) およびマルチキャスト (Multicast) です。

ユニキャストアドレスは周知のアドレスです。 ユニキャストアドレスへ送られたパケットは、 まさにそのアドレスに属するインターフェースに到着します。

エニーキャストアドレスはユニキャストアドレスと構文上判別不可能ですが、 インタフェース群に宛てられています。 エニーキャストアドレスに送られたパケットは (ルータメトリック的に) 最も近いインタフェースに到着します。 エニーキャストアドレスはルータでしか使ってはいけません。

マルチキャストアドレスはインタフェース群を識別します。 マルチキャストアドレスに送られたパケットは、 マルチキャスト群に属するすべてのインタフェースに到着します。

注記:

IPv4 のブロードキャストアドレス (通常 xxx.xxx.xxx.255) は、IPv6 ではマルチキャストアドレスで表現されます。

表22.2 予約された IPv6 アドレス
IPv6 アドレスプレフィックス長 (ビット)説明備考
::128 ビット不特定IPv4 の 0.0.0.0 参照
::1128 ビットループバックアドレスIPv4 の 127.0.0.1 参照
::00:xx:xx:xx:xx96 ビットIPv4 埋め込みアドレス下位の 32 ビットは IPv4 アドレスです。 IPv4 互換 IPv6 アドレス とも呼ばれます。
::ff:xx:xx:xx:xx96 ビットIPv4 射影 IPv6 アドレス下位の 32 ビットは IPv4 アドレスです。 IPv6 に対応していないホストに対するアドレスです。
fe80:: - feb::10 ビットリンクローカルIPv4 のループバックアドレス参照
fec0:: - fef::10 ビットサイトローカル
ff::8 ビットマルチキャスト
001 (基数 2)3 ビットグローバルユニキャストすべてのグローバルユニキャストアドレスはこのプールから割り当てられます。 はじめの 3 ビットは 001 です。

22.16.2. IPv6 アドレスを読む

正規の書式では x:x:x:x:x:x:x:x と表されます。それぞれの x は 16 ビットの 16 進数です。たとえば FEBC:A574:382B:23C1:AA49:4592:4EFE:9982 となります。

すべてゼロの長い部分文字列がアドレス内によく現れます。 そのため、そのような部分文字列は :: に短縮することができます。 たとえば、fe80::1 は正規形の fe80:0000:0000:0000:0000:0000:0000:0001 に対応します。

3 番目の形式は、最後の 32 ビットの部分を . を分割文字として使う、 なじみ深い IPv4 (10 進) 形式で書くことです。 たとえば 2002::10.0.0.1 は (16 進) 正規形の 2002:0000:0000:0000:0000:0000:0a00:0001 に対応し、同時に 2002::a00:1 と書くこととも等価です。

ここまで来れば、下記を理解することができるでしょう。

# ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
         inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
         inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
         ether 00:00:21:03:08:e1
         media: Ethernet autoselect (100baseTX )
         status: active

fe80::200:21ff:fe03:8e1%rl0 は自動的に設定されたリンクローカルアドレスです。 これは自動設定の一環として、 イーサネット MAC アドレスを変換したものを含んでいます。

IPv6 アドレス構造についての詳細は RFC3513 をご覧ください。

22.16.3. 接続

現在、他の IPv6 ホストおよびネットワークに接続するためには 4 つの方法があります。

  • 6bone 実験ネットワークに参加する。

  • 上流のプロバイダから IPv6 ネットワークの割り当てを受ける。 手順については、インターネットプロバイダに問い合わせてください。

  • IPv6 over IPv4 によるトンネル。

  • ダイアルアップ接続の場合 freenet6 port を使用する。

ここでは、現在もっともよく使われている方法と思われる 6bone へ接続する方法を説明します。

はじめに 6bone サイトをみて、 あなたに最も近い 6bone 接続先を見つけてください。 責任者に連絡すると、少しばかり運がよければ、 接続を設定する方法についての指示を受けられるでしょう。 多くのばあい、これには GRE (gif) トンネルの設定が含まれます。

訳注:

6bone は 3ffe:: (16 ビット) という IPv6 アドレスを割り振られた実験目的のネットワークでしたが、 2006 年 6 月に運用を停止することになっています。 他の商用や試験的な IPv6 接続サービスを探してください。

ここに gif(4) トンネルを設定する典型的な例を示します。

# ifconfig gif0 create
# ifconfig gif0
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
# ifconfig gif0 tunnel MY_IPv4_ADDR  HIS_IPv4_ADDR
# ifconfig gif0 inet6 alias MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR

大文字になっている単語を、 上流の 6bone ノードから受け取った情報に置き換えてください。

これでトンネルが確立されます。ping6(8)ff02::1%gif0 に送ることによって、トンネルが動作しているか確かめてください。 ping の応答を 2 つ受け取るはずです。

注記:

ff02:1%gif0 というアドレスに興味をそそられている場合のために説明すると、 これはマルチキャストアドレスです。 %gif0 は、ネットワークインタフェース gif0 上のマルチキャストアドレスが使用されるということを示しています。 マルチキャストアドレスに対して ping を送ったので、トンネルのもう一方の端も応答します。

ここまで来ると 6bone アップリンクに経路設定することは比較的簡単でしょう。

# route add -inet6 default -interface gif0
# ping6 -n MY_UPLINK
# traceroute6 www.jp.FreeBSD.org
(3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets
     1  atnet-meta6  14.147 ms  15.499 ms  24.319 ms
     2  6bone-gw2-ATNET-NT.ipv6.tilab.com  103.408 ms  95.072 ms *
     3  3ffe:1831:0:ffff::4  138.645 ms  134.437 ms  144.257 ms
     4  3ffe:1810:0:6:290:27ff:fe79:7677  282.975 ms  278.666 ms  292.811 ms
     5  3ffe:1800:0:ff00::4  400.131 ms  396.324 ms  394.769 ms
     6  3ffe:1800:0:3:290:27ff:fe14:cdee  394.712 ms  397.19 ms  394.102 ms

この出力はマシンによって異なります。 これで、あなたが www/mozilla のような IPv6 が利用可能なブラウザを持っていれば、 IPv6 サイト www.kame.net にいって踊るカメを見ることができるでしょう。

22.16.4. IPv6 世界の DNS

IPv6 のための新しい DNS レコードが 2 種類あります。

  • AAAA レコード

  • A6 レコード

AAAA レコードは簡単に使えます。

MYHOSTNAME           AAAA    MYIPv6ADDR

上記をプライマリゾーン DNS ファイルに加えて、 もらったばかりの IPv6 アドレスにホスト名を割り当ててください。 あなた自身で DNS ゾーンを管理していない場合は、 DNS プロバイダに頼んでください。 bind の最新バージョン (バージョン 8.3 および 9) は AAAA レコードに対応しています。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。

本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。