10日で覚えるネットワークDay 4: IPアドレス、NAT、DHCP

Day 4: IPアドレス、NAT、DHCP

今日学ぶこと

  • IPv4アドレスのクラスとCIDR表記
  • サブネットマスクとサブネッティング
  • プライベートIPアドレスとパブリックIPアドレス
  • NAT(ネットワークアドレス変換)の種類と仕組み
  • DHCP(動的ホスト構成プロトコル)のDORAプロセス
  • IPv6の概要と移行メカニズム

IPv4アドレス

IPv4アドレスは32ビットの数値で、通常はドット区切りの10進数(ドット付き10進表記)で表します。

192.168.1.100
11000000.10101000.00000001.01100100

IPアドレスの構造

IPアドレスはネットワーク部ホスト部の2つの部分で構成されます。

flowchart LR
    subgraph IP["IPアドレス: 192.168.1.100/24"]
        direction LR
        Net["ネットワーク部\n192.168.1"]
        Host["ホスト部\n.100"]
    end
    style Net fill:#3b82f6,color:#fff
    style Host fill:#22c55e,color:#fff
    style IP fill:#1e293b,color:#fff

IPアドレスのクラス

従来、IPアドレスはクラスで分類されていました(クラスフルアドレッシング)。

クラス 先頭ビット 範囲 ネットワーク部 ホスト数 用途
A 0 0.0.0.0 〜 127.255.255.255 8ビット 約1677万 大規模ネットワーク
B 10 128.0.0.0 〜 191.255.255.255 16ビット 約65000 中規模ネットワーク
C 110 192.0.0.0 〜 223.255.255.255 24ビット 254 小規模ネットワーク
D 1110 224.0.0.0 〜 239.255.255.255 - - マルチキャスト
E 1111 240.0.0.0 〜 255.255.255.255 - - 実験用(予約)

CIDR(Classless Inter-Domain Routing)

クラスフルアドレッシングはIPアドレスの無駄が大きいため、現在はCIDR表記が使われています。スラッシュの後にネットワーク部のビット数を記述します。

192.168.1.0/24  → ネットワーク部が24ビット、ホスト部が8ビット
10.0.0.0/8      → ネットワーク部が8ビット、ホスト部が24ビット
172.16.0.0/12   → ネットワーク部が12ビット、ホスト部が20ビット

サブネットマスクとサブネッティング

サブネットマスク

サブネットマスクは、IPアドレスのネットワーク部とホスト部の境界を示すために使われます。

CIDR サブネットマスク ネットワーク部 ホスト数
/8 255.0.0.0 8ビット 16,777,214
/16 255.255.0.0 16ビット 65,534
/24 255.255.255.0 24ビット 254
/25 255.255.255.128 25ビット 126
/26 255.255.255.192 26ビット 62
/27 255.255.255.224 27ビット 30
/28 255.255.255.240 28ビット 14
/30 255.255.255.252 30ビット 2

ホスト数 = 2^(ホスト部のビット数) - 2(ネットワークアドレスとブロードキャストアドレスを除く)

サブネッティングの例

192.168.1.0/24 を4つのサブネットに分割する場合:

ホスト部8ビットのうち、2ビットをサブネット用に借りる → /26

flowchart TB
    subgraph Original["/24 ネットワーク(254ホスト)"]
        O["192.168.1.0/24"]
    end
    subgraph Subnets["4つのサブネット(各62ホスト)"]
        S1["192.168.1.0/26\nホスト: .1 〜 .62\nブロードキャスト: .63"]
        S2["192.168.1.64/26\nホスト: .65 〜 .126\nブロードキャスト: .127"]
        S3["192.168.1.128/26\nホスト: .129 〜 .190\nブロードキャスト: .191"]
        S4["192.168.1.192/26\nホスト: .193 〜 .254\nブロードキャスト: .255"]
    end
    O --> S1
    O --> S2
    O --> S3
    O --> S4
    style Original fill:#3b82f6,color:#fff
    style S1 fill:#22c55e,color:#fff
    style S2 fill:#f59e0b,color:#fff
    style S3 fill:#8b5cf6,color:#fff
    style S4 fill:#ef4444,color:#fff

計算手順:

  1. 4つのサブネットに分割 → 2^n ≥ 4 → n = 2ビット必要
  2. 元のプレフィックス長 /24 + 2 = /26
  3. 各サブネットのホスト数: 2^6 - 2 = 62台
  4. サブネットの境界: 256 / 4 = 64 ごと
サブネット ネットワークアドレス 使用可能範囲 ブロードキャスト
1 192.168.1.0 192.168.1.1 〜 .62 192.168.1.63
2 192.168.1.64 192.168.1.65 〜 .126 192.168.1.127
3 192.168.1.128 192.168.1.129 〜 .190 192.168.1.191
4 192.168.1.192 192.168.1.193 〜 .254 192.168.1.255

プライベートIPアドレスとパブリックIPアドレス

RFC 1918 で定義されたプライベートIPアドレスは、インターネット上ではルーティングされない内部ネットワーク用のアドレスです。

