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 プライバシー拡張です (初回インストール時に IPv6 接続が検出された場合、Debian は 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 インターフェースを含むブロックを参照します。
そして service gogoc restartservice radvd start を実行すれば、IPv6 ネットワークが使えるはずです。