本文へジャンプ

IPv6を計算機に設定する

 IPv6に関する設定を、各計算機ごとに整理します。

Windows XP SP2

 Windows XP SP2は標準でIPv6に対応していますが、デフォルトではIPv6機能は有効になっていません。

IPv6有効

C:\>ipv6 install

WindowsにおけるIPv6ネットワーク設定コマンド

 ipv6コマンドおよびnetshコマンドの2種類の体系がありますが、今後のWindows Vistaではipv6コマンド体系は廃止となり、netshコマンド体系に一本化されていきます。そこで、本ページでは極力netshコマンド体系を用いることにします。

IPv6アドレス自動構成

 IPv6では、リンクローカルに流されるルーター・アドバータイズメント(RA)のプレフィックスに基づき自分のアドレスを自動生成します。マシン起動時にRAが流れてこなくても、マシン実行中にRAが流れてくるとその時点からIPv6グローバルアドレスが生成されます。
 IPv6自動構成では、ルーター・アドバータイズメント(RA)のプレフィックスに基づく2種類のグローバルIPアドレスが生成されます。一つは、ネットワーク・インタフェース・カード(NIC)に振られたMACアドレスから生成する64bitのインタフェースIDを持つIPアドレスです。もう一つは、乱数を用いて生成する64bitのインタフェースIDを持つIPアドレスです。後者の乱数を用いて生成するアドレスは、MACアドレスなどの機器固有情報を用いたIPアドレスではどの機器が通信しているかがわかってしまうために設けられた仕様です(RFC 3041)。
 WindowsXPの場合、IPv6匿名アドレスを保持していると、TCPの接続をWindowsXPマシンから外部へかける場合(outbound)、発信元IPアドレスとしてこの匿名アドレスがデフォルトで設定されます。

匿名アドレスの抑制
 匿名アドレスを生成しないように設定するには、以下のコマンドを使用します。
C:\>netsh interface ipv6 set privacy state=disabled
OK
C:\>

IPv6アドレス手動構成

 IPv6アドレスを自動構成ではなく、手動で構成することができます。コマンドとしては、netshコマンドのipv6 add addressを使用します。
C:\>netsh interface ipv6 add address 7 2001:db8::2
OK
C:\>
 ここで指定している'7'は、ネットワーク・インタフェースのインデックス値です。インデックス値ではなく、インタフェース名(文字列)で指定することもできます。
C:\>netsh interface ipv6 add address "ローカル エリア接続" 2001:db8::2
OK
C:\>
Windows OSのIPv6ネットワーク・インタフェースは仮想のものを含めて複数種類存在します。IPv6アドレスはネットワーク・インタフェースに対して付与します。
 毎回起動時にこのアドレスを構成するようにするには、これをコマンド・スクリプトファイル(.cmd)に記述し、コントロールパネルのタスクから起動時にこのスクリプトファイルを実行するよう設定します。

 ネットワークアドレスを削除するには、delete addressを使用します。
C:\>netsh interface ipv6 delete address 7 2001:db8::2
OK
C:\>


ネットワーク一覧

 ネットワーク・インタフェースの一覧を表示するには、以下のコマンドを使用します。
C:\>netsh interface ipv6 show interface
アクティブ状態を照会しています...
Idx  Met   MTU    State         Name
---  ----  -----  ------------  -----
  8     2   1280  Disconnected  Teredo Tunneling Pseudo-Interface
  7     0   1500  Connected     ローカル エリア接続
  6     0   1500  Disconnected  ローカル エリア接続 2
  5     0   1500  Connected     VMware Network Adapter VMnet1
  4     0   1500  Connected     VMware Network Adapter VMnet8
  3     1   1280  Connected     6to4 Pseudo-Interface
  2     1   1280  Connected     Automatic Tunneling Pseudo-Interface
  1     0   1500  Connected     Loopback Pseudo-Interface
