この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:8
ページ更新者:atom
更新日時:2026-06-11 07:12:00

タイトル: ルーティング一覧の確認方法
SEOタイトル: ルーティングテーブル確認コマンド — Linux ip route / Windows route print / PowerShell Get-NetRoute

この記事の要点
  • Linux: ip route show (新標準) / route -n (旧) / netstat -rn (非推奨)
  • Windows: route print / PowerShell Get-NetRoute
  • デフォルトゲートウェイは宛先 0.0.0.0/0 の経路。インターネット行きの出口
  • メトリックは経路コスト。複数経路があるとき値の小さい方が優先
  • Static (静的) ルートは管理者が設定、Dynamic (動的) ルートは OSPF/BGP が学習
  • トラブルシュートの定番: 通信できないとき → 経路があるか送信元アドレス応答の戻り経路の順で確認

ルーティングテーブルとは

ルーティングテーブルは、OS や機器が「宛先 IP に対してどのインターフェースから、どのゲートウェイ経由で出すか」を決めるための表です。パケットを送信するときは必ずこの表を参照します。

同じ宛先に複数経路があるときはロンゲストマッチ (最長一致) → メトリックの順で 1 つに絞られます。

Linux: ip route (iproute2)

現代の Linux では ip コマンド (iproute2) が標準です。route / netstat / ifconfignet-tools 由来で非推奨扱いです。

# IPv4 ルーティング一覧
ip route show
ip -4 route

# 短縮形
ip r

# IPv6
ip -6 route

# 全テーブル (main, local, default の他、ip rule で参照する別テーブル)
ip route show table all

# 特定宛先がどの経路を選ぶか
ip route get 8.8.8.8
# 8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.42 uid 1000
#                 ↑GW          ↑出口  ↑送信元

# JSON で取得 (スクリプト向け)
ip -j route | jq .

出力例の読み方

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.42 metric 100
169.254.0.0/16 dev eth0 scope link metric 1000

意味:
  default ... 0.0.0.0/0 への経路 = デフォルトゲートウェイ
              192.168.1.1 経由、eth0 から出る
              proto dhcp = DHCP が設定した
              metric 100 = 優先度コスト

  192.168.1.0/24 dev eth0 scope link
              直結 LAN セグメント。GW 不要、ARP で解決
              src 192.168.1.42 = この経路で送る際の送信元

  169.254.0.0/16 = Link-local (DHCP 失敗時の自動アドレス)

Linux: 旧 route / netstat (参考)

# route コマンド (net-tools, 非推奨だが残っている環境では)
route -n
# Kernel IP routing table
# Destination   Gateway       Genmask       Flags Metric Ref Use Iface
# 0.0.0.0       192.168.1.1   0.0.0.0       UG    100    0   0   eth0
# 192.168.1.0   0.0.0.0       255.255.255.0 U     100    0   0   eth0

# -n は名前解決抑制 (素早くて誤解が減る)

# netstat も同等 (こちらも非推奨)
netstat -rn

Windows: route print

# CMD / PowerShell どちらでも
route print

# IPv4 だけ
route print -4

# 特定アドレスがマッチする経路を検索
route print 8.8.8.8

# 出力ヘッダ
# Active Routes:
# Network Destination     Netmask          Gateway       Interface  Metric
#           0.0.0.0          0.0.0.0      192.168.1.1   192.168.1.42  25
#         127.0.0.0        255.0.0.0         On-link        127.0.0.1  331
#       192.168.1.0    255.255.255.0         On-link     192.168.1.42  281

Windows: PowerShell の Get-NetRoute

# 推奨: モダンな cmdlet
Get-NetRoute

# IPv4 のみ
Get-NetRoute -AddressFamily IPv4

# デフォルトゲートウェイだけ
Get-NetRoute -DestinationPrefix 0.0.0.0/0

# 特定インターフェース
Get-NetRoute -InterfaceAlias "イーサネット"

