22.16. IPv6
戻る | 第22章 高度なネットワーク | 次へ

## 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 つの心配ごとがでてきました。

- アドレスの枯渇。 今日では、プライベートアドレス空間 (`10.0.0.0/8`, `192.168.0.0/24` など) およびネットワークアドレス変換 (NAT) が使用されているので、それほど心配されていません。

- ルーティングテーブルのエントリが大きくなりすぎていました。 これは今でも心配な事柄です。

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

- 128 bit アドレス空間。言い換えると、理論上 340,282,366,920,938,463,463,374,607,431,768,211,456 個のアドレスが利用可能です。これは地球上の一平方メータあたり、 およそ 6.67 * 10^27 個の IPv6 アドレスがあることを意味します。

- ルータは、 ルーティングテーブル内にネットワーク集約アドレスだけを格納することで、 ルーティングテーブルの平均を 8192 項目程度に減らします。

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

- アドレス自動設定 (RFC2462)

- エニーキャスト (anycast) アドレス (「one-out-of many」 訳注: 複数の異なるノードが応答する 1 つのアドレス。 RFC2526 を参照してください)。

- 強制マルチキャストアドレス

- IPsec (IP セキュリティ)

- シンプルなヘッダ構造

- モバイル IP

- IPv4 から IPv6 への移行手段

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

- Sun.com の IPv6 概観

- IPv6.org

- KAME.net

- 6bone.net

### 22.16.1. IPv6 アドレスの背景

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

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

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

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

### 注記:

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

表22.2 予約された IPv6 アドレス

IPv6 アドレス | プレフィックス長 (ビット) | 説明 | 備考
--- | --- | --- | ---
`::` | 128 ビット | 不特定 | IPv4 の `0.0.0.0` 参照
`::1` | 128 ビット | ループバックアドレス | IPv4 の `127.0.0.1` 参照
`::00:xx:xx:xx:xx` | 96 ビット | IPv4 埋め込みアドレス | 下位の 32 ビットは IPv4 アドレスです。 「IPv4 互換 IPv6 アドレス」 とも呼ばれます。
`::ff:xx:xx:xx:xx` | 96 ビット | 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 レコードに対応しています。

戻る | 上に戻る | 次へ
22.15. パラレルライン IP (PLIP) | ホーム | パート V. 付録

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

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