ネットワーク通信において、パケットが送信元から宛先に到達するためには、適切な経路を選択する仕組みが不可欠です。この経路選択の仕組みがルーティングであり、その中心的な役割を果たすのがデフォルトゲートウェイです。
本記事では、ルーティングとデフォルトゲートウェイについて以下の内容を解説します。
- パケットがネットワーク間を転送される仕組み
- ルーティングテーブルの構造と見方
- デフォルトゲートウェイの役割と設定
- 静的ルーティングと動的ルーティングの違い
- 代表的なルーティングプロトコルの概要
この記事を読むことで、パケットの経路決定の仕組みを理解し、ルーティングの基本設定ができるようになります。
前提条件
本記事を理解するために、以下の知識があることを前提としています。
- IPアドレスとサブネットマスクの基本的な理解(前回記事参照)
- ネットワーク部とホスト部の概念を把握している
- OSI参照モデルの第3層(ネットワーク層)の役割を知っている
実行環境
ルーティングテーブルの確認には以下の環境を使用します。
| OS | 確認コマンド |
|---|---|
| Windows 10/11 | route print または netstat -r |
| macOS | netstat -rn または route get default |
| Linux | ip route show または route -n |
特別なソフトウェアのインストールは不要です。
期待される学習成果
本記事を読み終えると、以下のことができるようになります。
- パケットがルータを経由して転送される仕組みを説明できる
- ルーティングテーブルの各エントリの意味を理解できる
- デフォルトゲートウェイの役割を正しく説明できる
- 静的ルーティングと動的ルーティングの違いを区別できる
- 自分のPCのルーティングテーブルを確認し、解釈できる
ルーティングとは何か
ルーティング(Routing)とは、パケットを送信元から宛先まで最適な経路で転送するプロセスです。この処理はOSI参照モデルの第3層(ネットワーク層)で行われ、主にルータと呼ばれるネットワーク機器が担当します。
graph LR
subgraph "ネットワークA<br/>192.168.1.0/24"
PC1["PC1<br/>192.168.1.10"]
end
R1["ルータ1"]
R2["ルータ2"]
R3["ルータ3"]
subgraph "ネットワークB<br/>10.0.0.0/24"
PC2["PC2<br/>10.0.0.20"]
end
PC1 --> R1
R1 --> R2
R2 --> R3
R3 --> PC2
style PC1 fill:#e3f2fd
style PC2 fill:#e8f5e9
style R1 fill:#fff3e0
style R2 fill:#fff3e0
style R3 fill:#fff3e0ルーティングには以下の2つの側面があります。
| 側面 | 説明 |
|---|---|
| 経路情報の収集 | どのネットワークにどうやって到達できるかの情報を集める |
| パケット転送 | 収集した経路情報に基づいてパケットを次のルータに送る |
同一ネットワーク内の通信と異なるネットワークへの通信
パケットの転送方法は、宛先が同一ネットワーク内にあるか、異なるネットワークにあるかで大きく異なります。
同一ネットワーク内の通信
送信元と宛先が同じネットワークに属している場合、パケットはルータを経由せずに直接送信されます。
graph LR
subgraph "192.168.1.0/24"
A["PC-A<br/>192.168.1.10"] -->|直接通信| B["PC-B<br/>192.168.1.20"]
end
style A fill:#e3f2fd
style B fill:#e3f2fd判定方法は以下のとおりです。
- 送信元のIPアドレスとサブネットマスクでネットワークアドレスを算出
- 宛先のIPアドレスとサブネットマスクでネットワークアドレスを算出
- 両者が一致すれば同一ネットワーク
送信元: 192.168.1.10 / 255.255.255.0
→ ネットワークアドレス: 192.168.1.0
宛先: 192.168.1.20 / 255.255.255.0
→ ネットワークアドレス: 192.168.1.0
結果: 一致 → 直接通信可能
異なるネットワークへの通信
送信元と宛先が異なるネットワークに属している場合、パケットはデフォルトゲートウェイ(ルータ)を経由して転送されます。
graph LR
subgraph "192.168.1.0/24"
A["PC-A<br/>192.168.1.10"]
GW1["ゲートウェイ<br/>192.168.1.1"]
end
R["ルータ/インターネット"]
subgraph "10.0.0.0/24"
GW2["ゲートウェイ<br/>10.0.0.1"]
B["PC-B<br/>10.0.0.20"]
end
A --> GW1
GW1 --> R
R --> GW2
GW2 --> B
style A fill:#e3f2fd
style B fill:#e8f5e9
style GW1 fill:#fff3e0
style GW2 fill:#fff3e0送信元: 192.168.1.10 / 255.255.255.0
→ ネットワークアドレス: 192.168.1.0
宛先: 10.0.0.20 / 255.255.255.0
→ ネットワークアドレス: 10.0.0.0
結果: 不一致 → デフォルトゲートウェイ経由で送信
デフォルトゲートウェイとは
デフォルトゲートウェイ(Default Gateway)は、異なるネットワークへパケットを送信する際の「出口」となるルータのIPアドレスです。宛先ネットワークへの具体的な経路が分からない場合、パケットはデフォルトゲートウェイに送られます。
デフォルトゲートウェイの役割
graph TB
subgraph "社内LAN 192.168.1.0/24"
PC["PC<br/>192.168.1.10"]
DG["デフォルトゲートウェイ<br/>192.168.1.1"]
end
Internet["インターネット"]
Web["Webサーバ<br/>203.0.113.50"]
PC -->|1. パケット送信| DG
DG -->|2. 転送| Internet
Internet -->|3. 到達| Web
style DG fill:#fff3e0
style PC fill:#e3f2fd
style Web fill:#e8f5e9デフォルトゲートウェイは以下の条件を満たす必要があります。
| 条件 | 説明 |
|---|---|
| 同一ネットワーク内 | 送信元ホストと同じサブネットに属している |
| ルーティング機能 | 他のネットワークへパケットを転送できる |
| 到達可能 | 送信元ホストから直接通信できる |
デフォルトゲートウェイの確認方法
Windowsの場合
|
|
実行結果の例:
イーサネット アダプター イーサネット:
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.10
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.1.1
macOS/Linuxの場合
|
|
または
|
|
実行結果の例:
default via 192.168.1.1 dev eth0
ルーティングテーブルの仕組み
ルーティングテーブル(経路表)は、パケットをどこに転送すべきかを決定するためのデータベースです。ルータだけでなく、一般的なPCやサーバにもルーティングテーブルが存在します。
ルーティングテーブルの構成要素
ルーティングテーブルの各エントリには以下の情報が含まれます。
| 項目 | 説明 | 例 |
|---|---|---|
| 宛先ネットワーク | 到達したいネットワークアドレス | 10.0.0.0/24 |
| ネクストホップ | パケットを転送する次のルータのIPアドレス | 192.168.1.1 |
| インターフェース | パケットを送出するネットワークインターフェース | eth0 |
| メトリック | 経路の優先度(値が小さいほど優先) | 100 |
ルーティングテーブルの確認方法
Windowsの場合
|
|
実行結果の例:
===========================================================================
アクティブ ルート:
ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.10 25
127.0.0.0 255.0.0.0 リンク上 127.0.0.1 331
192.168.1.0 255.255.255.0 リンク上 192.168.1.10 281
192.168.1.10 255.255.255.255 リンク上 192.168.1.10 281
192.168.1.255 255.255.255.255 リンク上 192.168.1.10 281
===========================================================================
Linuxの場合
|
|
実行結果の例:
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10 metric 100
ルーティングテーブルの読み方
上記のWindowsの例で、各エントリの意味を解説します。
graph TB
subgraph "ルーティングテーブルの解釈"
E1["0.0.0.0/0 → 192.168.1.1<br/>デフォルトルート"]
E2["127.0.0.0/8 → ローカル<br/>ループバック"]
E3["192.168.1.0/24 → ローカル<br/>直接接続ネットワーク"]
end| エントリ | 意味 |
|---|---|
| 0.0.0.0 / 0.0.0.0 | デフォルトルート。他のエントリに一致しないすべての宛先 |
| 127.0.0.0 / 255.0.0.0 | ループバックアドレス。自分自身への通信 |
| 192.168.1.0 / 255.255.255.0 | 直接接続されたネットワーク。ルータを経由せず直接通信 |
「リンク上」という表記は、宛先に直接到達できる(ルータを経由しない)ことを意味します。
ルーティングの経路決定プロセス
パケットを送信する際、ルーティングテーブルを参照して適切な転送先を決定します。この決定プロセスは「ロンゲストマッチ」と呼ばれるアルゴリズムに基づいています。
ロンゲストマッチとは
ロンゲストマッチ(Longest Prefix Match)は、宛先IPアドレスに最も長く一致するネットワークプレフィックスを持つ経路を選択するアルゴリズムです。
graph TD
A["宛先: 10.1.2.100"] --> B{"ルーティングテーブル検索"}
B --> C["10.0.0.0/8 に一致<br/>プレフィックス長: 8"]
B --> D["10.1.0.0/16 に一致<br/>プレフィックス長: 16"]
B --> E["10.1.2.0/24 に一致<br/>プレフィックス長: 24"]
E --> F["最長一致を選択<br/>10.1.2.0/24"]
style E fill:#c8e6c9
style F fill:#a5d6a7以下のルーティングテーブルがある場合を考えます。
| 宛先ネットワーク | ネクストホップ |
|---|---|
| 10.0.0.0/8 | 192.168.1.1 |
| 10.1.0.0/16 | 192.168.1.2 |
| 10.1.2.0/24 | 192.168.1.3 |
| 0.0.0.0/0 | 192.168.1.254 |
宛先が 10.1.2.100 の場合:
- 10.0.0.0/8 に一致(プレフィックス長8ビット)
- 10.1.0.0/16 に一致(プレフィックス長16ビット)
- 10.1.2.0/24 に一致(プレフィックス長24ビット)
- 10.1.2.0/24 が最長一致のため、192.168.1.3 に転送
デフォルトルートの役割
デフォルトルート(0.0.0.0/0)は、プレフィックス長が0ビットのため、すべてのIPアドレスに一致します。しかし、ロンゲストマッチにより、他の具体的な経路が存在する場合はそちらが優先されます。
デフォルトルートは「最後の砦」として機能し、明示的な経路情報がない宛先へのパケットを転送します。
パケット転送の流れ
PC-AからPC-Bへパケットが送信される際の詳細な流れを見ていきます。
sequenceDiagram
participant PCA as PC-A<br/>192.168.1.10
participant R1 as ルータ1<br/>192.168.1.1
participant R2 as ルータ2
participant PCB as PC-B<br/>10.0.0.20
Note over PCA: 1. 宛先10.0.0.20は<br/>異なるネットワーク
PCA->>R1: 2. デフォルトGWへ送信
Note over R1: 3. ルーティングテーブル参照
R1->>R2: 4. 次のルータへ転送
Note over R2: 5. ルーティングテーブル参照
R2->>PCB: 6. 宛先に到達各ステップの詳細
- 宛先判定: PC-Aは宛先IP(10.0.0.20)と自身のサブネットを比較し、異なるネットワークと判断
- デフォルトゲートウェイへ送信: パケットをデフォルトゲートウェイ(192.168.1.1)に送信
- ルータ1での経路決定: ルータ1はルーティングテーブルを参照し、10.0.0.0/24への経路を検索
- 次のホップへ転送: ルータ1はパケットをルータ2に転送
- ルータ2での経路決定: ルータ2はルーティングテーブルを参照
- 宛先への配送: ルータ2は10.0.0.0/24が直接接続されているため、PC-Bに直接配送
TTL(Time To Live)の役割
パケットがネットワーク内で無限ループしないように、TTLという仕組みがあります。
| 項目 | 説明 |
|---|---|
| 初期値 | 送信元で設定(通常64または128) |
| 減算 | ルータを通過するたびに1減算 |
| 期限切れ | TTLが0になるとパケットは破棄される |
| 通知 | 破棄時にICMP Time Exceededメッセージを送信元に返す |
この仕組みは、traceroute(Windows: tracert)コマンドで経路を調査する際に利用されます。
静的ルーティングと動的ルーティング
ルーティングテーブルの経路情報を設定・管理する方法には、静的ルーティングと動的ルーティングの2種類があります。
静的ルーティング
静的ルーティング(Static Routing)は、管理者が手動で経路情報を設定する方法です。
graph LR
subgraph "静的ルーティングの設定"
Admin["管理者"] -->|手動設定| R["ルータ"]
R --> RT["ルーティングテーブル"]
end静的ルーティングの特徴
| メリット | デメリット |
|---|---|
| 設定がシンプルで理解しやすい | ネットワーク変更時に手動更新が必要 |
| CPUやメモリの負荷が低い | 大規模ネットワークでは管理が困難 |
| セキュリティが高い(予測可能な経路) | 障害時の自動切り替えができない |
| 帯域を消費しない | 設定ミスのリスクがある |
静的ルートの設定例
Linuxで静的ルートを追加する場合:
|
|
Windowsで静的ルートを追加する場合:
|
|
動的ルーティング
動的ルーティング(Dynamic Routing)は、ルーティングプロトコルを使用して自動的に経路情報を交換・更新する方法です。
graph LR
subgraph "動的ルーティング"
R1["ルータ1"] <-->|経路情報交換| R2["ルータ2"]
R2 <-->|経路情報交換| R3["ルータ3"]
R1 <-->|経路情報交換| R3
end動的ルーティングの特徴
| メリット | デメリット |
|---|---|
| 経路の自動学習・更新 | 設定が複雑 |
| 障害時の自動経路切り替え | CPUやメモリの負荷が高い |
| 大規模ネットワークに適している | プロトコルによる帯域消費 |
| 管理負荷の軽減 | 収束までに時間がかかる場合がある |
静的ルーティングと動的ルーティングの使い分け
| 環境 | 推奨 |
|---|---|
| 小規模ネットワーク(数台のルータ) | 静的ルーティング |
| 大規模ネットワーク | 動的ルーティング |
| スタブネットワーク(出口が1つ) | 静的ルーティング |
| 冗長構成が必要な環境 | 動的ルーティング |
| セキュリティ重視 | 静的ルーティング |
実際の環境では、両方を組み合わせて使用することが一般的です。
代表的なルーティングプロトコル
動的ルーティングで使用される主要なルーティングプロトコルを紹介します。
ルーティングプロトコルの分類
graph TB
RP["ルーティングプロトコル"]
RP --> IGP["IGP<br/>Interior Gateway Protocol"]
RP --> EGP["EGP<br/>Exterior Gateway Protocol"]
IGP --> DV["ディスタンスベクタ型"]
IGP --> LS["リンクステート型"]
DV --> RIP["RIP"]
DV --> EIGRP["EIGRP"]
LS --> OSPF["OSPF"]
LS --> ISIS["IS-IS"]
EGP --> BGP["BGP"]| 分類 | 説明 | 代表的なプロトコル |
|---|---|---|
| IGP | 同一組織内(AS内)で使用 | RIP, OSPF, EIGRP, IS-IS |
| EGP | 異なる組織間(AS間)で使用 | BGP |
RIP(Routing Information Protocol)
RIPは最も古く、シンプルなルーティングプロトコルです。
| 項目 | 内容 |
|---|---|
| 種別 | ディスタンスベクタ型 |
| メトリック | ホップ数(最大15) |
| 更新間隔 | 30秒 |
| 特徴 | 設定が簡単、小規模ネットワーク向け |
| 制限 | 16ホップ以上は到達不能と判断 |
OSPF(Open Shortest Path First)
OSPFは企業ネットワークで広く使用されるルーティングプロトコルです。
| 項目 | 内容 |
|---|---|
| 種別 | リンクステート型 |
| メトリック | コスト(帯域幅に基づく) |
| 収束速度 | 高速 |
| 特徴 | エリア分割による階層化、大規模対応 |
| 認証 | MD5認証をサポート |
BGP(Border Gateway Protocol)
BGPはインターネットの根幹を支えるルーティングプロトコルです。
| 項目 | 内容 |
|---|---|
| 種別 | パスベクタ型 |
| 用途 | AS間のルーティング |
| 特徴 | ポリシーベースの経路制御が可能 |
| 現行バージョン | BGP-4 |
ルーティングのトラブルシューティング
ネットワーク接続の問題を調査する際に役立つコマンドを紹介します。
ping - 疎通確認
宛先ホストへの到達性を確認します。
|
|
traceroute / tracert - 経路確認
パケットが通過するルータを表示します。
|
|
実行結果の例:
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max
1 192.168.1.1 1.234 ms
2 10.0.0.1 5.678 ms
3 203.0.113.1 10.123 ms
4 8.8.8.8 15.456 ms
よくあるトラブルと対処法
| 症状 | 考えられる原因 | 確認方法 |
|---|---|---|
| すべての外部通信が失敗 | デフォルトゲートウェイの設定ミス | ipconfig / ip route で確認 |
| 特定のネットワークに到達不能 | 静的ルートの設定ミス | route print / ip route show で確認 |
| 一部のホップでタイムアウト | ファイアウォールでICMPがブロック | 正常な場合もある |
| デフォルトGWにpingが通らない | ケーブル接続、IP設定の問題 | 物理接続とIPアドレス設定を確認 |
まとめ
本記事では、ルーティングの基礎とデフォルトゲートウェイについて解説しました。
重要なポイントを振り返ります。
- ルーティングとは: パケットを送信元から宛先まで適切な経路で転送するプロセス
- デフォルトゲートウェイ: 異なるネットワークへの通信時に使用する「出口」となるルータ
- ルーティングテーブル: パケットの転送先を決定するためのデータベース
- ロンゲストマッチ: 最も長く一致するプレフィックスを持つ経路を選択するアルゴリズム
- 静的ルーティングと動的ルーティング: 手動設定と自動学習の2つのアプローチがあり、環境に応じて使い分ける
ルーティングの仕組みを理解することで、ネットワークの設計やトラブルシューティングがより効果的に行えるようになります。
次回の記事では、DNSの仕組みと名前解決のプロセスについて解説します。