クラス プライベートIPアドレス範囲 CIDR ホスト数
A 10.0.0.0 〜 10.255.255.255 10.0.0.0/8 約1677万
B 172.16.0.0 〜 172.31.255.255 172.16.0.0/12 約104万
C 192.168.0.0 〜 192.168.255.255 192.168.0.0/16 約65000
flowchart LR
    subgraph Private["プライベートネットワーク"]
        PC1["PC\n192.168.1.10"]
        PC2["PC\n192.168.1.20"]
        PC3["PC\n192.168.1.30"]
    end
    Private -->|"NAT"| Router["ルーター\nプライベート: 192.168.1.1\nパブリック: 203.0.113.5"]
    Router -->|"パブリックIP\n203.0.113.5"| Internet["インターネット"]
    style Private fill:#3b82f6,color:#fff
    style Router fill:#f59e0b,color:#fff
    style Internet fill:#8b5cf6,color:#fff

特殊なIPアドレス

アドレス 用途
127.0.0.0/8 ループバック(自分自身)
0.0.0.0 全ネットワーク(デフォルトルート)
255.255.255.255 制限付きブロードキャスト
169.254.0.0/16 リンクローカル(DHCP失敗時に自動割当)

NAT(Network Address Translation)

NATは、プライベートIPアドレスとパブリックIPアドレスを変換する技術です。IPv4アドレスの枯渇を緩和する重要な技術として広く使われています。

スタティックNAT

プライベートIPとパブリックIPを1対1で固定的に対応付けます。

  • 外部からのアクセスが必要なサーバーに使用
  • パブリックIPの節約にはならない

ダイナミックNAT

プライベートIPをパブリックIPのプールから動的に割り当てます。

  • 通信開始時にプールから空いているIPを割り当て
  • 通信終了後にプールに返却

PAT(Port Address Translation)/ NAPT

最も一般的なNATの形態です。1つのパブリックIPを複数のプライベートIPで共有します。ポート番号で通信を区別します。

sequenceDiagram
    participant PC1 as PC1<br/>192.168.1.10:3000
    participant PC2 as PC2<br/>192.168.1.20:3000
    participant NAT as ルーター(NAT)<br/>203.0.113.5
    participant Web as Webサーバー<br/>93.184.216.34:443
    PC1->>NAT: src: 192.168.1.10:3000<br/>dst: 93.184.216.34:443
    Note over NAT: NATテーブル<br/>192.168.1.10:3000 ⇔ 203.0.113.5:40001
    NAT->>Web: src: 203.0.113.5:40001<br/>dst: 93.184.216.34:443
    PC2->>NAT: src: 192.168.1.20:3000<br/>dst: 93.184.216.34:443
    Note over NAT: NATテーブル<br/>192.168.1.20:3000 ⇔ 203.0.113.5:40002
    NAT->>Web: src: 203.0.113.5:40002<br/>dst: 93.184.216.34:443
    Web->>NAT: src: 93.184.216.34:443<br/>dst: 203.0.113.5:40001
    NAT->>PC1: src: 93.184.216.34:443<br/>dst: 192.168.1.10:3000
NATの種類 対応 パブリックIP 用途
スタティックNAT 1対1(固定) 複数必要 公開サーバー
ダイナミックNAT 1対1(動的) プール必要 中規模ネットワーク
PAT/NAPT 多対1 1つでOK 家庭・小規模オフィス

DHCP(Dynamic Host Configuration Protocol)

DHCPは、ネットワーク上のデバイスにIPアドレスやその他のネットワーク設定を自動的に割り当てるプロトコルです。

DHCPが割り当てる情報

  • IPアドレス
  • サブネットマスク
  • デフォルトゲートウェイ
  • DNSサーバーのアドレス
  • リース期間

DORAプロセス

DHCPのIPアドレス取得は、DORA(Discover、Offer、Request、Acknowledge)の4つのステップで行われます。

sequenceDiagram
    participant C as クライアント<br/>(IPアドレスなし)
    participant S as DHCPサーバー<br/>192.168.1.1
    C->>S: 1. DHCP Discover(ブロードキャスト)<br/>「IPアドレスをください」
    Note over C: src: 0.0.0.0<br/>dst: 255.255.255.255
    S->>C: 2. DHCP Offer(ブロードキャスト)<br/>「192.168.1.100はいかがですか?」
    Note over S: 提案: IP, マスク, GW, DNS, リース期間
    C->>S: 3. DHCP Request(ブロードキャスト)<br/>「192.168.1.100をお願いします」
    Note over C: 複数サーバーがある場合の選択通知も兼ねる
    S->>C: 4. DHCP Acknowledge(ブロードキャスト)<br/>「承認しました。使ってください」
    Note over C: IPアドレス取得完了<br/>192.168.1.100

DHCPリースの更新

  • リース期間の**50%**経過時: DHCPサーバーにユニキャストで更新要求
  • 更新失敗時、**87.5%**経過時: ブロードキャストで再要求
  • リース期間満了: IPアドレスを返却し、DORAプロセスを再実行
# Check current DHCP lease (Linux)
cat /var/lib/dhcp/dhclient.leases

