Product SiteDocumentation Site

10.5. IPv6

IPv6 は IPv4 の後継で、IP プロトコルの新しいバージョンで、IPv4 の欠点、中でも注目すべきは利用可能な IP アドレスの不足、を修正するために設計されました。IPv6 プロトコルはネットワーク層で動きます; IPv6 の目的は、マシンをアドレス指定する方法を提供すること、目標の宛先にデータを伝達すること、必要ならばデータの断片化をを取り扱うこと、です (言い換えれば、経路で使われるネットワークリンクに従ってパケットをあるサイズのチャンクに分割し、到着した時に適切な順番にチャンクを再構築することです)。
Debian カーネルは IPv6 をコアカーネルでサポートします (ipv6 という名前でコンパイルされたモジュールでポートする一部のアーキテクチャを除きます)。pingtraceroute などの基本ツールには IPv6 用の ping6traceroute6 などの代替品があり、これらはそれぞれ iputils-pingiputils-tracepath パッケージに含まれます。
IPv6 ネットワークは IPv4 と同様に /etc/network/interfaces で設定します。しかし、ネットワークをグローバルに利用可能にしたい場合、グローバル IPv6 ネットワークへのトラフィックを中継するための IPv6 を取り扱う事ができるルータを持っていなければいけません。

例10.10 IPv6 設定の例

iface eth0 inet6 static
    address 2001:db8:1234:5::1:1
    netmask 64
    # Disabling auto-configuration
    # autoconf 0
    # The router is auto-configured and has no fixed address
    # (accept_ra 1). If it had:
    # gateway 2001:db8:1234:5::1
IPv6 サブネットのネットマスクは通常 64 ビットです。これは、サブネットの中に 264 個の異なるアドレスが存在することを意味します。この特徴のおかげで、インターフェイスの MAC アドレスに基づいたアドレスを選ぶ、ステートレスアドレス自動設定 (SLAAC) を使うことが可能です。ネットワークで SLAAC が有効化され、コンピュータで IPv6 が有効化された場合、デフォルトでカーネルは自動的に IPv6 ルータを探して、ネットワークインターフェイスを設定します。
SLAAC の挙動はプライバシーを推測される危険性をはらんでいます。例えばラップトップでネットワークを頻繁に切り替える場合、公開 IPv6 アドレスの一部に MAC アドレスを含めたくないかもしれません。SLAAC のせいで、異なるネットワーク上の同じデバイスを容易に識別可能になります。この問題に対する解決策が IPv6 プライバシー拡張です。これを使うと、インターフェイスにランダムに生成されたアドレスを割り当て、定期的にこれを変更し、外部に出る接続にはこのアドレスを使う、ようになります。外部から入ってくる接続は SLAAC で生成されたアドレスを使うことも可能です。以下の例では /etc/network/interfaces の中で IPv6 プライバシー拡張を有効化しています。

例10.11 IPv6 プライバシー拡張

iface eth0 inet6 auto
    # Prefer the randomly assigned addresses for outgoing connections.
    privext 2
IPv6 接続は IPv4 と同様の方法で制限することが可能です: 標準的な Debian カーネルは IPv6 用の netfilter に対応しています。IPv6 対応の netfilter を設定するには IPv4 でやったのと同様の方法を使います。ただし、iptables の代わりに ip6tables を使います。

10.5.1. トンネル

ネイティブ IPv6 接続が利用可能でない場合、IPv4 上のトンネルを経由する代替法が使われます。Gogo6 はこのようなトンネルの (無料) プロバイダです:
Freenet6 トンネルを使うには、ウェブサイトから Freenet6 Pro アカウントを登録し、gogoc パッケージをインストールし、トンネルを設定します。/etc/gogoc/gogoc.conf ファイルを編集する必要があります: 電子メールで受け取った useridpassword 行を追加し、serverauthenticated.freenet6.net に置き替えます。
IPv6 接続をローカルネットワークの全てのマシンに提供するには、以下の 3 つの指示文を /etc/gogoc/gogoc.conf ファイルに追加します (ここで、ローカルネットワークは eth0 インターフェイスに接続されていると仮定します):
host_type=router
prefixlen=56
if_prefix=eth0
マシンは 56 ビットのプレフィックスを持つサブネット用のアクセスルータになります。ローカルネットワークは、トンネルの変更を通知しなければいけません; これは radvd デーモン (同名のパッケージが提供する) をインストールすることを意味します。この IPv6 設定デーモンは IPv4 で言うところの dhcpd と同様の役割を果たします。
/etc/radvd.conf 設定ファイルを作成しなければいけません (雛形の /usr/share/doc/radvd/examples/simple-radvd.conf 参照)。Freenet6 を使う場合、プレフィックス設定を Freenet6 から提供されたものに変更するだけで十分です; プレフィックスを探すには ifconfig コマンドの出力から tun インターフェイスを含むブロックを参照します。
そして /etc/init.d/gogoc restart/etc/init.d/radvd start を実行すれば、IPv6 ネットワークが使えるはずです。