IPv6についてInternetWeek2008で勉強したことをまとめてみた

2009年、IPv6について変化が起きそうでそれほど起きなさそうで…でも、そろそろ勉強しておいた方がいいと感じてる。
そこで、2008年11月のInternetWeek2008でIPv6について勉強したことを少しまとめてみた。

IPv6ルータ設定前(IPv4ネットワークのみ有効)

C:\Users\hykt>ipconfig /all (説明に関係ない部分は省略)

Windows IP 構成

   ホスト名 . . . . . . . . . . . . : hykt-NOTE
   プライマリ DNS サフィックス . . . . . . . : subdomain.example.com
   ノード タイプ . . . . . . . . . . . . : ハイブリッド
   IP ルーティング有効 . . . . . . . . : いいえ
   WINS プロキシ有効 . . . . . . . . : いいえ
   DNS サフィックス検索一覧 . . . . . . : subdomain.example.com
                                       example.com

イーサネット アダプタ ローカル エリア接続:

   接続固有の DNS サフィックス . . . :
   説明. . . . . . . . . . . . . . . : Intel(R) PRO/100 VM Network Connection
   物理アドレス. . . . . . . . . . . : 00-0D-5E-XX-XX-XX
   DHCP 有効 . . . . . . . . . . . . : はい
   自動構成有効. . . . . . . . . . . : はい
   リンクローカル IPv6 アドレス. . . . : fe80::756c:XXXX:XXXX:XXXX%8(優先)
   IPv4 アドレス . . . . . . . . . . : 192.168.100.4(優先)
   サブネット マスク . . . . . . . . : 255.255.255.0
   リース取得. . . . . . . . . . . . : 2008年11月XX日 XX:04:33
   リースの有効期限. . . . . . . . . : 2008年11月XX日 XX:06:41
   デフォルト ゲートウェイ . . . . . : 192.168.100.1
   DHCP サーバー . . . . . . . . . . : 192.168.100.1
   DNS サーバー. . . . . . . . . . . : 202.243.XXX.XXX
   NetBIOS over TCP/IP . . . . . . . : 有効
  • リンクローカルアドレスのみ有効。
  • リンクローカルアドレスは、fe80::/64というアドレス。
  • 下位64ビットは自動生成も可能。例えば、EUI-64*1
  • VistaではEUI-64ではなく、ランダムに生成される。
  • EUI-64では、MACアドレスを11:22:33:44:55:66とすると、次の方法で文字列を生成する。
手順 文字列
上位24ビット(11:22:33)と下位24ビット(44:55:66)に分ける 11:22:33 と 44:55:66
両者の間にff:fe(16ビット分)を挿入する 11:22:33:ff:fe:44:55:66
上位から7ビット目を1にする*2 13:22:33:ff:fe:44:55:66
できあがり 13:22:33:ff:fe:44:55:66

IPv6 ルータ設定後(IPv6/IPv4両方のネットワークが有効)

C:\Users\hykt>ipconfig /all (説明に関係ない部分は省略)

Windows IP 構成

   ホスト名 . . . . . . . . . . . . : hykt-NOTE
   プライマリ DNS サフィックス . . . . . . . : subdomain.example.com
   ノード タイプ . . . . . . . . . . . . : ハイブリッド
   IP ルーティング有効 . . . . . . . . : いいえ
   WINS プロキシ有効 . . . . . . . . : いいえ
   DNS サフィックス検索一覧 . . . . . . : subdomain.example.com
                                       example.com

イーサネット アダプタ ローカル エリア接続:

   接続固有の DNS サフィックス . . . :
   説明. . . . . . . . . . . . . . . : Intel(R) PRO/100 VM Network Connection
   物理アドレス. . . . . . . . . . . : 00-0D-5E-XX-XX-XX
   DHCP 有効 . . . . . . . . . . . . : はい
   自動構成有効. . . . . . . . . . . : はい
   IPv6 アドレス . . . . . . . . . . . : 2001:db8::1000:756c:XXXX:XXXX:XXXX(優先)
   一時 IPv6 アドレス. . . . . . . . . : 2001:db8::1000:34bb:XXXX:XXXX:XXXX(優先)
   リンクローカル IPv6 アドレス. . . . : fe80::756c:XXXX:XXXX:XXXX%9(優先)
   IPv4 アドレス . . . . . . . . . . : 192.168.100.4(優先)
   サブネット マスク . . . . . . . . : 255.255.255.0
   リース取得. . . . . . . . . . . . : 2008年11月XX日 XX:04:33
   リースの有効期限. . . . . . . . . : 2008年11月XX日 XX:06:41
   デフォルト ゲートウェイ . . . . . : 192.168.100.1
   DHCP サーバー . . . . . . . . . . : 192.168.100.1
   DNS サーバー. . . . . . . . . . . : 202.243.XXX.XXX
   NetBIOS over TCP/IP . . . . . . . : 有効
  • ルータがRA(Router Advatisement)パケットを出す。
  • RAパケットに含まれているプレフィックス情報(上位64ビット,例では2001:db8::1000)を基に、IPv6アドレスと一時IPv6アドレスが決まる。
  • RAパケットの送信元アドレスを、デフォルトゲートウェイ(デフォルトルート)にする。
  • 一時IPv6アドレスは乱数から生成され7日毎に変わる。
  • Vistaでは、一時IPv6アドレスを優先して使用する。