# Release and renew DHCP lease (Linux)
sudo dhclient -r eth0    # Release
sudo dhclient eth0       # Renew

# Release and renew (Windows)
ipconfig /release
ipconfig /renew

IPv6の概要

IPv4アドレスの約43億個では世界中のデバイスに対応できないため、IPv6が開発されました。

IPv4 vs IPv6

特徴 IPv4 IPv6
アドレス長 32ビット 128ビット
アドレス数 約43億 約340澗(3.4×10^38)
表記 10進数(192.168.1.1) 16進数(2001:0db8::1)
ヘッダ 可変長(20〜60バイト) 固定長(40バイト)
NAT 必要 不要(原則)
セキュリティ IPsecはオプション IPsecが標準
自動設定 DHCP SLAAC + DHCPv6

IPv6アドレスの表記

完全表記: 2001:0db8:0000:0000:0000:0000:0000:0001
短縮表記: 2001:db8::1
  • 各グループの先頭の0は省略可能
  • 連続する0のグループは::で1回だけ省略可能

IPv6アドレスの種類

種類 プレフィックス 説明
グローバルユニキャスト 2000::/3 インターネット上で一意(パブリックIP相当)
リンクローカル fe80::/10 同一リンク内でのみ有効(自動生成)
ユニークローカル fc00::/7 プライベートIP相当
マルチキャスト ff00::/8 マルチキャスト通信
ループバック ::1 自分自身(127.0.0.1相当)

IPv4からIPv6への移行メカニズム

flowchart TB
    subgraph Transition["移行メカニズム"]
        DS["デュアルスタック\nIPv4とIPv6を同時に使用"]
        Tunnel["トンネリング\nIPv6パケットをIPv4で包む"]
        Trans["変換(NAT64/DNS64)\nIPv4⇔IPv6を相互変換"]
    end
    style DS fill:#22c55e,color:#fff
    style Tunnel fill:#3b82f6,color:#fff
    style Trans fill:#8b5cf6,color:#fff
    style Transition fill:#1e293b,color:#fff
メカニズム 説明 利点 欠点
デュアルスタック 両方のプロトコルを同時実行 互換性が高い リソース消費が大きい
トンネリング IPv6をIPv4で包んで転送 段階的な移行が可能 オーバーヘッドがある
NAT64/DNS64 プロトコル間の変換 IPv6のみの環境からIPv4にアクセス可能 一部のアプリが動作しない場合がある

まとめ

本日の学習内容

トピック ポイント
IPv4アドレス 32ビット。ネットワーク部とホスト部で構成
CIDR /24のようにプレフィックス長でネットワーク部を指定
サブネッティング ネットワークを小さなサブネットに分割する技術
プライベートIP 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
NAT プライベートIP⇔パブリックIPの変換。PATが最も一般的
DHCP DORAプロセスでIPアドレスを自動割り当て
IPv6 128ビットアドレス。NATが不要。移行は段階的に進行中

キーポイント

  1. サブネッティング計算: ホスト数 = 2^n - 2、必要なビット数から逆算
  2. PAT/NAPT: 1つのパブリックIPで複数のプライベートIPを共有(ポート番号で区別)
  3. DHCP DORA: Discover → Offer → Request → Acknowledge
  4. IPv6は128ビット: アドレス枯渇の根本的な解決策

練習問題

基礎レベル

  1. 以下のIPアドレスがクラスA、B、Cのどれに属するか答えてください。
    • 10.0.0.1
    • 172.16.0.1
    • 192.168.1.1
  2. サブネットマスク 255.255.255.0 をCIDR表記で書いてください。
  3. DHCPのDORAプロセスの4つのステップを説明してください。

中級レベル

  1. 192.168.1.0/24 のネットワークを4つの等しいサブネットに分割してください。各サブネットのネットワークアドレス、使用可能なIPアドレス範囲、ブロードキャストアドレスを答えてください。
  2. PAT(NAPT)で、内部の3台のPC(192.168.1.10、.20、.30)がすべてポート80の同じWebサーバーにアクセスする場合、NATテーブルがどのようになるか示してください。
  3. IPv6アドレス 2001:0db8:0000:0000:0000:0000:0000:0001 を短縮表記で書いてください。

チャレンジレベル

  1. ある企業に 10.10.0.0/16 のネットワークが割り当てられています。以下の要件を満たすサブネット設計を行ってください。
    • 本社: 500台のホスト
    • 支社A: 200台のホスト
    • 支社B: 100台のホスト
    • サーバーセグメント: 50台のホスト
  2. NATが「インターネットの透過性」を損なうと言われる理由を、具体的な技術的問題(P2P通信、FTPなど)を挙げて説明してください。
  3. IPv6のSLAAC(Stateless Address Autoconfiguration)の仕組みを、Router SolicitationとRouter Advertisementの流れを含めて説明してください。

参考リンク


次回予告

Day 5: ルーティング では、静的ルーティングと動的ルーティングの違い、ルーティングテーブルの読み方、RIP・OSPF・BGPといったルーティングプロトコル、そしてtracerouteでパケットの経路を追跡する方法を学びます。