# 静的経路追加 (要管理者)
New-NetRoute -DestinationPrefix 10.20.0.0/16 `
             -InterfaceAlias "イーサネット" `
             -NextHop 192.168.1.254 -RouteMetric 1

# 削除
Remove-NetRoute -DestinationPrefix 10.20.0.0/16

デフォルトゲートウェイ

宛先 0.0.0.0/0 (IPv6 は ::/0) の経路がデフォルトゲートウェイです。他の経路にマッチしない全パケットがここに流れます。インターネット行きの出口で、家庭ルータや企業の境界 NAT がこの役割を担います。

# Linux でデフォルトだけ
ip route | grep default
ip route show 0/0

# 複数デフォルトがある (Wi-Fi + 有線同時など)
default via 192.168.1.1   dev wlan0 metric 600
default via 192.168.1.254 dev eth0  metric 100
# → metric が小さい eth0 が優先

# 設定 (一時)
ip route add default via 192.168.1.1 dev eth0 metric 100
# 削除
ip route del default via 192.168.1.1

メトリック (経路コスト)

同じ宛先に複数経路があるときに優先度を決める数値。値が小さい方が優先されます。

OSデフォルト計算
LinuxDHCP / dhclient が割り当て (eth0=100, wlan0=600 など慣習的)
Windowsリンク速度から自動算出 (10 Gbps=5, 1 Gbps=25, 100 Mbps=35 ...)

Static vs Dynamic Route

分類設定用途
Static (静的)管理者が手動投入少数の経路 / VPN 越し / 中小規模 NW
Dynamic (動的)ルーティングプロトコル (RIP/OSPF/BGP) が学習大規模 NW / インターネット / マルチホーム
ConnectedNIC に IP を付けた瞬間に自動生成直結セグメント
Default0.0.0.0/0 への経路その他全て

VPN / コンテナでの追加経路

WireGuard / OpenVPN / Docker / Kubernetes は自動でルーティング表に経路を追加します。意図しない通信不能が起きたときは、これらが入れた経路をまず確認してください。

# VPN を張ると例えばこういう経路が追加される
ip route
# 0.0.0.0/1 via 10.8.0.1 dev wg0          ← VPN が全 traffic を奪う
# 128.0.0.0/1 via 10.8.0.1 dev wg0        ← (default を上書きするテクニック)
# default via 192.168.1.1 dev eth0
# 10.8.0.0/24 dev wg0 scope link

# Docker
# 172.17.0.0/16 dev docker0 scope link

# Kubernetes (Calico/Cilium 等の CNI が大量追加することも)

トラブルシュートの典型手順

  1. 宛先への経路があるか → ip route get <宛先IP> (Linux) / route print <IP> (Win)
  2. その経路の送信元アドレスはどれか (戻り経路に関係)
  3. 送信元から宛先への ICMP / TCP は通るか → ping / tcping / nc -vz
  4. 途中ホップでの停止 → traceroute / mtr / tracert
  5. 応答の戻り経路が無くて非対称ルーティングになっていないか
# 経路が無いと
ip route get 10.99.99.99
# RTNETLINK answers: Network is unreachable

# 経路があると
ip route get 10.99.99.99
# 10.99.99.99 via 10.0.0.1 dev tun0 src 10.0.0.42 uid 0

FAQ

Q: 複数 NIC の優先度を変えたい
A: Linux なら ip route change default via X metric N で metric を下げる。Windows は NIC のプロパティ「自動メトリック」を外して手動で値を設定するか Set-NetIPInterface -InterfaceAlias ... -InterfaceMetric N

Q: 一時的に追加した経路を残したい
A: Linux は再起動で消えます。/etc/sysconfig/network-scripts/route-eth0 (RHEL 旧) / NetworkManager のキーファイル / netplan (Ubuntu) / systemd-networkd で恒久化します。Windows は route -p add で永続化。

Q: ping は通るのに HTTP が通らない
A: 経路は正しい可能性が高く、Firewall / SecurityGroup / WAF / アプリ層の問題です。nc -vz host portcurl -v で切り分けます。