ここまでの手順で、USAGIマシンをルータにするための設定は完了です。次に、ネットワークに接続されるマシンを設定する必要があります。それには2通りの方法が挙げられます。
- コマンド類を駆使して接続用マシンの設定を行う(手動設定)
 
- ルータとなるUSAGIマシン上でradvdを動作させる(自動構成)
 
 ここでは、手動設定について説明します。ここで用いるマシンは、*BSD用のIPv6スタックであるKAMEがインストールされたマシンです。今回の場合は、FreeBSD-4.6 Releaseのマシンを使用しています。USAGIマシンを用いる場合は、ルータでのアドレス設定や経路設定の方法について、適宜読み替えてください。
■ネットワークインターフェイスに対するIPv6アドレスの付与
 実験用マシンについても、当然外部と通信可能なIPv6アドレスが必要になります。グローバルアドレスが必要なことから、表1で割り出したネットワークに属するアドレスを付与します。今回は、2001:2c0:418:1::2/64というアドレスをKAMEマシンに付与します。
      
         
          $ su root 
            # ifconfig vx0 inet6 add 2001:2c0:418:1::2/64 up | 
        
      
 vx0は、USAGIマシンと同じネットワークセグメントに接続されているインターフェイスの名前です。うまくIPv6アドレスがインターフェイスに追加されていれば、ifconfigの実行結果は、例えばリスト3のような形になります。
      
         
          # ifconfig vx0 
            vx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 
                    inet 61.197.226.211 netmask 0xfffffff8 broadcast 61.197.226.215 
                    inet6 fe80::220:afff:fed2:108%vx0 prefixlen 64 scopeid 0x1 
                    inet6 2001:2c0:418:1::2 prefixlen 64 
                    ether 00:20:af:d2:01:08 | 
        
         
          |  リスト3 ifconfig実行結果 | 
        
      
 IPv6アドレスを付与したら、すでにIPv6アドレスを付与されているUSAGIホストに対する通信が可能かどうかをping6コマンドを用いて確認します。通信が可能な場合は、例えば以下のような形でレスポンスがあります。
      
         
          ping6 2001:2c0:418:1::1 
            PING6(56=40+8+8 bytes) 2001:2c0:418:1::2 --> 2001:2c0:418:1::1 
            16 bytes from 2001:2c0:418:1::1, icmp_seq=0 hlim=64 time=220.409 ms 
            16 bytes from 2001:2c0:418:1::1, icmp_seq=1 hlim=64 time=0.377 ms 
            16 bytes from 2001:2c0:418:1::1, icmp_seq=2 hlim=64 time=0.376 ms 
            16 bytes from 2001:2c0:418:1::1, icmp_seq=3 hlim=64 time=0.374 ms 
            16 bytes from 2001:2c0:418:1::1, icmp_seq=4 hlim=64 time=0.373 ms 
            ^C 
            --- 2001:2c0:418:1::1 ping6 statistics --- 
            5 packets transmitted, 5 packets received, 0% packet loss 
            round-trip min/avg/max/std-dev = 0.373/44.382/220.409/88.014 ms | 
        
      
■経路の設定(スタティックルーティング)
 次にIPv6ネットワークに対する経路を追加するわけですが、まずデフォルトルートを追加する必要があります。これは、中編で紹介した経路を少しいじります。外部ネットワークと通信できるホストは、いまのところUSAGIマシンだけなので、このマシンを2000::/3と3ffe::/16のネットワークに対するゲートウェイとします。具体的には、routeコマンドを以下のように実行します。
      
         
          # route add -inet6 2000:: -prefixlen 2 2001:2c0:418:1::1 
            # route add -inet6 3ffe:: -prefixlen 16 2001:2c0:418:1::1 | 
        
      
 この結果、実験用IPv6マシンに対して設定されたIPv6ネットワーク用のルーティングテーブルはリスト4のようになります。
      
         
          Internet6: 
            Destination                     Gateway               Flags    Netif 
             Expire 
            ::/2                            2001:2c0:418:1::1     UGSc      vx0 
            ::1                             ::1                   UH        lo0 
            2001:2c0:418:1::/64             link#1                UC        vx0 
            2001:2c0:418:1::1               00:a0:24:56:97:89     UHLW      vx0 
            2001:2c0:418:1::2               00:20:af:d2:01:08     UHL       lo0 
            3ffe::/16                       2001:2c0:418:1::1     UGSc      vx0 
            fe80::%vx0/64                   link#1                UC        vx0 
            fe80::220:afff:fed2:108%vx0     00:20:af:d2:01:08     UHL       lo0 
            fe80::2a0:24ff:fe56:9789%vx0    00:a0:24:56:97:89     UHLW      vx0 
            fe80::%fxp0/64                  link#2                UC       fxp0 
            fe80::2d0:b7ff:fe13:c6b8%fxp0   00:d0:b7:13:c6:b8     UHL       lo0 
            fe80::%lo0/64                   fe80::1%lo0           Uc        lo0 
            fe80::1%lo0                     link#3                UHL       lo0 
            ff01::/32                       ::1                   U         lo0 
            ff02::%vx0/32                   link#1                UC        vx0 
            ff02::%fxp0/32                  link#2                UC       fxp0 
            ff02::%lo0/32                   ::1                   UC        lo0 | 
        
         
          |  リスト4 ルーティングテーブルの設定状況 | 
        
      
