IPv6・アドレス変換・ICMP

このページでは、IPv6のアドレスとヘッダの特徴、NATとNAPTによるアドレス変換、エラーを知らせるICMPのメッセージとpingなどのコマンドがわかります。

  • 一言で言うと:
    • ネットワークを越えて届けるためのIPと、その住所であるIPアドレスの話
    • IPアドレスを「ネットワーク部」と「ホスト部」に分ける方法(クラス → サブネットマスク → CIDR)、足りなくなったアドレスへの対策(IPv6、NAT・NAPT)、エラーを知らせるICMPが出てくる

IPの性格とヘッダ(IP)→ 住所の形(IPアドレス・クラス・特殊なアドレス)→ 住所の区切り方(サブネットマスク・CIDR)→ 住所不足の対策(IPv6・NAT・NAPT)→ エラーの連絡係(ICMP・ping)

覚え方の軸

  • IPv6は「長く・簡単に・安全に」
    • 128ビット(16進数で「:」区切り)、基本ヘッダは固定長でシンプル、IPsecに標準対応
    • 名前の付け替えに注意:TTL → ホップ・リミット、プロトコル番号 → 次ヘッダ、ヘッダチェックサムはなくなった
  • NATとNAPTは「1対1か、ポートで1対多か」
    • NATは、プライベートとグローバルを1対1で変換
    • NAPT(IPマスカレード)は、ポート番号も書き換えて、1つのグローバルIPアドレスを複数台で共有

IPv6とアドレス変換技術:住所不足への対策(★)

  • IPv4の問題:
    • いろいろな問題があるが、最も大きいのは、32ビットのIPアドレス空間によるアドレスの枯渇
    • そこで、IPアドレスを無駄にしない技術や、IPアドレスの数を増やす技術が大事になっている

① IPv6

  • IPv6:
    • IPアドレスの枯渇問題に対応する本命技術
    • 今使われているIPv4に代わる、次世代のIP
  • IPv6の特徴:
    • IPアドレスを128ビットに広げ、家電などにもIPアドレスを振る道を開いた
    • IPヘッダでは、ルーティングに不要なフィールドを拡張ヘッダに分離して、基本ヘッダを簡素かつ固定長にし、ルータなどの負荷を減らした
    • セキュリティ機能として、IPsecに標準対応した(IPv4ではIPsec対応はオプションだった)
  • IPsec:
    • ネットワーク層で、暗号化、認証、改ざん検出をするセキュリティプロトコル(セキュリティ分野で扱う)

IPv4から仕様変更された主な内容(★)

  • アドレス空間:
    • 32ビットから128ビットに拡張
  • ヘッダ:
    • ルーティングに不要なフィールドを拡張ヘッダに分離し、基本ヘッダを簡素かつ固定長にして、ルータなどの負荷を軽減
  • セキュリティ:
    • IPレベルのセキュリティ機能IPsecに標準対応
  • 自動設定:
    • IPアドレスの自動設定機能を組み込んだ
  • エニーキャストの追加:
    • 特定グループのうち、経路上最も近いノード、あるいは最適なノードにデータを送るエニーキャストを追加
  • IPアドレスの自動設定:
    • IPv6では、DHCPv6(IPv6用のDHCP)を使わなくても、自動設定ができる
    • ICMPv6に決められた近隣探索メッセージを使い、ルータからの情報(Router Advertisement:RA)を受け取ることで設定する

② IPv6のIPアドレス

  • IPv6のアドレス表記:
    • IPv4は、8ビットごとに「.」で区切って10進数で書く
    • IPv6は、128ビットなので、16ビットごとに「:」で区切り、16進数で書く
  • ひっかけ注意:
    • 「アドレス空間がIPv4の4倍の128ビット」という言い方を見かけるが、4倍なのはビット数(32 → 128)
    • アドレスの個数は、2¹²⁸ ÷ 2³² = 2⁹⁶倍(約7.9 × 10²⁸倍)。けた違いに多い

IPv6のアドレス表記の省略ルール

  1. 元の形:
    • FFFF:FFFF:0000:0000:0000:0000:0000:FFFF
  2. 各ブロックの先頭の0を省く:
    • 各ブロックの先頭から続く0は、1つを残して省略できる
    • FFFF:FFFF:0:0:0:0:0:FFFF
  3. 0のブロックの連続を「::」にする:
    • 0のブロックが続く場合は、1か所に限り「::」で省略できる
    • FFFF:FFFF::FFFF
  • 「::」が1か所だけの理由:
    • 2か所で使うと、それぞれ何ブロック省いたのかわからなくなるから
  • 例:
    • 2001:0db8:0000:0000:0001:0000:0000:0001 は、2001:db8::1:0:0:1 と書ける(「::」は長いほうの連続に使う)

