【Linux】routeコマンドの使い方|経路の確認と追加・変更

【Linux】routeコマンドの使い方|経路の確認と追加・変更

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:4,812

Linuxのrouteコマンドを使ってネットワークのルーティングテーブルを確認・変更する方法を徹底解説。デフォルトゲートウェイの確認や静的ルートの追加手順など、インフラエンジニアが知っておくべき実務のトラブルシューティングをわかりやすく紹介します。

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

初心者向け

わかばちゃんと学ぶ サーバー監視

難易度
実用性
読みやすさ

マンガと図解が中心で圧倒的に読みやすい。負荷調査の手法がスッと理解できるようになります。

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ

「サーバーから外部のインターネットへ通信できない」「特定のセグメントだけパケットが届かないとき、どの経路を通っているのか確認したい」といったネットワークのトラブルに直面したことはないでしょうか。

ネットワークの疎通確認や経路制御において、ルーティングテーブルの確認と適切な設定変更はインフラエンジニアにとって不可欠な作業です。

この記事を読むことで、LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルのrouteコマンドを用いたルーティングテーブルの確認方法から、デフォルトゲートウェイの変更、静的ルートの追加・削除手順を理解し、あわせて現代のLinuxで標準的に利用されるip routeコマンドへの移行方法まで学べます。

確認した環境

本記事で解説するコマンドと手順は、以下の環境で動作を確認しています。

Linuxのrouteコマンドとは?ネットワーク経路やトラブル調査の基本

routeコマンドは、LinuxなどのUnix系OSにおいて、カーネルのIPIP [アイピー]Internet Protocol。インターネット通信の基本プロトコルルーティングテーブルを表示・操作するためのコマンドです。

ネットワークインターフェースがパケットを送信する際、宛先IPアドレスに対して「どのルーター(ゲートウェイ)を経由すべきか」「どのネットワークカードから送信すべきか」を決定するためのルールがルーティングテーブルに記録されています。

通信不良が発生した際、「パケットが意図した経路を通っているか」「デフォルトゲートウェイが正しく設定されているか」を確認する上で、routeコマンドは基本的な調査ツールとして役立ちます。

routeコマンドの基本的な使い方とネットワーク経路の確認

まずは、現在のルーティングテーブルを表示する方法と、その出力結果の見方について解説します。

route -nで現在のネットワーク経路(ルーティングテーブル)を確認する

オプションを何も指定せずに route コマンドを実行すると、ルーティングテーブルのアドレスがホスト名などに変換されて表示される場合があります。 名前解決に時間がかかる環境では、ルーティングテーブルの表示自体に時間がかかることがあります。

そのため、ネットワーク障害の調査などでは、名前解決を行わず数値形式で表示する -n オプションを付けて実行する方法が一般的です。

Terminal window
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

routeコマンド出力結果の見方(Destination、Gatewayなど)

出力された各項目の意味は以下の通りです。ルーティングテーブルを正しく読み解くための重要な要素となります。

  • Destination(宛先): パケットの宛先となるネットワークアドレスまたはホストアドレスです。0.0.0.0 はデフォルトルートを示します。
  • Gateway(ゲートウェイ): パケットを転送する次ホップ(ルーター)のIPアドレスです。自網内の直接接続である場合は * または 0.0.0.0 が表示されます。
  • Genmask(ネットマスク): 宛先アドレスのネットワーク範囲を特定するためのサブネットマスクです。
  • Flags(フラグ): 経路の状態や特性を示すフラグです。主なものは以下の通りです。
  • Metric(メトリック): 経路の距離や優先度を表すために利用される値です。route コマンドのmanページでは、宛先までの「距離」として説明されており、通常はホップ数などで表されます。 また、同じ宛先に複数の経路が存在する場合、Linuxのルート選択では宛先プレフィックスの最長一致など、複数の条件が考慮されます。そのため、「Metricが小さい経路が常に選択される」と単純に考えないように注意が必要です。
  • Iface(インターフェース): パケットを送信するネットワークインターフェース名(例: eth0, enp3s0 など)です。

デフォルトゲートウェイの経路を確認・変更する方法

インターネットや外部ネットワークと通信するためには、デフォルトゲートウェイの正しい設定が不可欠です。ここでは現在の確認と変更の手順を解説します。

現在設定されているデフォルトゲートウェイを確認する

デフォルトゲートウェイは、Destinationが 0.0.0.0(または default)の行を確認することで特定できます。

Terminal window
route -n | grep '^0.0.0.0'

あるいは、route コマンドをオプションなしで実行し、Gateway列にルーターのIPアドレスが表示されているエントリを確認します。

デフォルトゲートウェイの経路を追加・変更する

既存のデフォルトゲートウェイを変更する場合、route コマンドでは一度既存のデフォルトゲートウェイを削除してから新しいものを追加します(※後述する ip route replace を使うと、削除せずに直接置き換えることが可能です)。

注意: SSHSSH [エスエスエイチ]Secure Shell。暗号化されたリモート接続プロトコルなどのリモート接続中にデフォルトゲートウェイを削除すると、現在の接続が切断される可能性があります。リモート環境では、作業前にコンソールなどの復旧手段を確保してください。

ステップ1:既存のデフォルトゲートウェイを削除する

Terminal window
sudo route del default

ステップ2:新しいデフォルトゲートウェイを追加する

Terminal window
sudo route add default gw 192.168.1.254 dev eth0

ここで指定しているオプションの意味は以下の通りです。

  • default: 宛先が一致しないすべてのパケットの転送先を指定します(0.0.0.0 と同義)。
  • gw 192.168.1.254: 経由するゲートウェイのIPアドレスを指定します。
  • dev eth0: 通信に使用するネットワークインターフェースを指定します。

