前の話で、ルータの内側にはルーティングテーブル(宛先ごとの参照表)があり、来たパケットの宛先IPで該当行を引いて、書かれた出口に渡している、というところまで腹落ちした。経路選択の正体は、宛先IPで表を引いて出口を選ぶ素朴な動作だった。
テーブルを引く動作までは見えた。次に気になるのは、そのテーブルに1行書き足すには何をすればいいのか、ということだろう。試しに CORE-RT-01 のコンフィグを覗くと、こんな1行が並んでいる。
CORE-RT-01# show running-config | include ip route
ip route 10.1.30.0 255.255.255.0 10.1.1.2
一見、英数字とドットの塊にしか見えない。先頭の ip route までは「スタティックルートを書くコマンドかもしれない」と当たりがつくが、その後ろの3つの数字の塊が、それぞれ何を意味しているのか — 自分の口で説明できる範囲を越えている。
ここで、自分にひとつ聞いてみてほしい。
この1行は、何を、どこに、どう書いているのだろう。前話で見たルーティングテーブルに1行書き足す行為のはずなのに、頭から1文字ずつ読み解こうとすると、どこで区切ればいいかすら分からない。
考えてみよう: ルーティングテーブルに1行書き足したいとき、何の情報があれば1行が完成するだろうか。前話の参照表のイメージ(『この宛先帯はこの出口へ』の対応)から、3つくらいの情報があれば足りそうな気もする。解説の先に進む前に、5秒だけ自分の言葉で組み立ててみてほしい。
結論を先に言う。
スタティックルートとは、管理者がルーティングテーブルに1行を手で書き足すこと。ip route <prefix> <mask> <next-hop> の3要素を埋めるだけで、ルータは新しい行き先を覚える。


暗号の塊を3つに切ってみる — ip route の最小構文
もう一度、CORE-RT-01 のコンフィグに書かれた1行を眺めてほしい。
ip route 10.1.30.0 255.255.255.0 10.1.1.2
頭から1文字ずつ読むのではなく、空白で区切って4つの塊に分けてみる。ip route / 10.1.30.0 / 255.255.255.0 / 10.1.1.2。先頭の ip route はコマンド名で、「これからスタティックルートを1行書きますよ」という宣言。残りの3つの数字の塊が、本話の主役だ。3つの欄を埋めるだけで、ルーティングテーブルに1行が書き加わる。
その3要素を、左から順に役割で呼ぶ。
| 値の例 | 役割 | 答えていること | |
|---|---|---|---|
| 1つ目 | 10.1.30.0 | 宛先プレフィクス(prefix) | どの宛先帯への経路か |
| 2つ目 | 255.255.255.0 | サブネットマスク(mask) | その宛先帯の粒度はどれくらいか |
| 3つ目 | 10.1.1.2 | next-hop | その宛先帯へは、次に誰に渡せばいいか |
前のシリーズ(IPアドレス)の旅で身につけた感覚を思い出してほしい。IPv4 アドレスは町と番地、サブネットマスク(またはプレフィックス長 /N)は町の大きさ — 1つ目と2つ目の組み合わせで、「10.1.30.0/24 帯」つまり「10.1.30.0 〜 10.1.30.255 の範囲を1つの宛先帯として扱う」が決まる。255.255.255.0 は /24 と等価で、本話のコンフィグでは Cisco IOS の慣習に従って dotted-decimal 表記で書かれている。
3つ目の 10.1.1.2 は、その宛先帯へ向かうとき次に渡す相手のIPアドレス。CORE-RT-01 から見た同じセグメント上に居る隣接ルータの IP で、ここでは SALES-RT-01(10.1.1.2)を指している。前話で見た『テーブルの各行は宛先帯と次の出口の対応』そのままの構造で、左2つが「宛先帯」、右1つが「次の出口」を埋めている。