ルータでIPv6を有効にするために設定したこと(YAMAHA RT58iの場合)

コマンド 設定内容
# ipv6 routing on IPv6ルーティングを有効化
# ipv6 lan2 address fe80::1/64 上流側/外側インターフェースのアドレスを設定
# ipv6 route default gateway fe80::ffff/64%lan2 IPv6ルーティングの経路の設定
# ipv6 lan1 prefix 2001:db8:0:1000::/64 下流側/内側インターフェースにプレフィクスを設定
# ipv6 prefix 1 2001:db8:0:1000::/64 RAパケット用のプレフィックスを設定
# ipv6 lan1 rtadv send 1 RAパケットを送出する設定
  • 資料とメモを元に書いているので、間違っているところがあるかも。
  • 下位64ビットの自動生成は、ルータが送出するRAパケットのm/o flagsで無効化できる。
  • m(Managed) flagは、RAパケットでデフォルトルートのみ設定。アドレスとDNSサーバはstaticまたはDHCPv6で設定。(ステートフル自動アドレス設定)
  • o(Otherconfig) flagは、RAパケットでアドレス(下位64ビットは自動生成)とデフォルトルートを設定。DNSサーバはstaticまたはDHCPv6で設定。(ステートレス自動アドレス設定)

いろいろなIPv6アドレス

呼び名 アドレスの例
グローバルユニキャストアドレス
(グローバルルーティングプレフィックス+サブネットID+インターフェースID)
いわゆるグローバルアドレス
2001:0db8::1000:1111:1111:1111:1111
リンクローカルアドレス
リンク(IPv4のブロードキャストドメイン)内で一意のアドレス。
ルータとの通信などで使用。
fe80::/10
ループバックアドレス ::1(最後が1)
未指定アドレス
アドレスが未割り当てのときの送信元アドレス
::(全部0)
マルチキャストアドレス(IPv4のブロードキャストアドレスに相当)
リンク(IPv4のブロードキャストドメイン)内の全てのIPv6ノード
(ルータ/端末/自分も含む)
ff02::1

インターフェースの設定からIPv6アドレスを見る

C:\Users\hykt>netsh interface ipv6 show address

インターフェイス 1: Loopback Pseudo-Interface 1

アドレス種類 DAD 状態  有効期間  優先有効期間 アドレス
---------  ----------- ---------- ---------- ------------------------
その他        設定            infinite   infinite ::1

インターフェイス 8: ローカル エリア接続

アドレス種類 DAD 状態  有効期間  優先有効期間 アドレス
---------  ----------- ---------- ---------- ------------------------
Temporary  設定         6d23h53m41s  23h53m41s 2001:db8::1000:34bb:XXXX:XXXX:XXXX
2a
Public     設定         29d23h53m41s 6d23h53m41s 2001:db8::1000:756c:XXXX:XXXX:XXXX
その他        設定            infinite   infinite fe80::756c:XXXX:XXXX:XXXX%8

一時IPv6アドレスに関する設定を見る

C:\Users\hykt>netsh interface ipv6 show privacy
アクティブ状態を照会しています...

一時アドレス パラメータ
---------------------------------------------
一時アドレスの使用                   : enabled
重複アドレスの検出の試み             : 5
有効期間の最大値                     : 7d
優先する有効期間の最大値             : 1d
再生成時間                           : 5s
ランダム時間の最大値                 : 10m
ランダム時間                         : 0s

近隣キャッシュ(neighbor cache)を見る

C:\Users\hykt>netsh interface ipv6 show neighbors

インターフェイス 1: Loopback Pseudo-Interface 1


インターネット アドレス                        物理アドレス       種類
--------------------------------------------  -----------------  -----------
ff02::16                                                         恒久
ff02::1:3                                                        恒久
ff02::1:XXXX:XXXX                                                恒久

インターフェイス 8: ローカル エリア接続