C:\>
 上記の実行例では、VMwareをインストールしているので、VMware用の仮想ネットワークが生成されています(インデックス4,5)。また、NICが2つあるので、ローカル エリア接続が2つ存在しますが、うち1つにしかLANケーブルを接続しておりません。

RA送出設定

 Windows XPマシンからRAをネットワークに流すことが出来ます。
 まずは、RAで送出するアドレスのプレフィックスを登録します。
C:\>netsh interface ipv6 add route prefix=fd3d:0123:4567:89ab::/64 6 publish=yes
 ここで、プレフィックスの直後に付与する値(上記例では'6')は、ネットワークのインデックス値で、RAをどのインタフェースの先に送出するかを指定しています。ネットワークインデックスはipconfigコマンドで一覧できるので、送出先のLANに該当するインデックスを探して指定します。
 続いて、RAの送出を有効にします。
C:\>netsh interface ipv6 set interface 6 advertise=enabled

参考文献


Solaris 10

 Solaris 10は標準でIPv6に対応していますが、インストール時にIPv6を無効と設定している場合は有効になりません。この場合には、/etc/hostname6.xxx のファイルを作成します。なお、xxxの部分はマシン固有のインタフェース名に置き換えます。


IPv6アドレス手動設定

 IPv6アドレスを自動構成ではなく、手動で構成することができます。設定するIPv6アドレスは、/etc/hostname6.xxxのファイルに記述します。xxx部分はマシン固有のインタフェース名に置き換えてください。
addif fd3d:0123:4567:89ab::1/64 up
addifで、インタフェースにIPv6アドレスを設定します。

RA送出設定

/etc/inet/ndpd.confに設定を記述します。

ifdefault AdvSendAdvertisements true
prefixdefault AdvOnLinkFlag on AdvAutonomousFlag on

if sfe0 AdvSendAdvertisements 1
prefix fd3d:0123:4567:89ab::0/64 sfe0

CentOS 5
OS起動時の設定ファイル・スクリプトの実行関係
/etc/rc.d/init.d/network が起動時のネットワーク設定を実施します。実施の過程で以下の2つの設定ファイルを参照します。
  • /etc/sysconfig/network
  • /etc/sysconfig/network-scripts/ifcfg-eth0
※ 上記朱記下線部分(デバイス名)は、計算機のインタフェースによって変わります。

IPv6自動構成

RAにより自動でアドレスを割り付ける場合の設定です。
(1) /etc/sysconfig/networkの記述
    NETWORKING=yes
    NETWORKING_IPV6=yes
(2) /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=yes

IPv6自動構成+RFC3041プライバシ拡張アドレス設定

標準のIPv6自動構成アドレスは、MACアドレスが解析可能な形式で埋め込まれています。RFC3041では、アドレス生成時に固定の識別子ではなく、ランダムな識別子を用いた一時的アドレスの生成を定義しています。
(1) /etc/sysconfig/networkの記述
    NETWORKING=yes
    NETWORKING_IPV6=yes
(2) /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=yes
IPV6_PRIVACY=rfc3041

IPv6アドレス手動設定

 IPv6アドレスを自動構成ではなく手動で構成する場合の設定です。
(1) /etc/sysconfig/networkの記述
    NETWORKING=yes
    NETWORKING_IPV6=yes
(2) /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=2001:db8::123/64

RA送出

Linux系OSでは、Router Advertisement Daemon(略称 radvd)を使うのが一般的です。
インストールされていなければ、各OSのパッケージシステムでインストールします。
# yum install radvd
radvdの設定ファイルは、/etc/radvd.confに記述します。
interface eth0
{
    AdvSendAdvert on;
    MinRtrAdvInterval 30;
    MaxRtrAdvInterval 100;

    prefix 2001:db8::/64 {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
    };
};
起動時にradvdを実行するように、設定を行います。
# /sbin/chkconfig radvd on
# /sbin/chkconfig --list radvd
radvd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
#

radvdは、ipforwadingが無効だと起動しません。そこで、/etc/sysctl.confに以下を追記します。
net.ipv6.conf.all.forwarding = 1


参考文献