IPv6
ISP(Internet Service Provider)…エンドユーザーにIPv6の割り当てをしている
- IPv4のアドレス枯渇問題を解決するため32ビットから128ビット(16ビットずつ8個のフィールドでフィールドでフィールドで16進数で表記)に拡張
- ヘッダの簡素化
- ブロードキャストの廃止
- 階層構造による効率的なルート集約
- 自動設定
- IPsecのサポート必須
IPv6には、次の3種類のアドレスがあります。
- ユニキャスト‥1体1の通信で利用される単一インターフェイス用のアドレス
- マルチキャスト‥特定のグループに対する通信で利用されるアドレス
- エニーキャスト‥グループ内の最も近いデバイスとの通信で利用されるアドレス
アドレス | 説明・覚え方 |
---|---|
fc00::/7 ユニークローカルユニキャストアドレス | FC Tokyo 7人のユニークな住所はプライベートな話題 |
FE80::/10 | リンクローカルアドレス 鉄也を十分リンスしろ |
・FF0e::1 | 同じインターネット上の全てのノードに送信 |
・FF01::1 | 同じノード上の全てのノードに送信 |
・FF02::1 | 同じリンク上の全てのノードに送信 |
・FF02::5 | 同じリンク上の全てのOSPFルータ |
・FF02::6 | 同じリンク上の全てのOSPF指定ルータ |
・FF02::9 | 同じリンク上の全てのRIPルータ |
・FF02::101 | 同じリンク上の全てのNTPサーバ |
・FF05::1 | 同じサイト内の全てのノードに送信 |
・FF05::101 | サイトローカル上の全てのNTPサーバ |
・FF08::1 | 同じ拠点内の全てのノードに送信 |
IPv6ヘッダ
- フィールドの簡素化⇒処理が簡単に
- IPv6ヘッダの方がサイズが大きくなっている
- 40バイト固定長
- チェックサムの削除
- フローラベル(効率的にアプリケーションフローを識別)の追加
- オプション機能は拡張ヘッダ
- ルータでのフラグメント処理は禁止
- ホップリミットは(IPv4のTTL:Time To Live生存期間)に相当
グローバルユニキャストアドレス
- 世界中で一意
- IANAで管理される
- 最初の3ビットが001で始まる、2000::/3で表記されます。
- 2001::/16 インターネット用のアドレス
- 2002::/16 6to4トンネリング用のアドレス
- 2003::/16〜3FFD::/16 役割が未定
グローバルプレフィックス(ランダム値、48ビット) サブネット(16ビット) インターフェースID(64ビット)
- グローバルプレフィックス、サブネット、インターフェースIDの3フィールドで構成される
- 前半64ビットはIPv4のネットワークアドレスに該当する
- 一般的に64ビットのインターフェースIDを使用する
リンクローカルユニキャストアドレス
- ホスト間で一意となる。
- 同じサブネット上(同一リンク間)での通信が可能なアドレス
- 最初の10ビットが1111111010で始まる、FE80::/10で表記されます。
- 最初に続く54ビットは0
- IPv6を扱う必ずインターフェース全てに設定されます。
- ルーティングの対象になりません、このアドレスが送信元や宛先となっている場合、ルータはデータを転送しません。
- リンクローカルアドレスを手動で設定しない場合、自動生成されたリンクローカルアドレスが設定される
ユニークローカルユニキャストアドレス
- 企業などのローカルで使用されるアドレスで、IPv4のプライベートIPアドレスに相当します。
- 最初の7ビットが1111110で始まる、FC00::/7で表記されます。
fd ランダム値(40ビット) サブネット(16ビット) インターフェースID(64ビット)
ユニキャストアドレスの特別なアドレス
- ::/128 未指定アドレス
- ::1/128 ループバックアドレス
- ::FFFF:<IPv4> IPv4射影アドレス
(例 0:0:0:0:0:FFFF:192.168.10.1)
マルチキャストアドレス
エニーキャストアドレス
エニーキャストアドレスでは、複数ノードのインターフェースに対して同じユニキャストアドレスを割り当てます。エニーキャストアドレス宛のパケットはそのアドレスを持つ最も近いノードのインターフェースに転送されます。
エニーキャストを使用しることでサーバの冗長化と負荷分散ができます。
IPv6アドレス割り当て
設定方法 | 設定範囲 | ||
---|---|---|---|
手動設定 | 128ビット | (config-if)#ipv6 address (アドレス/プレフィックス長) | IPv6アドレス全桁設定 |
手動設定 | 64ビット | (config-if)#ipv6 address (サブネットID/64) eui-64 | サブネットIDを手動設定しインタフェースIDをeui-64で自動設定 |
ステートレス 自動設定 (SLAAC) | 指定なし | (config-if)#ipv6 address autoconfig [default] | インタフェースIDをeui-64で自動設定 |
ステートフル 自動設定 (DHCPv6) | 指定なし | (config-if)#ipv6 address dhcp |
EUI-64
EUI-64による自動生成は、48ビットのMACアドレスの中央に16ビットの「FFFE」を追加して64ビットに拡張することでインターフェースIDが生成されます。
- 48ビットを24ビットに分割
- 16ビットのFFFEを挿入
- インターフェイスの元のMACアドレスの7番目のビットを反転
インターフェイスをEUI-64で自動生成する場合はコマンドの末尾にeui-64キーワードを付加します。
(config-if)#ipv6 address <ipv6-address> / <prefix-length> [ eui-64 ] [ anycast ]
IPv6アドレスの手動設定
ルータのインターフェイスに対してIPv6ユニキャストアドレスを手動設定するには、ipv6 addressコマンドを使用してIPアドレスとプレフィックス長を設定します。
IPv6アドレスの自動設定
SLAAC
手動設定、DHCPサーバによる自動設定に加え、IPv6ではSLAAC(Stateless Address Auto Configuration : ステートレスアドレス自動設定)という自動設定機能があります。
- SLAACのRAメッセージには64bitのプレフィックスが含まれる
- 各ホストのIPv6アドレス=ルータが送信したプレフィクス(64ビット) +modified EUI-64形式でMACアドレスから生成したインタフェースID(64ビット)
(config-if)#ipv6 address autoconfig
前半64bit | 後半64bit |
---|---|
(アドバタイズされた) リンクローカルプレフィックス | インターフェースID |
IPv6ネイバーテーブル
IPv4のARPテーブルに似た役割を持ちます。
#show ipv6 neighbors
IPv6の近隣探索(ND)
ネイバー検出は、同じリンク上の異なるノードが近隣に存在をアドバタイズし、近隣の存在について学習できるプロトコルです。
IPv4ではデータリンク層のアドレス(MACアドレス)を解決するために、ARPブロードキャストによりアドレスを解決します。IPv6ではNeighbor Discovery(ND)機能を使用しアドレスを解決しています。
タイプ | メッセージ |
---|---|
133 | RS:Router Solicitation(ルータ要請) |
134 | RA:Router Advertisement(ルータ広告) |
135 | NS:Neighbor Solicitation(近隣要請) |
136 | NA:Neighbor Advertisement(近隣通知) |
137 | Redirect(リダイレクト) |
IPv6ルーティングの有効化
(config)#ipv6 unicast-routing
IPv6への移行技術
デュアルスタック
デュアルスタックとは、IPv4とIPv6の両方のプロトコルが処理できるように構築することです。
トランスレータ
トランスレータは、パケット変換を行います。(カプセル化しない)
NAT-PT、NAT64などの種類があります。
手動トンネル
デュアルスタックルータを使用してIPv6パケットをIPv4プロトコルでカプセル化する。
管理者が宛先と送信元のルータを手動で設定します。
GREトンネル
IPv6パケット以外にも多くのパケットを転送できます。手動トンネルよりもオーバーヘッドが大きくなります。
自動トンネル(6to4トンネル)
IPv4グローバルアドレスを一つ以上持つサイトに対してIPv6アドレスを割り当て、カプセル化したIPv6パケットを転送します。
IPv6アドレスの名前解決
pingコマンドやtalentコマンドを実行する際に、長いIPv6アドレスを指定するのは面倒です。そこでホスト名とIPv6アドレスのマッピング情報を事前に用意しておくと、ホスト名を指定して通信できるため便利です。
ホスト名とIPv6アドレスのマッピング情報の登録
(config)#ipv6 host <word> <ipv6-address1> [ <ipv6-address> ……<ipv6-address4> ]
*word…任意のホスト名、*IPv6-address…最大4つまで指定
IPv6 ACL
IPv6でサポートするのは、名前付きACLのみです。
IPv6はアドレス解決にARPではなくICMPを使用します。そのため、IPv6 ACLではIPv6近接探索を有効するために、「暗黙のpermit」条件も設定されています。
- permit icmp any any nd-ns(ICMP NSを許可)
- permit icmp any any nd-na(ICMP NSを許可)
- deny ipv6 any any
【ACLを作成】
Exampleという名前でIPv6 ACLを作成
(config)#ipv6 access-list Example
サブネット2001:db8: 0:1::/64からサーバ2001:db8:0:3::200へのUDPトラフィックを無視する
(config-ipv6-acl)#deny udp 2001:db8: 0:1::/64 host 2001:db8:0:3::200
ホスト2001:db8:0:1::11からのTelnetを全て拒否する
(config-ipv6-acl)#deny tcp host 2001:db8:0:1::11 any eq telnet(またはeq 23)
その他IPv6トラフィックを全て許可する
(config-ipv6-acl)#permit ipv6 any any(省略可能)
ルータのFa0/0インターフェイスのアウトバウンド方向にIPv6 ACL「Example」
(config)#interface fa0/0
(config-if)#ipv6 traffic-filter Example out
「2001:db8:0:3::/64からのpingを拒否する」条件のステートメントをシーケンス番号15で追加
(config-ipv6-acl)#sequence 15 deny icmp 2001:db8:0:3::/64 any any echo-request
IPv6 ACLの検証
IPv6 ACLの表示
#show [ ipv6 ] access-list [ <acl-name> ]
インターフェイスへ適用したACLの確認
#show ipv6 interface [ <interface-id> ]
NDP
NDP(Neighbor Discovery Protocol:近隣探索プロトコル)
<NDPの機能>
- MACアドレスの解決(IPv4のARPに相当)
- SLAAC(StateLess Address Auto Configuration:アドレスの自動設定)
- DAD(Duplicate Address Detection:重複アドレスの検出)
- 同一セグメント上の機器を探索する
<NDPとICMPv6>
- ICMPv6パケットを使用する
- NDPは同一セグメント上のデバイスのMACアドレスを調べるために以下ICMPv6パケットを使用します。
- NS(Neighbor Solicitation:近隣要請):MACアドレスを問い合わせるパケッ
- NA(Neighbor Advertisement:近隣広告):NSへの応答パケット
- NDPは同一セグメント上のデバイスのIPv6アドレスを調べるために以下のICMPv6パケットを使用します。
- RS(Router Solicitation:ルータ要請):RAを要請するパケット
- RA(Router Advertisement:ルータ広告):セグメントのプレフィックスなどを伝えるパケット
ICMPv6
ICMPv6は、IPv6用のICMPです。
- エラー通知:パケットが破棄された理由を送信元に通知する機能
- 近隣探索:同一セグメント上のデバイスのアドレスを調べる機能(NDやNDPとも呼ばれる)