3要素が揃った瞬間、ルーティングテーブルに新しい1行が書き加わる。書き加わった行はこう読める — 「10.1.30.0/24 宛のパケットが来たら、10.1.1.2 へ渡せ」。前話で見た動作(宛先IPで該当行を引いて書かれた出口に渡す)が、この1行に対しても同じように働くようになる。ip route の正体は、そのテーブルの中の1行をそのまま手で書く行為だった。
ポイント: ip route コマンドの最小構文は3要素
<prefix> <mask> <next-hop>。それぞれが「どの宛先帯か」「その帯の粒度」「次に渡す相手のIP」に対応する。3つの欄を埋めるだけで、ルーティングテーブルに1行が書き加わる。
next-hop の代わりに出口を書く — もう一つの書き方
コンフィグを別のルータで眺めていると、ときどきこんな書き方にも出会う。
ip route 10.1.30.0 255.255.255.0 GigabitEthernet0/1
3要素の最後が、IPアドレスではなくインターフェース名になっている。これは別のコマンドではない。同じ ip route の文法に乗りつつ、『次にどこへ渡すか』を「相手のIP」ではなく「自分のどのインターフェースから出すか」で答えている書き方だ。
2つの書き方を並べて見る。
| 書き方 | 答え方 | |
|---|---|---|
| 形式A (next-hop IP) | ip route 10.1.30.0 255.255.255.0 10.1.1.2 | 次に渡す相手のIPで答える |
| 形式B (exit-interface) | ip route 10.1.30.0 255.255.255.0 GigabitEthernet0/1 | 次に出すインターフェースで答える |
どちらも『次にどこへ渡すか』を答える欄であることは変わらない。同じ役割を、相手のIPで指すか、自分の出口で指すか、という別の表現になっているだけだ。本話の射程は前者(next-hop IP 形式)を中心にし、後者は『そういう書き方もある』という存在予告までで止める。両者の細かい使い分けや、内部での処理の違い(point-to-point リンクとマルチアクセスリンクでの挙動の差、ARP 解決の振る舞いの違いなど)は、本シリーズの範囲を越える。
書き分けの判断は本話の射程ではないが、片方を覚えれば、もう片方も「あ、これは出口を書いている版だな」と読み取れるようになる。3要素の最後の欄が、IPアドレスのときは『相手のIP』、インターフェース名のときは『自分の出口』、と置き換えて読めばいい。
ここで補足を一つ。ip route のコマンドには、3要素の後ろに更にいくつかのオプション引数を続けて書ける形がある。これらは Essential の射程を越えるので、本話では存在には触れず、3要素を埋めるだけのシンプルな形に集中する。必要になったタイミングで、後続話やシリーズの先で個別に出会うことになる。
ポイント: next-hop の位置には『相手のIP』または『自分のインターフェース』のどちらでも書ける。両者は『次にどこへ渡すか』の別の表現。3要素の最後の欄が IP かインターフェース名かで読み替えればよい。
書いた行は、そのままテーブルに残る — スタティックの素朴な性質
最後に、書いた1行がその後どう扱われるかを見ておきたい。
ip route で書いた1行は、グローバルコンフィグレーション((config)# プロンプト)で実行されると、設定(running-config)としてルータに残る。特定のインターフェースに紐づく設定ではないことに注意してほしい。インターフェースの設定はそのインターフェースに対する話だが、ip route はルータ全体への宣言として扱われ、有効な next-hop が解決できる間、ルーティングテーブルにも1行として載る。
書いた1行が示す素朴な性質は、ひとつ。書いた設定は、誰かが書き換えたり消したりするまで running-config に残り続ける。トポロジが変わっても、設定そのものが自動的に書き換わったり、消えたりはしない。これが「スタティック(static = 静的)」と呼ばれる所以だ。動的に学習する仕組みは別の道具として存在するが、それはシリーズの先で出会う。


テーブルには、書き加えた行のほかにも、ルータが自分で覚えた行が並んでいる。例えば、自分が直接接続している隣のセグメントは、ケーブルが繋がった瞬間に自動的に1行が加わる(行の由来の分類は次々話で詳しく扱う)。スタティックは、その自動的に増える行と並んで、管理者が「この帯は、こっちへ渡したい」という意図で1行を加える方法だ。同じテーブルに並んでいるが、由来が違う。
書いた行がそのまま残る、という性質は、想像以上に強い。網の構成が変わらない限り、書いた行は次に変更コマンドが入るまで効き続ける。動的に変動するルートと違って、予測しやすく、シンプル。けれど同じ理由で、網が大きく変わったときには、人の手で書き直す必要が出てくる。「いつスタティックを使うのか」「いつ動的ルーティングに譲るのか」 — その判断軸はシリーズ末尾で扱う。本話では、まず「3要素を埋めるだけでルーティングテーブルに1行が書き加わる」というシンプルさを手元に残しておく。
振り返ると、前話でテーブルを引く動作を見て、本話でテーブルに1行書き足す行為を読み解いた。読む側と書く側の両方の入り口に、もう立っている。
ポイント: ip route で書いた1行はグローバルコンフィグでルータ全体のルーティングテーブルに直接書き加わり、トポロジが変わっても自動的には書き換わらない(『動的に学習しない / 書いた行がそのまま残る』スタティックの性質)。インターフェースに紐づく設定ではなく、ルータ全体への1行を加える行為。
3つの欄を埋めるだけで、ルーティングテーブルに1行が加わる
前の話で見えたテーブルを引く動作の上で、今日はテーブルに1行書き足す行為を読み解いた。
スタティックルートとは、管理者がルーティングテーブルに1行を手で書き足すこと。ip route <prefix> <mask> <next-hop> という最小構文の3要素を埋めるだけで、ルータは新しい行き先を覚える。ip route 10.1.30.0 255.255.255.0 10.1.1.2 の例で言えば、1つ目が「どの宛先帯か」(10.1.30.0/24)、2つ目が「その帯の粒度」(255.255.255.0 = /24)、3つ目が「次に渡す相手のIP」(10.1.1.2 = SALES-RT-01)。3つの欄を埋めるだけで、新しい1行がテーブルに加わる。
next-hop の代わりに出力インターフェース(GigabitEthernet0/1 のような名前)を書く形もあった。3要素の最後の欄が IP かインターフェース名かで読み替えればいい。両者は『次にどこへ渡すか』の別の表現で、本話では存在予告までで止めた。3要素の後ろにはオプション引数を続けて書ける形もあるが、Essential の射程を越えるので本話では触れていない。
書いた1行はグローバルコンフィグで実行され、設定(running-config)としてルータに残り、有効な next-hop が解決できる間はルーティングテーブルにも1行として載る。インターフェースに紐づく設定ではない。書いた設定は、誰かが書き換えたり消したりするまでそのまま残り続け、トポロジが変わっても自動的には書き換わらない。これがスタティックの素朴な性質 — 動的に学習しない、書いた設定がそのまま残る。
明日からの自分の手元に残るのは、次の1〜2文だ。
「スタティックルートは、ルーティングテーブルに1行を手で書き足す行為。ip route <prefix> <mask> <next-hop> の3つの欄を埋めるだけで、ルータは新しい行き先を覚える。書いた行は、そのまま残る。」
ここまで来ると、コンフィグに並んでいる ip route の行が、暗号の塊から3要素の対応に変わって見えるはずだ。読む側(前話)と書く側(本話)の両方の入り口に、もう立っている。
次の話では、ルーティングテーブルの中で少し変わった顔をした1行を見にいく。プレフィクスもマスクも全部ゼロ — ip route 0.0.0.0 0.0.0.0 ... という奇妙な1行が、他に道がなければ最後に使う特別な役目を担っている。なぜ全部ゼロなのか、なぜ最後に選ばれるのか — その正体を、シリーズの次の話で見にいく。