プレフィックス

  • IPv6のプレフィックス:
    • IPv6でも、どこまでがネットワークアドレス(ネットワークプレフィックス)で、どこからがホストアドレス(インタフェース識別子)かを見分けることが大事
    • IPv6には、IPv4型のサブネットマスクはない
    • プレフィックスで、ネットワークアドレス部の長さを表す
    • 例えば、「2001:db8:100:1000::/56」なら、ネットワークアドレス部は先頭から56ビット
  • IPv6アドレスの構成:
    • グローバルルーティングプレフィックス(nビット)+ サブネット識別子(mビット)+ インタフェース識別子(128 − n − mビット)
    • グローバルルーティングプレフィックスとサブネット識別子をあわせて、ネットワークプレフィックスという

IPv6のアドレスの種類(★)

種類 中身
ユニキャストアドレス 1つのノードに送るためのアドレス。インタフェース識別子(64ビット)には、48ビットのMACアドレスを組み込んで使うことが多い
エニーキャストアドレス ユニキャストアドレスを2つ以上のノードに割り当てたアドレス。IPv6ルータしか扱えない。指定されると、発信元に最も近い1つのノードだけがパケットを受け取る
マルチキャストアドレス 複数の送信先に同じデータを送るためのアドレス。上位8ビットが11111111(プレフィックス表記でFF00::/8)。ノードをグループ化するために使う
  • IPv6にブロードキャストがない理由:
    • ブロードキャストはネットワーク資源を浪費するので、IPv6では基本的にマルチキャストを使う
  • エニーキャストの例え:
    • 「最寄りのコンビニ」宛て。同じ名前の店が何軒もあっても、いちばん近い1軒にだけ届く
  • 注意(新しい情報):
    • 「エニーキャストアドレスはIPv6ルータしか扱えない」という制限は、古い規格(RFC 3513)のもの。今の規格(RFC 4291)では、この制限はなくなっている
    • 試験では、上の表のとおり覚えておけばよい

③ IPヘッダ(IPv6)

  • IPv6ヘッダ:
    • IPv4で結局使われなかった機能をカットし、シンプルに作られている
  • IPv6ヘッダの項目:
    • バージョン、優先度、フロー・ラベル、ペイロード長、次ヘッダ、ホップ・リミット、送信元アドレス(128ビット)、宛先アドレス(128ビット)、拡張ヘッダ
  • IPv6ヘッダの構成:
    • 基本ヘッダ(40バイト固定長)と、拡張ヘッダでできている
    • 拡張ヘッダは、暗号化や認証など、種類ごとに用意されている
    • 次に続くヘッダの種類を次ヘッダフィールドに書くことで、いろいろな拡張ヘッダを数珠つなぎに続けられる

IPv4からの名前の変更(★ひっかけ注意)

IPv4 IPv6 中身
プロトコル番号 次ヘッダ 拡張ヘッダがあれば、その拡張ヘッダの種類。なければ、上位プロトコルの種類(プロトコル番号)
TTL ホップ・リミット パケットの生存時間(通過できるルータの最大数)
ヘッダチェックサム なし ヘッダの誤りを検出するチェックサムはなくなった
  • IPv4からIPv6への移行:
    • IPv4を一度にIPv6へ切り替えるのは現実的ではない
    • だから、利用者が少しずつIPv6へ移行できるよう、IPv4でIPv6パケットをカプセル化して送れるようになっている(プロトコル番号41がIPv6)

④ アドレス変換技術(NAT、NAPT)

  • アドレス変換技術:
    • インターネットにつながるノードには、IPアドレスが必要
    • でも、組織に1つのIPアドレスがあれば、IPアドレスを割り当てられていないノードからもインターネットにつなげる技術がある
    • 代表が、NAT(Network Address Translation)とNAPT(Network Address Port Translation)

アドレス変換技術(★)

技術 中身
NAT グローバルIPアドレスとプライベートIPアドレスを1対1で相互に変換する。複数のノードが同時にインターネットにつなぐ場合は、同じ数のグローバルIPアドレスが必要
NAPT(IPマスカレード) NATの考え方に、TCP/UDPのポート番号を組み合わせたもの。プライベートIPアドレスをグローバルIPアドレスに変換すると同時に、TCP/UDPポート番号を別の番号に書き換えることで、1つのグローバルIPアドレスで、プライベートIPアドレスを持つ複数のノードが同時にインターネットにつなげる
  • NAPTの呼び方:
    • IPマスカレード(IP masquerade)とも呼ばれる
    • 試験では「NAPT(IPマスカレード)」と書かれることが多い
  • NATとNAPTの例え:
    • NATは、社員1人に外線番号を1つずつ割り当てる。同時に10人が外線をかけるなら、外線番号が10個いる
    • NAPTは、代表番号1つで、内線番号(ポート番号)を付けて区別する。家庭のWi-Fiルータは、これで家族全員のスマホをインターネットにつないでいる