■実験用IPv6マシンからの対外接続の実施
 ここまでの設定に間違いがなければ、外部のIPv6ネットワークに対する接続が可能になっているはずです。telnetを用いて、www.kame.netのTCP/80番ポートに接続したうえで、OPTIONSメソッドを発行してみた様子をリスト5に示します。
      
         
           telnet 2001:200:0:4819:210:f3ff:fe03:4d0 80 
            Trying 2001:200:0:4819:210:f3ff:fe03:4d0... 
            Connected to 2001:200:0:4819:210:f3ff:fe03:4d0. 
            Escape character is '^]'. 
            OPTIONS / HTTP/1.0 
             
            HTTP/1.1 200 OK 
            Date: Sun, 02 Feb 2003 18:19:30 GMT 
            Server: Apache/2.0.43 (Unix) mod_ssl/2.0.43 OpenSSL/0.9.6g DAV/2 
            Allow: GET,HEAD,POST,OPTIONS,TRACE 
            Last-Modified: Tue, 28 Jan 2003 20:00:00 GMT 
            Content-Length: 0 
            Connection: close 
            Content-Type: text/html 
             
            Connection closed by foreign host. | 
        
         
          |  リスト5 telnetによる外部ネットワークへの接続テスト | 
        
      
 手動でIPv6対応のマシンをネットワークに参加させる方法は理解できたと思います。次は、 ルータとなるUSAGIマシン上でradvdを動作させ、自動構成する方法を説明します。
 IPv6では、「Neighbor Discovery for IP Version 6 (IPv6)」(RFC 2461)に記述されている機能を用いて、接続されるホストのネットワーク設定を自動的に構成することが可能です。具体的には、Router Advertisementと呼ばれる機能を用いて、ルータの所在(アドレス)とネットワークプリフィックスを接続されたホストに与えます。
■ホストの設定
 radvdを動かす前に、ルータとなるUSAGIマシンでRouter Advertisementパケットを受け取らない(受け取っても解釈しない)ようにしなくてはなりません。そのために、/proc/sys/net/ipv6/conf/all/accept_raを「0」に設定します。
      
         
          # echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra | 
        
      
 この設定を行わないと、ルータが出したRouter Advertisementパケットをルータ自身が受け取ってしまいます。
■radvdの設定
 Router Advertisementパケットを解釈しないようにしたら、次はradvdを稼働させます。
 USAGI STABLE Release 4のコマンドをインストールしたのであれば、/usr/local/v6/etc下にradvd.confというファイルを作成し、/usr/local/v6/sbin/radvdを起動すれば作業自体は完了します。以下に、radvdの設定ファイルであるradvd.confの内容を示します。
      
         
          interface eth0 
            { 
                    AdvSendAdvert on; 
             
                    MinRtrAdvInterval 3; 
                    MaxRtrAdvInterval 10; 
             
                    prefix 2001:02c0:0418:0001::/64 
                    { 
                            AdvOnLink on; 
                            AdvAutonomous on; 
                    }; 
            }; | 
        
         
           リスト6 radvd.conf 
            注: 
            ・Router Advertisementを行うネットワークがつながれているインターフェイスはeth0 
            ・Advertiseを行うネットワークプリフィックスは2001:02c0:0418:0001::/64 | 
        
      
