ネットワーク通信において、パケットが送信元から宛先に到達するためには、適切な経路を選択する仕組みが不可欠です。この経路選択の仕組みがルーティングであり、その中心的な役割を果たすのがデフォルトゲートウェイです。

本記事では、ルーティングとデフォルトゲートウェイについて以下の内容を解説します。

  • パケットがネットワーク間を転送される仕組み
  • ルーティングテーブルの構造と見方
  • デフォルトゲートウェイの役割と設定
  • 静的ルーティングと動的ルーティングの違い
  • 代表的なルーティングプロトコルの概要

この記事を読むことで、パケットの経路決定の仕組みを理解し、ルーティングの基本設定ができるようになります。

前提条件

本記事を理解するために、以下の知識があることを前提としています。

  • IPアドレスとサブネットマスクの基本的な理解(前回記事参照)
  • ネットワーク部とホスト部の概念を把握している
  • OSI参照モデルの第3層(ネットワーク層)の役割を知っている

実行環境

ルーティングテーブルの確認には以下の環境を使用します。

OS 確認コマンド
Windows 10/11 route print または netstat -r
macOS netstat -rn または route get default
Linux ip route show または route -n

特別なソフトウェアのインストールは不要です。

期待される学習成果

本記事を読み終えると、以下のことができるようになります。

  1. パケットがルータを経由して転送される仕組みを説明できる
  2. ルーティングテーブルの各エントリの意味を理解できる
  3. デフォルトゲートウェイの役割を正しく説明できる
  4. 静的ルーティングと動的ルーティングの違いを区別できる
  5. 自分の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

判定方法は以下のとおりです。

  1. 送信元のIPアドレスとサブネットマスクでネットワークアドレスを算出
  2. 宛先のIPアドレスとサブネットマスクでネットワークアドレスを算出
  3. 両者が一致すれば同一ネットワーク
送信元: 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の場合

1
ipconfig

実行結果の例:

イーサネット アダプター イーサネット:

   IPv4 アドレス . . . . . . . . . . . .: 192.168.1.10
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 192.168.1.1

macOS/Linuxの場合

1
ip route show default

または

1
route -n get default

実行結果の例:

default via 192.168.1.1 dev eth0

ルーティングテーブルの仕組み

ルーティングテーブル(経路表)は、パケットをどこに転送すべきかを決定するためのデータベースです。ルータだけでなく、一般的なPCやサーバにもルーティングテーブルが存在します。

ルーティングテーブルの構成要素

ルーティングテーブルの各エントリには以下の情報が含まれます。

項目 説明
宛先ネットワーク 到達したいネットワークアドレス 10.0.0.0/24
ネクストホップ パケットを転送する次のルータのIPアドレス 192.168.1.1
インターフェース パケットを送出するネットワークインターフェース eth0
メトリック 経路の優先度(値が小さいほど優先) 100

ルーティングテーブルの確認方法

Windowsの場合

1
route print

実行結果の例:

===========================================================================
アクティブ ルート:
ネットワーク宛先        ネットマスク          ゲートウェイ       インターフェイス  メトリック
          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の場合

1
ip route show

実行結果の例:

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 の場合:

  1. 10.0.0.0/8 に一致(プレフィックス長8ビット)
  2. 10.1.0.0/16 に一致(プレフィックス長16ビット)
  3. 10.1.2.0/24 に一致(プレフィックス長24ビット)
  4. 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. 宛先に到達

各ステップの詳細

  1. 宛先判定: PC-Aは宛先IP(10.0.0.20)と自身のサブネットを比較し、異なるネットワークと判断
  2. デフォルトゲートウェイへ送信: パケットをデフォルトゲートウェイ(192.168.1.1)に送信
  3. ルータ1での経路決定: ルータ1はルーティングテーブルを参照し、10.0.0.0/24への経路を検索
  4. 次のホップへ転送: ルータ1はパケットをルータ2に転送
  5. ルータ2での経路決定: ルータ2はルーティングテーブルを参照
  6. 宛先への配送: ルータ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で静的ルートを追加する場合:

1
2
# 10.0.0.0/24 宛のパケットを 192.168.1.1 経由で送信
ip route add 10.0.0.0/24 via 192.168.1.1

Windowsで静的ルートを追加する場合:

1
2
# 10.0.0.0/24 宛のパケットを 192.168.1.1 経由で送信
route add 10.0.0.0 mask 255.255.255.0 192.168.1.1

動的ルーティング

動的ルーティング(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 - 疎通確認

宛先ホストへの到達性を確認します。

1
ping 192.168.1.1

traceroute / tracert - 経路確認

パケットが通過するルータを表示します。

1
2
3
4
5
# Linux/macOS
traceroute 8.8.8.8

# Windows
tracert 8.8.8.8

実行結果の例:

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アドレス設定を確認

まとめ

本記事では、ルーティングの基礎とデフォルトゲートウェイについて解説しました。

重要なポイントを振り返ります。

  1. ルーティングとは: パケットを送信元から宛先まで適切な経路で転送するプロセス
  2. デフォルトゲートウェイ: 異なるネットワークへの通信時に使用する「出口」となるルータ
  3. ルーティングテーブル: パケットの転送先を決定するためのデータベース
  4. ロンゲストマッチ: 最も長く一致するプレフィックスを持つ経路を選択するアルゴリズム
  5. 静的ルーティングと動的ルーティング: 手動設定と自動学習の2つのアプローチがあり、環境に応じて使い分ける

ルーティングの仕組みを理解することで、ネットワークの設計やトラブルシューティングがより効果的に行えるようになります。

次回の記事では、DNSの仕組みと名前解決のプロセスについて解説します。

参考リンク