IP アドレスはネットワーク上のホストを識別する番号で、パケットを宛先まで運ぶための「住所」。家のルータ裏に書かれた 192.168.1.1 も、グローバルに払い出される 8.8.8.8 も、本質的には同じ 32 bit の整数にすぎない。本稿では IPv4 の読み方 → サブネット / CIDR → NAT → ルーティング → IPv6 → 実用コマンド → セキュリティ という流れで、ネットワークを触るうえで実際に必要になる範囲だけを順に整理する。
難しく感じたらまずここだけ持ち帰ればいい。(1) IP アドレスは「インターネット上の住所」で、家や会社、サーバ 1 台 1 台に違う番号が振ってある。(2) 書き方には IPv4 (192.168.1.10) と IPv6 (2001:db8::1) の 2 種類がある。(3) 番号だけでは届かず、間に立つ ルータ が「次はあっち」とリレーして届ける。— この 3 つを土台に各章を開いていけば、迷子になりにくい。
IP は何をしているのか #
IP (Internet Protocol) は OSI 第 3 層 (ネットワーク層) で、上位の TCP / UDP と下位の Ethernet / Wi-Fi の間に挟まる。役目は単純で、宛先アドレスを見て次のルータへパケットを投げ、最終的に届けること。
特徴は次の 3 点だけ覚えておけばいい。
- コネクションレス — セッション確立なしに 1 発で投げる。各パケットは独立
- ベストエフォート — 届く / 順序 / 重複の保証なし。再送や順序は TCP の仕事
- ホップごとのルーティング — 各ルータが自分のテーブルを見て次の出口を決める
つまり IP は「封筒に住所を書いて、各郵便局がリレー配送する仕組み」。確実に届く保証はないが、シンプルゆえに世界規模で動く。
郵便で大事なのは 住所。インターネットでデータを送るのに大事なのが IP アドレス。192.168.1.10 のような番号がそのまま「東京都〇〇区〇丁目」の役割を果たし、ルータが「郵便局」のように 1 軒先のルータへ手渡ししていく。「コネクションレス」「ベストエフォート」「ホップごと」も、要は「届くかどうかは郵便局を信じるしかない / 各局が次の局にとにかく投げる」と思っておけばよい。普段通販で「届かなかった」が起きにくいのは、上位の TCP が再送してくれているから — IP 単体は意外と粗い、というのが最初の感覚。
1981 年策定の IPv4 は 32 bit ≈ 43 億通りのアドレス空間で、当初は無限とみなされた。だが 2011 年に IANA の在庫が枯渇し、NAT による延命と、128 bit (2^128 ≈ 3.4×10^38) の IPv6 への移行が並行して進む。2026 年時点で全世界クライアントの約 45% が IPv6 で接続するが、IPv4 もまだ現役 — 当面は 両方を理解して使い分けるのが現実解。
IPv4 アドレスの読み方 #
IPv4 は 32 bit を 8 bit ずつ 4 つに区切り、10 進数のドット表記で書く。192.168.1.10 の中身はただの 32 bit 整数。
難しい表を見る前に、自分のマシンの IP を確認してみるとイメージが掴みやすい。Windows なら PowerShell で ipconfig、Mac / Linux なら ip addr もしくは ifconfig。出てきた 192.168.x.x や 10.x.x.x が 自宅の中での住所 で、外向きには別の番号 (公開 IP) が割り当たっている。家用の住所 / 外向け用の住所が別という感覚を最初に掴むと、以降の話が一気に楽になる。
なぜ 4 つに区切るのか、と最初は引っかかるかもしれない。種明かしをすると、コンピュータは 32 個の 0 / 1 でアドレスを覚えているだけで、人間が読みやすいように 8 個ずつちぎって 10 進に直しているだけ。下の表のように、機械側ではすべて 2 進が走っている。
10 進 2 進 意味
192 11000000 ← 上位 1 オクテット
168 10101000 ← 上位 2
1 00000001 ← 上位 3
10 00001010 ← 下位 4
# 各オクテットは 0〜255 → 全体で 0.0.0.0 〜 255.255.255.255実用上、IPv4 には用途が予約されている範囲がある。新しい IP を見たときに「これは家庭内?ループバック?グローバル?」を一瞬で判別できると話が早い。
| 範囲 | 用途 | 覚え方 |
|---|---|---|
10.0.0.0/8 |
プライベート IP (RFC 1918) | 大企業 LAN でよく使う |
172.16.0.0/12 |
プライベート IP (RFC 1918) | 中規模・Docker のデフォルト |
192.168.0.0/16 |
プライベート IP (RFC 1918) | 家庭・SOHO の定番 |
127.0.0.0/8 |
ループバック (自分自身) | 127.0.0.1 = localhost |
169.254.0.0/16 |
リンクローカル (APIPA) | DHCP に失敗したホストが付ける |
224.0.0.0/4 |
マルチキャスト | mDNS / RIP / OSPF |
0.0.0.0 |
「未指定」または「すべて」 | バインド先として頻出 |
255.255.255.255 |
リミテッド・ブロードキャスト | DHCP DISCOVER |
RFC 1918 で予約された 3 範囲はインターネット上を流れない約束。社内 LAN や家庭ルータの内側でだけ使い、外に出るときはルータが NAT で公開 IP に書き換える (→ §04)。ifconfig や ip addr で 192.168.x.x が出れば「自分は NAT の内側」と判断できる。
サブネットと CIDR #
IP アドレスは 「ネットワーク部 + ホスト部」 に分かれる。境界を bit 数で示すのが /24 のような CIDR 表記。192.168.1.10/24 なら上位 24 bit (192.168.1.0) がネットワーク、下位 8 bit (.10) がホスト。
電話番号 03-1234-5678 の「03」が東京 (= ネットワーク部 / どこのエリアか)、「1234-5678」が個人 (= ホスト部 / そのエリアの誰か) なのと同じ構造。IP アドレスを「どこから上がエリアで、どこから下が部屋番号か」を /24 のような数字で示すのが CIDR。/24 = 上 24 bit がエリア、下 8 bit が部屋番号 — これだけ覚えれば、あとの表はその場で引けばいい。「同じエリア内なら直接、違うエリアなら一度ルータを経由」というのが、わざわざサブネットで区切る最大の理由。
ネットワークが決まれば、その中で使えるホスト数は 2^(32 - prefix) - 2 (-2 はネットワークアドレスとブロードキャスト分)。
| CIDR | サブネットマスク | ホスト数 | 典型用途 |
|---|---|---|---|
| /8 | 255.0.0.0 | 約 1,677 万 | 大規模 (10.0.0.0/8 全体) |
| /16 | 255.255.0.0 | 65,534 | キャンパスネットワーク |
| /24 | 255.255.255.0 | 254 | 一般的な LAN・1 セグメント |
| /28 | 255.255.255.240 | 14 | 小さいサブネット (DMZ 等) |
| /30 | 255.255.255.252 | 2 | ルータ間 P2P リンク |
| /32 | 255.255.255.255 | 1 | 単一ホストを指す (ACL で頻出) |
自分で計算してみる — IP と CIDR を入れると、ネットワーク / ブロードキャスト / ホスト範囲 / 2 進表示が即座に出る。/26 で 1 つのサブネットがどこからどこまでか、手を動かして確かめよう。
ホストは送信前にまず「宛先 IP は自分と同じサブネットか?」を判定する。同じなら ARP で MAC を解決して直接届ける。違うならデフォルトゲートウェイ宛てに投げる。これがルーティングの最初の分岐点 (→ §05)。同セグなのに通信できない場合、サブネットマスクのずれを真っ先に疑う。
CIDR は 1993 年に RFC 1519 で導入され、それまでの クラス A (8 bit) / B (16 bit) / C (24 bit) という固定区切りを置き換えた。任意の bit 長で分割できることで、アドレスの無駄が一気に減った。
NAT — プライベート IP が外に出る仕組み #
家のスマホもノート PC も、内側では 192.168.x.x を持ち、外にはルータの公開 IP 1 つで出る。ルータが通すたびに「送信元 IP + ポート」を自分の公開 IP + 動的ポートに書き換えるのが NAT (Network Address Translation, RFC 1631)。応答は逆変換で内側ホストに戻る。
マンション全体には 代表電話 1 本しかないのに、中には何百世帯も住んでいる。代表電話に外からかかってきた電話を、管理人が「これは 305 号室宛だな」と内線で取り次ぐ — これがそのまま NAT の仕組み。家のルータが「管理人」で、内側の 192.168.x.x が「部屋番号」、外向きの公開 IP が「代表電話」。だから 外からは内側の部屋番号を直接呼べない (= 内側のホストは外から見えない)。これがゲームのオンライン対戦・Zoom・P2P 通信などで「ポート開放」が話題になる根本理由。
# 内側 → ルータ
src=192.168.1.10:54321 dst=93.184.216.34:443
# ルータが NAT テーブルに記録して書き換え
src=203.0.113.7:60123 dst=93.184.216.34:443
# 応答は逆方向
src=93.184.216.34:443 dst=203.0.113.7:60123
→ NAT テーブル参照 → src=93.184.216.34:443 dst=192.168.1.10:543211 つの公開 IP に何百台もぶら下げられる IPv4 枯渇の決定的な延命策。一方で「外からは内側ホストを直接呼べない」副作用があり、ピアツーピア通信を阻害する。これを回避するのが STUN / TURN / ICE (Web 会議や P2P ファイル共有の中核) や、サーバ側に静的に開けるポート転送 (ポートフォワーディング)。IPv6 はそもそもアドレスが足りるので NAT が要らない、というのが基本思想。
ルーティング — パケットが宛先に着くまで #
すべてのホストとルータは ルーティングテーブルを持ち、「この宛先範囲はこのインターフェースから / このゲートウェイへ」を引いて 1 ホップ先を決める。同じ宛先に複数エントリがあるときは 最長プレフィックスマッチ (より具体的なネットワーク) を優先する。
東京から福岡へ向かう乗り換え案内を考える。スマホの乗換アプリは全体を見渡して「東京 → 新大阪 → 博多」と最初から教えてくれるが、IP の世界では 各駅 (= ルータ) は「次にどこへ行けばいいか」しか知らない。新宿駅は「西へ向かう人は山手線→東京駅へ」と案内するだけで、その先は東京駅に任せる。これが「ホップごとのルーティング」の正体で、各ルータが持つルーティングテーブルが、各駅の乗換ボードに相当する。default は「これに当てはまらないなら、とりあえずこの方向へ送って後は頼む」というルート。
$ ip route
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50
10.0.0.0/8 via 192.168.1.254 dev eth0
# 例: 宛先 10.5.3.1 → 10.0.0.0/8 にマッチ → 192.168.1.254 へ転送
# 例: 宛先 8.8.8.8 → どれにもマッチしない → default (= 192.168.1.1) へdefault (= 0.0.0.0/0) は 「どれにも該当しなかったらここに投げる」 というデフォルトゲートウェイ。家のネットでは PC → ルータ → ISP → ... と階層的にデフォルトゲートウェイが続き、最終的にインターネットの上位ルータへ届く。
IP ヘッダの TTL (IPv6 では Hop Limit) はルータが転送するたびに 1 ずつ減る値で、経路ループの暴走を防ぐ安全装置。0 になったルータはパケットを破棄して送信元へ ICMP Time Exceeded を返す。traceroute は TTL を 1, 2, 3 ... と増やしながら投げ、返ってくる Time Exceeded の発信元 IP を集めて経路を逆引きする — IP の挙動を逆手に取った賢いツール。
経路情報はどこから来るのか #
社内 LAN なら手で書いた ip route add か DHCP の Router オプションで十分。だがインターネット全体では、ルータどうしが ルーティングプロトコルで経路情報を交換し合っている。
- OSPF / IS-IS — 組織内 (IGP)。リンクステート方式で Dijkstra 最短経路を計算
- BGP — 組織間 (EGP)。世界中の AS (Autonomous System) が経路を広告し合い、現在 100 万経路超のグローバルテーブルを構築する。インターネットそのものを支えているプロトコル
IPv4 ヘッダで実用上知っておく値 #
IPv4 パケットは 20 byte の固定ヘッダ + データ。全フィールドを暗記する必要はなく、トラブルシュートや tcpdump で目にするこの 5 つを理解しておけば十分。
| フィールド | 役割 | 何の役に立つか |
|---|---|---|
| Source / Destination IP | 送信元 / 宛先 | パケットの方向と相手を読む基礎 |
| TTL | ホップごとに -1、0 で破棄 | traceroute、ループ防止、Linux/Windows の OS 推定 (初期値 64 / 128) |
| Protocol | 1=ICMP / 6=TCP / 17=UDP / 47=GRE / 50=ESP | tcpdump の proto 指定や FW ルールの prtkey |
| Total Length | ヘッダ + ペイロード合計 (最大 65,535) | フラグメント判定、MTU 超過の検出 |
| DF / MF / Fragment Offset | フラグメント制御 | PMTUD で DF=1 を立て、超過時は ICMP "Fragmentation Needed" で送り直し |
経路上で許される最大 IP パケットサイズが MTU (Ethernet は通常 1500 byte)。それを超えると分割が必要だが、現代は中継ルータで分割せず、送信元が Path MTU Discovery (PMTUD) で最小 MTU を学習して最初から収める方式が主流。VPN 越しに「Web は開くが大きいファイルが転送できない」等の症状は、ICMP がフィルタされて PMTUD が壊れているケースが多い。
IPv6 — 128 bit 時代の最低限 #
IPv4 は 約 43 億通りしか作れない。世界人口より少ないし、1 人が スマホ・PC・スマートテレビ・冷蔵庫・カメラ と何台も持つ時代ではとても足りない。そこで桁を 4 倍に増やした IPv6 が生まれた。2^128 個 — 地球上の砂粒 1 つひとつに別の IP を振ってもまだ余る量。長くて読みにくいが、最初は「IPv4 = 短くて足りない / IPv6 = 長くてほぼ無限」だけ理解できれば十分。詳しい表記ルールは下で順に押さえていく。
IPv6 アドレスは 128 bit = 16 byte。16 進数 4 桁を : で 8 グループに区切る — 2001:0db8:85a3:0000:0000:8a2e:0370:7334。長いので 2 つの省略ルールがある。
- 各グループ先頭の 0 は省略可 —
2001:db8:85a3:0:0:8a2e:370:7334 - 連続する全ゼロは
::で 1 回だけ省略可 —2001:db8:85a3::8a2e:370:7334
実用上見るのは次の 4 種類。
| 範囲 | 用途 | IPv4 で言えば |
|---|---|---|
2000::/3 |
Global Unicast (公開アドレス) | グローバル IPv4 |
fe80::/10 |
Link-Local (同一リンク内のみ) | 169.254.x.x 相当、SLAAC で自動付与 |
fc00::/7 |
Unique Local (組織内) | RFC 1918 プライベート IP 相当 |
::1 |
ループバック | 127.0.0.1 |
ヘッダは 固定 40 byte に簡素化され、IPv4 にあった Header Checksum・Identification・Options が消えた。中継ルータでの分割が禁止になり、誤り検出は下位の Ethernet と上位の TCP/UDP に任せる設計。可変な拡張機能は Next Header でチェーンする「拡張ヘッダ」に追い出された。
IPv6 では、ホストがリンクに参加すると Router Solicitation を ICMPv6 マルチキャストで送り、ルータが Router Advertisement で「このリンクのプレフィックスは 2001:db8:abcd::/64」と告知する。ホストはそれに自分の MAC ベース ID か乱数 ID を組み合わせて、自分の 128 bit アドレスを 自動生成 (SLAAC) する。IPv4 の DHCP に相当するが、ステート管理が要らない。
現実の運用では Dual-Stack (ホスト・ルータが IPv4 / IPv6 両方を持ち、宛先で使い分ける) が最も主流。IPv6 のみの環境から IPv4 サーバへ通すには NAT64 / DNS64 を組み合わせる。
実用コマンド #
ネットワーク調査でまず叩く 7 本。Linux なら iproute2 の ip が ifconfig の現代版置き換え。
多すぎて手が止まったら、この 3 本だけ覚えておけば十分。(1) ip addr (もしくは Windows の ipconfig) → 自分の IP を見る。(2) ping 8.8.8.8 → インターネットへ到達できているか。(3) traceroute 8.8.8.8 (Windows は tracert) → どの経路で届いているか。「ネットが繋がらない」の 9 割は、この 3 本のどこかで止まるので、まずここから順に確認する癖をつけておくと格段に話が早い。
$ ip -br addr # 全 IF のアドレスを 1 行ずつ簡易表示
$ ip addr add 192.168.1.50/24 dev eth0
$ ip link set eth0 up
$ ip route # ルーティングテーブル
$ ip route add 10.0.0.0/8 via 192.168.1.254
$ ip neigh # ARP / NDP テーブル$ ping -c 4 example.com # ICMP で疎通 + RTT
$ traceroute example.com # 各ホップの IP を列挙
$ mtr example.com # traceroute + ping の継続表示$ ss -tunlp # Listen 中のポート + プロセス
$ ss -an state established # 確立済み接続のみ$ nmap -sn 192.168.1.0/24 # ping スイープ (ホスト発見のみ)
$ nmap -sS -p 1-1000 192.168.1.50
$ nmap -6 2001:db8::1 # IPv6 ターゲット$ sudo tcpdump -i eth0 host 192.168.1.50
$ sudo tcpdump -i eth0 'tcp port 80'
$ whois 8.8.8.8 # IP の登録組織 → Google LLCWindows なら同等の機能は ipconfig / route print / tracert / netstat -ano / Test-NetConnection (PowerShell)。
IP まわりのセキュリティ #
IP は「住所」だけを扱う薄いプロトコルで、認証も暗号化もない。だから IP 層を悪用する攻撃は古今そろっていて、上位プロトコルや経路上の対策で補う必要がある。
IP は「相手の住所」しか書いていない、極めて素朴なプロトコル。住所が本物かどうか も 中身が盗み見されないか も IP は気にしない (= 送信元の偽装も盗聴も理屈上は容易)。そのギャップを埋めるのが HTTPS (TLS) / SSH / VPN / IPsec といった上のレイヤ — IP の上で「相手の身元」と「通信内容」を守る仕組み。「IP だけではセキュリティは成立しない」という前提さえ持っていれば、なぜブラウザが鍵マーク (HTTPS) を強調するのか、なぜリモートワークで VPN を使うのか、といった日常の場面が一本の線でつながる。
IP Spoofing — 送信元の偽装 #
UDP は接続を確立しないので、送信元 IP を簡単に偽装できる。これを利用する代表が 増幅型 DDoS: 攻撃者が被害者 IP を送信元に偽装し、DNS / NTP / Memcached といった「短いクエリで大きな応答を返す」サーバへ問い合わせ → 大量応答が被害者に直撃する。対策の本筋は ISP 側で BCP 38 (RFC 2827, 送信元アドレス検証) を実施し、自 AS から出るパケットの送信元 IP が自 AS の範囲内であることを強制すること。
DDoS — 帯域・ステート・アプリの飽和 #
大量のパケットでサービスを溢れさせる攻撃は IP レイヤから上位までいくつもの層がある。
- Volumetric — 帯域を埋める (UDP flood / ICMP flood / amplification)
- Protocol — TCP/UDP のステートを枯渇させる (SYN flood)
- Application — HTTP リクエストでアプリを過負荷に (Slowloris 等)
防御は単一の機器では完結せず、上流 ISP のスクラビング、Cloudflare / Akamai 等の DDoS 保護、Anycast による地理分散吸収を組み合わせるのが定石。
IP-based Access Control — ファイアウォール #
「特定の IP / サブネットからだけ許可する」のは、いまも有効な最初の防御層。家庭用ルータも企業 FW も、内部実装は概ね同じ宛先 / 送信元 / ポートの組み合わせフィルタ。
# iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
# 22/tcp は社内のみ通し、それ以外はドロップIPsec — IP レイヤで暗号化 #
IPsec (RFC 4301-) は IP パケット自体を暗号化・認証する仕組みで、VPN の事実上の標準。ペイロードだけ暗号化する トランスポートモードと、パケット全体を新しい IP ヘッダで包む トンネルモードがある。実用上の構成要素は次の 3 つ。
- ESP — 暗号化 + 認証 (実質ほぼ ESP しか使われない)
- AH — 認証のみ (今日的にはほぼ非推奨)
- IKE — 鍵交換 (IKEv2 が主流)
「どのパケットがどの経路でどう届くか」を理解していないと、ネットワークトラブルの原因究明もセキュリティ設計も根本のところで詰む。アドレスとサブネット (§02-03) / NAT (§04) / ルーティング (§05) / TTL とフラグメント (§06) の 4 つを地続きで掴めていれば、ping が通らない・経路が遠回りする・FW で詰まる、といった日々の問題に対する解像度が一段上がる。