スタティックルート(静的ルート)による特定のネットワーク経路の追加と削除

特定のネットワークセグメントへ通信するために、特定のルーターを経由させる「静的ルート(スタティックルート)」の追加と削除手順を解説します。

route addで特定のネットワークへの経路を追加する

例えば、社内の別拠点である 10.20.0.0/16 というネットワークへアクセスする際、ルーター 192.168.1.254 を経由させたい場合は以下のように実行します。

Terminal window
sudo route add -net 10.20.0.0 netmask 255.255.0.0 gw 192.168.1.254 dev eth0

特定のホスト(例: 192.168.100.50)宛ての経路を単体で追加したい場合は -host オプションを使用します。

Terminal window
sudo route add -host 192.168.100.50 gw 192.168.1.254 dev eth0

パラメータの補足:

  • -net: 宛先がネットワークであることを示します。
  • netmask: 宛先ネットワークのサブネットマスクを指定します。
  • gw: 経由するルーターのIPアドレスを指定します。
  • dev: 使用するネットワークインターフェースを指定します。

補足: 指定するゲートウェイ(gw)は、事前に対象のネットワークインターフェースから到達可能(Reachable)である必要があります。

route delで不要になったネットワーク経路を削除する

追加した静的ルートが不要になった場合や、設定を誤ってやり直す場合は route del コマンドを使用します。

ネットワーク単位の経路を削除する場合:

Terminal window
sudo route del -net 10.20.0.0 netmask 255.255.0.0

ホスト単位の経路を削除する場合:

Terminal window
sudo route del -host 192.168.100.50

ここで紹介した route コマンドによる変更は、実行中のカーネルのルーティングテーブルに対する一時的な変更です。ネットワーク設定の再適用やOSの再起動などによって、手動で追加した経路が失われる場合があります。

設定を恒久化する場合は、使用しているディストリビューションやネットワーク管理方式に応じた設定が必要です。 Ubuntu 22.04 LTSでは、一般的にNetplanの設定ファイル(/etc/netplan/*.yaml)に routes: を記述して静的ルートを設定します。 一方、Red Hat系の一部の旧来の環境では、/etc/sysconfig/network-scripts/ 配下の設定ファイルが使用される場合があります。

注意点:モダンなLinux環境でのip routeコマンドへの移行について

長年親しまれてきた route コマンド(net-toolsパッケージに含まれる)は、多くのモダンなLinuxディストリビューションにおいて非推奨(レガシー)扱いとなっています。

Ubuntu 22.04 LTSなどの現行OSでは、より高機能でモダンなネットワーク管理ツールである iproute2 パッケージの ip コマンドの利用が標準となっています。

ルーティングテーブルを確認・操作する際は、将来的にも ip route コマンドへの移行を検討・推奨します。

特定の宛先に対して選択される経路を確認する

現代のLinuxでのトラブルシューティングとしては、ip route get も便利です。

Terminal window
ip route get 8.8.8.8

このコマンドでは、指定した宛先に対してルーティングテーブルからどの経路が選択されるのかを確認できます。

例えば、以下のような結果が表示されます。

8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100

この場合、8.8.8.8 への通信では、192.168.1.1 をゲートウェイとして eth0 から送信し、送信元アドレスとして 192.168.1.100 が選択されることが分かります。

ただし、ip route get は実際にパケットを送信して通信の疎通を確認するコマンドではありません。実際の通信可否を確認する場合は、ping、traceroute、curl など、目的に応じた疎通確認も必要です。

「特定のセグメントだけパケットが届かない」といった障害では、まず ip route get でローカルホストが選択している経路を確認すると、原因の切り分けに役立ちます。

参考として、route コマンドと ip route コマンドの対比表を以下に示します。

操作内容旧式(routeコマンド)モダン(ip routeコマンド)
ルーティング表示route -nip route show
デフォルトGW追加sudo route add default gw <IP>sudo ip route add default via <IP> dev <Iface>
デフォルトGW変更route del default後にroute addsudo ip route replace default via <IP> dev <Iface>
静的ルート追加sudo route add -net <NW> netmask <Mask> gw <IP>sudo ip route add <NW>/<Prefix> via <IP>
経路削除sudo route del -net <NW> netmask <Mask>sudo ip route del <NW>/<Prefix>

このように、ip route コマンドはサブネットマスクをCIDR表記(例: /24)で直感的に指定できるなどのメリットがあります。

まとめ:routeコマンドでネットワーク経路を適切に確認・制御しよう

本記事では、Linuxの route コマンドを用いたネットワーク経路の確認方法と設定変更の手順について解説しました。

記事のポイントを以下にまとめます。

  • route -n を使うことで、名前解決による表示の遅延を避けながら、現在のルーティングテーブルを数値形式で確認できる。
  • デフォルトゲートウェイの変更は、一度既存のルートを削除してから新しいゲートウェイを指定して追加する。
  • route add および route del を用いることで、特定のネットワークやホストに対する静的ルートの追加・削除ができる。
  • route コマンドによる設定は一時的なものであるため、再起動後も維持するには恒久的なネットワーク設定が必要となる。
  • 近年のモダンなLinux環境では、より高機能な ip route コマンドへの移行が進んでいる。

ネットワークのトラブルシューティングや環境構築の場面において、ルーティングの仕組みを把握し、正しく経路を確認・制御できるようにしておきましょう。


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る →

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

人気記事


記事を評価

Thanks!
目次
Scroll to Top