■実験用IPv6マシンの設定
 実験用マシンについては、「OSがIPv6スタックを搭載していること」以外の条件は必要ありません。あえていうならば、Router Advertisementパケットを受け取って解釈できるようにしておく必要があります。
 KAMEマシンの場合、カーネルパラメータであるnet.inet6.ip6.accept_rtadvの値を1にすることで、Router Advertisementパケットを受け取れるようになります。この値が0の時点では、KAMEマシンのvx0のアドレス付与状況はリスト7、経路情報はリスト8のようになります。
      
         
          vx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 
                    inet 61.197.226.211 netmask 0xfffffff8 broadcast 61.197.226.215 
                    inet6 fe80::220:afff:fed2:108%vx0 prefixlen 64 scopeid 0x1 
                    ether 00:20:af:d2:01:08 | 
        
         
          |  リスト7 KAMEマシンのアドレス付与状況 | 
        
      
      
         
          #netstat -nr 
            (中略) 
            Internet6: 
            Destination                     Gateway               Flags    Netif 
             Expire 
            ::1                             ::1                   UH        lo0 
            fe80::%vx0/64                   link#1                UC        vx0 
            fe80::220:afff:fed2:108%vx0     00:20:af:d2:01:08     UHL       lo0 
            fe80::2a0:24ff:fe56:9789%vx0    00:a0:24:56:97:89     UHLW      vx0 
            fe80::%fxp0/64                  link#2                UC       fxp0 
            fe80::2d0:b7ff:fe13:c6b8%fxp0   00:d0:b7:13:c6:b8     UHL       lo0 
            fe80::%lo0/64                   fe80::1%lo0           Uc        lo0 
            fe80::1%lo0                     link#3                UHL       lo0 
            ff01::/32                       ::1                   U         lo0 
            ff02::%vx0/32                   link#1                UC        vx0 
            ff02::%fxp0/32                  link#2                UC       fxp0 
            ff02::%lo0/32                   ::1                   UC        lo0 | 
        
         
          |  リスト8 KAMEマシンの経路情報 | 
        
      
 以下のコマンドを実行し、Router Advertisementパケットを受け取れるようにするとどうなるかを見てみましょう。
      
         
          # sysctl -w net.inet6.ip6.accept_rtadv=1 | 
        
      
 インターフェイスに対してアドレスが付与されている状態をリスト9、経路が設定されている状態をリスト10に示します。
      
         
          ・IPv6アドレスが付与されている途中 
            vx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 
                    inet 61.197.226.211 netmask 0xfffffff8 broadcast 61.197.226.215 
                    inet6 fe80::220:afff:fed2:108%vx0 prefixlen 64 scopeid 0x1 
                    inet6 2001:2c0:418:1:220:afff:fed2:108 prefixlen 64 tentative 
            autoconf 
                    ether 00:20:af:d2:01:08 
             
            ・IPv6アドレスが付与された状態 
            vx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 
                    inet 61.197.226.211 netmask 0xfffffff8 broadcast 61.197.226.215 
                    inet6 fe80::220:afff:fed2:108%vx0 prefixlen 64 scopeid 0x1 
                    inet6 2001:2c0:418:1:220:afff:fed2:108 prefixlen 64 autoconf 
                    ether 00:20:af:d2:01:08 | 
        
         
          |  リスト9 KAMEマシンのアドレス付与状況 | 
        
      
      
         
          #netstat -nr 
            (中略) 
            Internet6: 
            Destination                      Gateway                      Flags  Netif 
             Expire 
            default                          fe80::2a0:24ff:fe56:9789%vx0 UGc     vx0 
            ::1                              ::1                          UH      lo0 
            2001:2c0:418:1::/64              link#1                       UC      vx0 
            2001:2c0:418:1:220:afff:fed2:108 00:20:af:d2:01:08            UHL     lo0 
            fe80::%vx0/64                    link#1                       UC      vx0 
            fe80::220:afff:fed2:108%vx0      00:20:af:d2:01:08            UHL     lo0 
            fe80::2a0:24ff:fe56:9789%vx0     00:a0:24:56:97:89            UHLW    vx0 
            fe80::%fxp0/64                   link#2                       UC     fxp0 
            fe80::2d0:b7ff:fe13:c6b8%fxp0    00:d0:b7:13:c6:b8            UHL     lo0 
            fe80::%lo0/64                    fe80::1%lo0                  Uc      lo0 
            fe80::1%lo0                      link#3                       UHL     lo0 
            ff01::/32                        ::1                          U       lo0 
            ff02::%vx0/32                    link#1                       UC      vx0 
            ff02::%fxp0/32                   link#2                       UC     fxp0 
            ff02::%lo0/32                    ::1                          UC      lo0 | 
        
         
          |  リスト10 KAMEマシンの経路情報 | 
        
      
 リスト7では設定されていなかった、「2001:」で始まるアドレスがvx0に対して付与され、リスト8では設定されていなかったデフォルトルート(default)が設定されているのが分かります。
 ここではデフォルトルートとして、リンクローカルアドレスであるfe80::2a0:24ff:fe56:9789%vx0が割り当てられていますが、これは基本的に同一リンク内で識別すべき性質のものであるため、特に問題にはなりません。
 なお、Router Advertisementを使ってIPアドレスの自動割り当てを実施する場合、128bitsのIPアドレスのうち、上位64bitsはRouter Advertisementの内容に従って設定され、下位64bitsはイーサネットインターフェイスの持つMACアドレスを基にして、EUI64形式で設定されます。
