IPv6 は IPv4 の後継で、IP プロトコルの新しいバージョンで、IPv4 の欠点 (中でも注目すべきは利用できる IP アドレスの枯渇) を解決するために設計されました。IPv6 はネットワーク層で動きます。そして IPv6 の目的はマシンをアドレス指定する方法を提供すること、目標の宛先にデータを伝達すること、必要ならばデータの断片化を取り扱うことです (言い換えれば、経路で使われるネットワークリンクに従ってパケットをあるサイズのチャンクに分割し、到着した時に適切な順番にチャンクを再構築することです)。
Debian カーネルは IPv6 をコアカーネルでサポートします (ipv6
という名前でコンパイルされたモジュールを使って IPv6 をサポートする一部のアーキテクチャを除きます)。ping
、traceroute
などの基本ツールには IPv6 用の ping6
、traceroute6
などの代替品があり、これらはそれぞれ iputils-ping、iputils-tracepath パッケージに含まれます。
IPv6 ネットワークは IPv4 と同様に /etc/network/interfaces
で設定します。しかし、ネットワークをグローバルに利用できるようにしたい場合、グローバル IPv6 ネットワークへのトラフィックを中継するための IPv6 を取り扱うことができるルータを持っていなければいけません。
例 10.10 IPv6 設定の例
iface eth0 inet6 static
address 2001:db8:1234:5::1:1
netmask 64
# 自動設定の無効化
# autoconf 0
# ルータが自動設定されており、ルータが固定アドレスを持っていない場合は
# accept_ra 1 を有効化してください。それ以外の場合は以下を有効化してください。
# gateway 2001:db8:1234:5::1
IPv6 サブネットのネットマスクは通常 64 ビットです。これは、サブネットの中に 2
64 個の異なるアドレスが存在することを意味します。この特徴のおかげで、インターフェースの MAC アドレスに基づいたアドレスを選ぶステートレスアドレス自動設定 (
SLAAC) を使うことが可能です。ネットワークで
SLAAC が有効化されコンピュータで IPv6 が有効化された場合、デフォルトでカーネルは自動的に IPv6 ルータを探してネットワークインターフェースを設定します。
SLAAC の挙動はプライバシーを推測される危険性をはらんでいます。たとえばラップトップでネットワークを頻繁に切り替える場合、公開 IPv6 アドレスの一部に
MAC アドレスを含めたくないかもしれません。SLAAC のせいで、異なるネットワーク上の同じデバイスを容易に識別できるようになります。この問題に対する解決策が IPv6 プライバシー拡張です (初回インストール時に IPv6 接続が検出された場合、Debian は IPv6 プライバシー拡張をデフォルトで有効化します)。IPv6 プライバシー拡張を使うとインターフェースにランダムに生成されたアドレスを割り当て、定期的にこれを変更し、外部に出る接続にはこのアドレスを使うようになります。外部から入ってくる接続は SLAAC で生成されたアドレスを使うことも可能です。以下の例では
/etc/network/interfaces
の中で IPv6 プライバシー拡張を有効化しています。
例 10.11 IPv6 プライバシー拡張
iface eth0 inet6 auto
# 外部へ接続する際にランダムに割り当てられたアドレスを使います。
privext 2
IPv6 接続は IPv4 と同様の方法で制限することが可能です。すなわち 標準的な Debian カーネルは IPv6 用の netfilter に対応しています。IPv6 対応の netfilter を設定するには IPv4 でやったのと同様の方法を使います。ただし、iptables
の代わりに ip6tables
を使います。
ネイティブ IPv6 接続が利用できない場合、IPv4 上のトンネルを経由する代替法が使われます。gogo6 はこのようなトンネルの (無料) プロバイダです。
Freenet6 トンネルを使うには、ウェブサイトから Freenet6 Pro アカウントを登録し、gogoc パッケージをインストールし、トンネルを設定します。/etc/gogoc/gogoc.conf
ファイルを編集する必要があります。具体的に言えば、電子メールで受け取った userid
と password
行を追加し、server
を authenticated.freenet6.net
に置き替えます。
IPv6 接続をローカルネットワークのすべてのマシンに提供するには、以下の 3 つの指示文を /etc/gogoc/gogoc.conf
ファイルに追加します (ここで、ローカルネットワークは eth0 インターフェースに接続されていると仮定します)。
host_type=router
prefixlen=56
if_prefix=eth0
これでマシンは 56 ビットのプレフィックスを持つサブネット用のアクセスルータになります。Freenet6 トンネルが設定変更を検出したら、ローカルネットワークに設定変更を通知しなければいけません。これを行うには radvd
デーモン (同名のパッケージに含まれます) をインストールします。radvd
IPv6 設定デーモンは IPv4 で言うところの dhcpd
と同様の役割を果たします。
/etc/radvd.conf
設定ファイルを作成しなければいけません (ひな形の /usr/share/doc/radvd/examples/simple-radvd.conf
を参照してください)。Freenet6 を使う場合、プレフィックス設定を Freenet6 から提供されたものに変更するだけで十分です。プレフィックスを探すには ifconfig
コマンドの出力から tun
インターフェースを含むブロックを参照します。
この後 service gogoc restart
と service radvd start
を実行すれば、IPv6 ネットワークが使えるはずです。