インターネット アドレス                        物理アドレス       種類
--------------------------------------------  -----------------  -----------
2001:db8::1000:2a0:deff:feXX:XXXX             00-a0-de-XX-XX-XX  到達可能 (ルーター)
fe80::2a0:deff:feXX:XXXX                      00-a0-de-XX-XX-XX  到達可能 (ルーター)
ff02::2                                       33-33-00-00-00-02  恒久
ff02::16                                      33-33-00-00-00-16  恒久
ff02::1:3                                     33-33-00-01-00-03  恒久
ff02::1:ffXX:XXXX                             33-33-ff-XX-XX-XX  恒久
ff02::1:ffXX:XXXX                             33-33-ff-XX-XX-XX  恒久
ff02::1:ffXX:XXXX                             33-33-ff-XX-XX-XX  恒久

IPv6IPv4が両方有効な場合の通信の優先順位を見る

C:\Users\hykt>netsh interface ipv6 show prefixpolicies
アクティブ状態を照会しています...

優先順位   ラベル  プレフィックス
----------  -----  --------------------------------
        50      0  ::1/128              (ループバック)
        40      1  ::/0                 (IPv6)
        30      2  2002::/16            (6to4)
        20      3  ::/96                (互換アドレス)
        10      4  ::ffff:0:0/96        (IPv4)
         5      5  2001::/32            (Toredo)
  • 優先順位の数値が大きい方が優先度が高い。

IPv4を優先して通信するよう設定する

netsh interface ipv6 add prefixpolicy ::ffff:0:0/96 60 4
netsh interface ipv6 add prefixpolicy ::/0 40 1

コマンドプロンプトを管理者として実行しないとダメだと思う。
これを実行すると、

netsh interface ipv6 show prefixpolicies
優先順位   ラベル  プレフィックス
----------  -----  --------------------------------
        60      4  ::ffff:0:0/96
        40      1  ::/0

…となるはず。

IPv4をアンインストールする

netsh interface ipv4 uninstall

これも、コマンドプロンプトを管理者として実行しないとダメだと思う。

その他…

  • IPv6アドレスは、そのまま表記すると長いので省略して表記できる。(IPv6の基本中の基本なので省略)
  • 文書用IPv6アドレスとして、2001:db8::/32 が用意されている。*3
  • Vistaでは、IPv6が有効になると、ネットワーク利用時にDNSクエリとしてAAAAレコードとAレコードの両方をルックアップする。
  • AAAAレコードが引けた場合、IPv6でアクセスする。AAAAレコードが引けたのに、IPv6でアクセスできない場合、IPv4でのアクセスに切り替わるのに約20秒かかる。(TCPフォールバック問題)


  • さて、実際には、どうやってIPv4からIPv6へ移行しようかな…。今持ってる知識で考えると、こんな感じかな…。
  • 基本的な考え方
    • まず、デュアルスタック*4での運用環境を構築を目指す。
  • 大まかな流れ
    • ISPからIPv6アドレスを割り当ててもらう
    • 組織内のプレフィクス(サブネット)の割り当てポリシーを検討する*5
    • アドレスの割り当てポリシーを検討する(ステートフル自動アドレス設定/ステートレス自動アドレス設定/DHCPv6/DHCPv6-PD)
    • ISPとの接続点でのL3SW/ルータでIPv6対応のものを導入する
    • その他ネットワーク機器の入れ替え時にはIPv6対応のものを導入する
    • ISPとの接続点からエッジのL3SW/ルータまでIPv6対応になれば、端末がデュアルスタック環境になる。
他にもあるだろうけど、とりあえず。
機器に関することより、プレフィクスとアドレスの割り当てポリシーの検討が重要だな。
インターフェースID(IPv4ホスト部に対応)が64bitもあるんじゃ、極端に考えると、アドレス割り当てだけならプレフィクス1つで組織全体が賄えるじゃん。
別の意味で考えると、今のIPv4アドレスに対応してプレフィクスを割り当ててもいいのか。*6
ん〜、なんだかそんな感じの運用が現実的な気がしてきたぞ。
でも…みんなホントにIPv6へ移行するんだよね?
来年の今頃、状況は変わっているのかな?
ていうか、僕自身が変わって(成長して)いるんだろうか?

*1: http://itpro.nikkeibp.co.jp/free/v6start/word_v6/20020325/1/

*2:ちゃんと意味がある→*1のリンクを参照

*3: http://www.nic.ad.jp/ja/translation/apnic/IPv6-Document-prefix.html

*4:IPv6IPv4の両方利用できる環境

*5:L3SW/ルータ同士のリンクセグメントは、リンクローカルアドレスで通信するのでグローバルアドレスを割り当てる必要がない。

*6:考え方としては、IPv4ブロードバンドルータを利用している場合に、WAN側がグローバルアドレスでLANがプライベートアドレスになっているのを、WAN側グローバスアドレスとしてIPv6プレフィックスを割り当てててしまう感じ。