ネットワーク層のプロトコル(ICMP):エラーを知らせる係(★)

  • ICMP(Internet Control Message Protocol):
    • IPパケットの送信処理でのエラーの通知や、制御メッセージを転送するためのプロトコル

ICMPメッセージの種類(★)

タイプ メッセージ
タイプ0 エコー応答(Echo Reply)
タイプ3 到達不能(Destination Unreachable)
タイプ5 経路変更要求(Redirect)
タイプ8 エコー要求(Echo Request)
タイプ11 時間超過(TTL equals 0)
  • タイプ5の経路変更要求(リダイレクト):
    • 例えば、転送されてきたデータを受け取ったルータが、そのネットワークの最適なルータを送信元に知らせて、経路の変更を頼むときに使う
    • 例えば、道を聞かれた人が「それなら、あっちの交番で聞いたほうが早いよ」と教える
  • タイプの覚え方:
    • pingは「8(要求)を送って、0(応答)が返る」
    • TTLが0になったら11(時間超過)
  • ICMPv6:
    • IPv6で使うICMPv6には、IPv4のARPに当たるMACアドレス解決機能や、マルチキャスト機能などが含まれている

① ICMPを使ったping

  • ping:
    • ICMPを使っているコマンド
    • あるノードが、IPで他のノードときちんと結ばれているかを確かめる
  • pingがICMPを使う理由:
    • IPはコネクションレス型なので、それ自身では疎通を調べる機能を持たない
    • それを補うのがICMP
  • pingの仕組み:
    • ICMPのエコー要求、エコー応答、到達不能メッセージなどで、通信相手との接続性を確かめる
  • pingの使い方:
    • 「ping 192.168.0.1」のように、疎通を確かめたい相手のアドレスを指定する
    • DNSなどの名前解決が使える環境なら、アドレスの代わりにドメイン名でもよい
  • pingの例え:
    • 山びこ。「やっほー(エコー要求)」と叫んで、「やっほー(エコー応答)」が返ってくれば、向こうまで声が届いているとわかる

その他のネットワーク管理コマンド

コマンド 何をするか
arp ARPテーブルの内容を表示、削除、追加する。例えば「arp -a 192.168.0.1」で、192.168.0.1に対応するMACアドレスを表示・確認できる
ifconfig IPネットワークの設定情報(自分のIPアドレス、サブネットマスク、デフォルトゲートウェイなど)を表示、または設定(変更)する。Windowsではコマンド名がipconfig
netstat ネットワークの通信状況を調べる
nslookup DNSサーバの動作状態(名前解決ができるかなど)を確かめる
route ルーティングテーブルの内容を表示、または設定(変更)する
  • 注意(新しい情報):
    • 今のLinuxでは、ifconfig・netstat・route・arpは古いコマンドとされ、代わりに「ip」コマンド(ip address、ip route など)や「ss」コマンドが使われることが多い
    • 試験では、上のコマンド名で覚えておけばよい

混同しやすいペア

  • IPv4 / IPv6
    • IPv4は、32ビット、10進数で「.」区切り。IPsecはオプション。ヘッダチェックサムあり
    • IPv6は、128ビット、16進数で「:」区切り。IPsecに標準対応。基本ヘッダは40バイト固定長で、チェックサムなし
  • DHCPv6 / RA(Router Advertisement)
    • DHCPv6は、IPv6用のDHCPで、サーバからアドレスをもらう
    • RAは、ICMPv6の近隣探索で、ルータからの情報を受け取って自分で設定する
  • NAT / NAPT(IPマスカレード)
    • NATは、IPアドレスだけを1対1で変換する
    • NAPTは、ポート番号も書き換えて、1つのグローバルIPアドレスを複数のノードで共有する
  • ICMPタイプ0 / タイプ8
    • タイプ0は、エコー応答
    • タイプ8は、エコー要求
  • ICMPタイプ3 / タイプ5 / タイプ11
    • タイプ3は、到達不能
    • タイプ5は、経路変更要求(リダイレクト)
    • タイプ11は、時間超過(TTLが0)
  • ICMP / ICMPv6
    • ICMPは、IPv4のエラー通知や制御メッセージ
    • ICMPv6は、それに加えて、ARPに当たるMACアドレス解決やマルチキャストの機能も持つ
  • ifconfig / ipconfig
    • ifconfigは、UNIX・Linuxのコマンド
    • ipconfigは、Windowsのコマンド(同じくIP設定の表示)
  • netstat / nslookup / route
    • netstatは、通信状況を調べる
    • nslookupは、DNSの名前解決を確かめる
    • routeは、ルーティングテーブルを表示・設定する

← 07 ネットワークの目次に戻る

タイトルとURLをコピーしました