(最終更新月:2023年2月)
✔このような方へ向けて書かれた記事となります
「routeコマンドでは何ができるのだろうか?」
「routeコマンドの使い方が知りたい」
「routeコマンドの実例が見てみたい」
✔当記事を通じてお伝えすること
- routeコマンドの基礎知識
- routeコマンドで表示された一覧の見方
- routeコマンドのオプション一覧と実例
当記事では、コマンドの基本や使い方だけでなく、筆者が実際に使っている コマンドの実例と活用方法も公開しています。
routeコマンドの基礎知識
routeの基礎知識をお伝えします。
実例を理解し、使いこなすには、基本が大切です。
- routeコマンドとは?
- routeコマンドの構成
- routeコマンドを使う際の注意点
routeコマンドとは?
routeコマンドは、LinuxやMacOSなどUnix系のOS(オペレーティングシステム)において、ネットワークルーティングテーブルを表示・変更するために使用されるコマンドです。
このコマンドを使用することで、以下のようなことができます。
- 現在のネットワークルーティングテーブルの内容を確認
- 新しいルートを追加
- 既存のルートを変更・削除
例えば、複数のネットワークインターフェース(ネットワークカードなど)を持つ場合に、どのインターフェースを通じて通信をおこなうかを指定できるのです。
使用方法は、ターミナル上でrouteコマンドを実行し、オプションや引数を指定します。
詳細な使用方法やオプションについては、man routeコマンドにより、マニュアルを確認することも可能です。
routeコマンドの構成
routeコマンドの基本的な構成は以下のとおりです。
route [add | del | change | append | replace | monitor] [ネットワークアドレス] [オプション]
- add: ルートを追加
- del: ルートを削除
- change: ルートを変更
- append: ルートを追加
- replace: ルートを置き換え
- monitor: ルートテーブルの変更を監視
具体例として、192.168.0.0/16へのルートを追加する場合は以下のようになります。
route add -net 192.168.0.0/16 gw 192.168.1.1
-net オプションに続いて追加するネットワークアドレスを指定し、gw オプションでゲートウェイのアドレスを指定しています。
routeコマンドを使う際の注意点
routeコマンドを使う際に気にしておくべき注意点をご紹介します。
なぜなら基本通りに書いていても、上手く表示されないことがあるからです。
- ネットワークアドレスとゲートウェイのアドレスを正確に指定する
- ネットワークアドレスには、サブネットマスクを含める必要がある
- ルートの追加順で、優先度が決まる(より上に追加されたものから優先)
- change コマンドを使用する場合、変更前と同じルートを指定する必要がある
- monitor オプションを使用する場合、ルートテーブルの変更を監視するために、別のターミナルでコマンドを実行する
オプションの設定時に上手くいかないときは、これらの注意点を見てみると解決できる可能性があります。
routeコマンドで表示された一覧を徹底解説
routeコマンドを使うと以下のように表示されます。
$ route
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
default _gateway 0.0.0.0 UG 600 0 0 wxx0013eff42ef4
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 wxx0013eff42ef4
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.11.0 0.0.0.0 255.255.255.0 U 600 0 0 wxx0013eff42ef4
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
各列の説明は以下のとおり。
- Destination : 送信先ネットワークアドレス
- Gateway : ゲートウェイのアドレス
- Genmask : ネットマスク
- Flags : ルートの属性
- Metric : ルートのコスト
- Ref : ルートの参照回数
- Use : ルートの使用回数
- Iface : ルートに関連するネットワークインターフェース
routeコマンドのオプション一覧
こちらではrouteコマンドで使えるオプションを解説します。
オプションを使いこなして、さまざまな処理をおこなえるようにしましょう。
- IPアドレスを数値で表示する:n
- 詳細な出力を表示する:v
- アドレスファミリを指定する:A
- マルチパスルーティングを有効化する:M
IPアドレスを数値で表示する:n
nオプションを使うと、IPアドレスをホスト名でなく、数値で表示できます。
route -n
$ route -n
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
0.0.0.0 192.168.11.1 0.0.0.0 UG 600 0 0 wxx0013eff42ef4
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wxx0013eff42ef4
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.11.0 0.0.0.0 255.255.255.0 U 600 0 0 wxx0013eff42ef4
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
詳細な出力を表示する:v
vオプションでより詳細を出力できます。
route -v
$ route -v
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
default _gateway 0.0.0.0 UG 600 0 0 wxx0013eff42ef4
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 wxx0013eff42ef4
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.11.0 0.0.0.0 255.255.255.0 U 600 0 0 wxx0013eff42ef4
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
ネットワークが単純な構成の場合、オプションなしと変わらないこともあります。
アドレスファミリを指定する:A
Aオプションを使って、アドレスファミリを指定できます。
アドレスファミリとは、IPv4やIPv6などの種類のこと。
以下はAオプションで、IPv6のルーティングテーブルを表示しています。
$ route -A inet6
カーネルIPv6 経路テーブル
Destination Next Hop Flag Met Ref Use If
ip6-localhost/128 [::] U 256 2 0 lo
2001:f70:3100:3800::/64 [::] U 600 1 0 wxx0013eff42ef4
fe80::/64 [::] U 600 1 0 wxx0013eff42ef4
[::]/0 _gateway UG 600 5 0 wxx0013eff42ef4
ip6-localhost/128 [::] Un 0 7 0 lo
yulikepython-HP-Desktop/128 [::] Un 0 5 0 wxx0013eff42ef4
yulikepython-HP-Desktop/128 [::] Un 0 2 0 wxx0013eff42ef4
yulikepython-HP-Desktop/128 [::] Un 0 4 0 wxx0013eff42ef4
ip6-mcastprefix/8 [::] U 256 5 0 wxx0013eff42ef4
[::]/0 [::] !n -1 1 0 lo
マルチパスルーティングを有効化する:M
Mオプションでマルチパスルーティングを有効化できます。
例としては以下のとおり。
route add -net 192.168.0.0/16 gw 192.168.1.1 -M
マルチパスルーティングとは、複数のネットワークインターフェースを使用することで、ネットワークのトラフィックを分散する技術のこと。
ひとつのネットワークインターフェースしか持っていない方は使用しません。
まとめ:routeコマンドを知っておくととても便利
当記事の内容をまとめます。
- routeコマンドは、ネットワークルーティングテーブルを表示するもの
- routeコマンドの一覧では、ゲートウェイやネットマスクなど、さまざまな情報が確認できる
- routeコマンドのオプションを使うと、コマンドの幅が広がる
routeコマンドは、ネットワークの状況を確認したいときに使えるコマンド。
頻繁に使うわけではありませんが、知っておくととても便利です。
ぜひこれを機会に、いろいろと触ってみてください。
✔Linuxの主要コマンド37選