■WindowsマシンのIPv6クライアント設定
 radvdを稼働させた状態であれば、特に面倒な操作をしなくてもIPv6対応のクライアントを接続することが可能になります。
 クライアントOSでIPv6に対応している例としては、Windows XPがあります。Windows XPでIPv6を利用するには、http://www.microsoft.com/japan/windowsxp/pro/techinfo/administration/ipv6/default.aspのとおりに作業します。
 Windows 2000の場合は、IPv6 Technology Preview(http://msdn.microsoft.com/downloads/sdks/platform/tpipv6/start.asp)からダウンロード可能なhotfixを使用することになります。
 ただし、このhotfixはSP1が適用されたWindows 2000環境での使用のみ想定しているため、SP2、SP3が適用された環境で使用する場合は、ダウンロードしたファイルを展開すると作成されるsetup.exeを、さらに、
      
として展開し、展開された内容に含まれるhotfix.infを書き換えます。
      
という行を探し、「256」を「512」(SP2環境)もしくは「768」(SP3環境)と書き換えてから、hotfix.exeを実行します。
 Windows 2000用のIPv6スタックは、もともとPreview版であり、さらにMicrosoftが想定しているのとは異なる環境で稼働させるため、この方法を試すなら完全に自己責任となります(注)。
注:筆者の環境ではうまく動きましたが、ほかの環境でも動くという保証はありません。
 
  
 hotfixが適用され、再起動&ログオンがうまくいったら、[ローカルエリア接続のプロパティ]ダイアログボックスで[インストール]ボタンをクリックし、「プロトコル」で「Microsoft IPv6 Protocol」を選択して[OK]ボタンを押します。
 うまくいけば、画面3のようにIPv6プロトコルが追加されます。
画面3 IPv6プロトコルが追加された 
 設定の確認は、コマンドプロンプト上でipv6コマンドを実行することで行います(画面4)。実行結果をリスト11に示します。
画面4 ipv6コマンド 
      
         
          C:\>ipv6 if 
            Interface 4 (site 1): ローカル エリア接続 
              uses Neighbor Discovery 
              link-level address: 00-60-97-af-c8-fa 
                preferred address 2001:2c0:418:1:260:97ff:feaf:c8fa, 2591997s 
            /604797s (addrconf) 
                preferred address fe80::260:97ff:feaf:c8fa, infinite/infinite 
                multicast address ff02::1, 1 refs, not reportable 
                multicast address ff02::1:ffaf:c8fa, 2 refs, last reporter 
              link MTU 1500 (true link MTU 1500) 
              current hop limit 64 
              reachable time 38000ms (base 30000ms) 
              retransmission interval 1000ms 
              DAD transmits 1 
            Interface 3 (site 1): 6-over-4 Virtual Interface 
              uses Neighbor Discovery 
              link-level address: 61.197.226.212 
                preferred address fe80::3dc5:e2d4, infinite/infinite 
                multicast address ff02::1, 1 refs, not reportable 
                multicast address ff02::1:ffc5:e2d4, 1 refs, last reporter 
              link MTU 1280 (true link MTU 65515) 
              current hop limit 128 
              reachable time 30000ms (base 30000ms) 
              retransmission interval 1000ms 
              DAD transmits 1 
            Interface 2 (site 0): Tunnel Pseudo-Interface 
              does not use Neighbor Discovery 
              link-level address: 0.0.0.0 
                preferred address ::61.197.226.212, infinite/infinite 
              link MTU 1280 (true link MTU 65515) 
              current hop limit 128 
              reachable time 0ms (base 0ms) 
              retransmission interval 0ms 
              DAD transmits 0 
            Interface 1 (site 0): Loopback Pseudo-Interface 
              does not use Neighbor Discovery 
              link-level address: 
                preferred address ::1, infinite/infinite 
              link MTU 1500 (true link MTU 1500) 
              current hop limit 1 
              reachable time 0ms (base 0ms) 
              retransmission interval 0ms 
              DAD transmits 0 
             
            C:\>ipv6 nc 
            4: fe80::2a0:24ff:fe56:9789 00-a0-24-56-97-89 stale (router) 
            1:                ::1                   permanent 
             
            C:\>ipv6 rt 
            2001:2c0:418:1::/64 -> 4 pref 1 (lifetime 2591994s) 
            ::/0 -> 4/fe80::2a0:24ff:fe56:9789 pref 16 (lifetime 24s) 
            ::/96 -> 2 pref 0 (lifetime infinite) | 
        
         
          |  リスト11 IPv6コマンド実行結果 |