IPv6について

IPv6の利点

  • アドレスがいっぱいというかほぼ無限大(おかげで世界の人口で割っても1人あたり5×10^28個も持てる
  • ヘッダがシンプルに(おかげで中間ルータは処理しやすく
    • v4の「オプション」がIPデータ部分へ「拡張ヘッダ」として移動(おかげでv6のヘッダは固定長40byteに
    • いらないフィールドを削除(おかげでアドレス以外の部分が16byteから8byteに
    • フラグメントフィールドもなくなった(上位でフラグメント化してもらう
    • エラー検出も上位におまかせ
  • フローにラベルが付けられる

IPv6アドレス

  • 基本的に前半64bitのプレフィックスと後半64bitのインタフェースIDに分けられる
  • プレフィックスはプロバイダからもらい,インタフェースIDは自分でどうにかする
    • プレフィックス
      • ex. 3ffe:2002:0:1000::/64
    • インターフェースIDの作り方 (EUI-64
      1. MACアドレスを用意する (12:34:56:AB:CD:EF
      2. 24bitで分割 (12:34:56: | :AB:CD:EF
      3. 間にff:feを入れる (12:34:56: ff:fe :AB:CD:EF
      4. 先頭8ビットを取り出して2進に (12->00001100
      5. その7bit目を反転 (00001110->14
      6. 元に戻して出来上がり (14:34:56:ff:fe:AB:CD:EF

プレフィックスで64bit
これまた世界人口で割っても1人あたり2×10^9個=20億個

接続方法

  • トンネル接続:v4パケットにv6パケットをカプセル化して運ぶ(IPv6 over IPv4
  • ネイティブ接続:使うのはv6だけ
  • デュアル接続:v4も使えるしv6も使える

近隣探索(Neighbor Discovery)

アドレスの種類

  • グローバルアドレス: 世界中でユニーク
  • リンクローカルアドレス: ルータ無しでもアクセスできる範囲(グローバルがアドレスが無くても通信可能
  • ループバックアドレス: 表記は::1
  • 匿名アドレス: インタフェースIDをランダムにして使い捨てまくる.グローバルアドレスを公開したくない人向け
  • マルチキャストアドレス: v6ではブロードキャストがなくなって全てマルチキャストで行う
    • ffxx:で始まるアドレス
    • エニーキャストアドレス: ネットワーク上で一番近いノードに応答してもらう

特殊なアドレス

  • 2001:で始まるアドレス(sTLAアドレス
    • ISPなどから商用レベルで割り当てられてる
  • 2002:で始まるアドレス(6to4アドレス
    • IPv6 over IPv4トンネリングで使われるアドレス
    • 2002:に続く32bitにv4のグローバルアドレスを埋めて使用

6to4

  • 設定不要でv6のトンネル接続が出来る
  • v4グローバルアドレスであれば利用可能
    • 2002:(IPv4):+下位80bitに変換してアクセスする
  • 仕組み
    • v4ノードがv6パケットをv4パケットに埋めて6to4ゲートウェイルータに送信(v4の宛先IPはエニーキャスト192.88.99.0/24で
    • 6to4ゲートウェイがv6ノードにv6パケットを送信
    • v6ノードが受信応答を6to4ゲートウェイに送信(v6の宛先IPはエニーキャスト2002::/16で
    • 6to4ゲートウェイ(さっきのと違う可能性あり)がv6パケットをv4パケットに埋めてv4ノードに送信
    • v4ノードが応答v6パケットを受信

ローカルでping6してみる

    1. ipconfig/ifconfigでIPv6のリンクローカルアドレスを確認する (ex. fe80::20c:29ff:fe7a:ec1b/64
    2. ping6 fe80::20c:29ff:fe7a:ec1b/64では繋がらない
    3. ping6 fe80::20c:29ff:fe7a:ec1bでも繋がらない
    4. ping6 fe80::20c:29ff:fe7a:ec1b%eth1で繋がる! (%ethXの部分をスコープIDというらしい

kame.netにアクセスしてみる

    1. http://[2001:200:0:8002:203:47ff:fea5:3085]/にアクセスして亀が踊ってればおっけ