このページでは、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のアドレス表記の省略ルール
- 元の形:
- FFFF:FFFF:0000:0000:0000:0000:0000:FFFF
- 各ブロックの先頭の0を省く:
- 各ブロックの先頭から続く0は、1つを残して省略できる
- FFFF:FFFF:0:0:0:0:0:FFFF
- 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は、ルーティングテーブルを表示・設定する