ルーティング:実機ルータ2台でOSPFを動かす
自分では静的経路を1行も書いていないのに、別ネットワークへの道がルータの経路表に生えるところを観察します。learner01 で経路を読み、l3router01 と core01 が OSPF で会話している証拠を見ます。
| 所要時間 | 約 75 分 |
|---|---|
| 章タイプ | standard |
| 前提知識 | Part 2 Chapter 1(IP と経路表)/ Chapter 2(ARP と tcpdump)/ Chapter 3(VLAN) |
| 使用機材 | workstation01 → ssh student@learner01、観察対象: l3router01 / core01 / webserver01 |
| 関連章 | 前: Chapter 3「Linux Bridge と VLAN」/ 次: Chapter 5「iptables と tc netem」 |
別ネットワークへの道が生えるところを見る
この章でできるようになることは、「同じセグメントの外へ出るとき、どのルータが道を知っているか」を経路表から読めることです。Part 2 Chapter 1 では ip route でデフォルトゲートウェイを見ました。この章では、そこから一段進んで、ルータどうしが経路を交換する様子を見ます。
受講者が打つのは learner01 側の ip / ping / curl までです。l3router01 と core01 の vtysh は管理操作なので、この教材では 管理者が取得済みの出力を観察する形にします。
VLAN10 (172.16.10.0/24) オフィス
learner01 / 受講者VM
|
| default gateway = l3router01 172.16.10.1
|
l3router01 172.16.20.1
|
| VLAN20 (172.16.20.0/24) サーバ網 兼 ルータ間 transit
| webserver01 172.16.20.10
| core01 172.16.20.2
|
core01 172.16.30.1
|
VLAN30 (172.16.30.0/24) db01 172.16.30.10 ※Ch4では経路確認まで
learner01 から VLAN10 と VLAN20 の疎通を確認し、show ip ospf neighbor の Full と show ip route の O>* 172.16.30.0/24 via 172.16.20.2 を読んで、OSPF が手書きではない経路を学習したことを説明できる。この章を終えるとできること
経路表を読む 4 動作を身につけます。設定変更ではなく、観察と切り分けが中心です。
経路表で分ける
二役を混同しない
OSPF 会話を読む
経路の出どころを読む
経路表から OSPF までの考え方
1. デフォルトゲートウェイ:同じ町は直結、町の外はルータへ
Chapter 1 で見た ip route を、ここでも最初に使います。172.16.10.0/24 は learner01 が直接つながっている VLAN10 です。一方、172.16.20.0/24 や 172.16.30.0/24 は別の町なので、まずデフォルトゲートウェイ 172.16.10.1、つまり l3router01 へ渡します。
| 宛先 | learner01 から見た扱い | 次に渡す相手 |
|---|---|---|
172.16.10.0/24 | 同じ VLAN10 | 直接届ける |
172.16.20.0/24 | 別セグメント | 172.16.10.1 へ渡す |
172.16.30.0/24 | さらに奥のセグメント | l3router01 が core01 から学習する |
2. VLAN20 の二役:サーバ網であり、ルータ間 transit でもある
この章のつまずき所は VLAN20 が二役である点です。webserver01 がいるサーバ網であると同時に、l3router01 と core01 が向かい合って OSPF を話す transit でもあります。
learner01 → GW 172.16.10.1webserver01 172.16.20.10172.16.20.1 / RID 172.16.20.1172.16.20.2 / RID 172.16.20.2コラム · なぜ VLAN20 が二役なのか
教科書では、ルータ間 transit は専用セグメントとして分けることが多いです。このラボでは実機の NIC とスイッチ構成に合わせ、
webserver01がいる VLAN20 にcore01も同居させています。隠すと
ip routeやライブビューと食い違うので、ここでは正面から扱います。小規模拠点では、用途を兼ねる VLAN が現れることもあります。大事なのは、どの IP がどの役割を持っているかを表で読めることです。
3. OSPF neighbor:ルータどうしが同じ area 0 で隣人になる
OSPF は、同じ組織内のルータどうしが経路を交換するためのプロトコルです。この章では l3router01 と core01 が VLAN20 上で area 0 の neighbor になり、状態が Full になっていることを観察します。
Neighbor ID Pri State Dead Time Address Interface 172.16.20.2 1 Full/- 00:00:3x 172.16.20.2 eth2:172.16.20.1
Neighbor ID が 172.16.20.2、State が Full です。これは core01(RID 172.16.20.2)と l3router01(RID 172.16.20.1)が、VLAN20 上で経路を交換できる状態まで進んだことを示します。
4. 経路自動学習:手で書いていない VLAN30 への道
OSPF が動くと、core01 が持つ VLAN30(172.16.30.0/24)の情報を l3router01 が学習します。この章では VLAN30 の実到達までは扱いません。見るのは、経路表に OSPF 由来の道が現れた事実までです。
Codes: K - kernel route, C - connected, S - static, O - OSPF, B - BGP C>* 172.16.10.0/24 is directly connected, eth1 C>* 172.16.20.0/24 is directly connected, eth2 O>* 172.16.30.0/24 [110/20] via 172.16.20.2, eth2, weight 1
O>* の O は OSPF 由来です。via 172.16.20.2 は「VLAN30 へ行くには core01 の VLAN20 側 IP に渡す」と読む、という意味です。
5. BGP は軽く:OSPF は組織内、BGP は組織間
BGP も動的ルーティングの仲間ですが、この章では深入りしません。OSPF は同じ組織内のルータどうしが経路を共有する IGP、BGP は AS という組織単位をまたいで経路をやり取りする EGP として位置づけます。
l3router01・core01 の2台で OSPF(area 0 の隣人=同一組織)と eBGP(AS65001↔AS65002=別組織)をあえて併走させています。area 0 で隣接する2台が eBGP を張るのは学習用の構成だと理解してください。Local AS number 65001 Neighbor V AS MsgRcvd MsgSent Up/Down State/PfxRcd 172.16.20.2 4 65002 xx xx 00:xx:xx 1
l3router01 は AS65001、core01 は AS65002 です。FRR の summary では、Established になると State/PfxRcd にそのネイバーから受信した経路数が出ます。ここでは core01(AS65002)が 172.16.30.0/24 を1本広告しているので、l3router01 側の PfxRcd は 1 と読めます。
演習:learner01 から経路を読み、OSPF の証拠を見る
| 項目 | 値 |
|---|---|
| 操作ホスト | learner01(VLAN10 / 172.16.10.0/24) |
| 接続方法 | workstation01 から ssh student@learner01 |
| 確認先 | l3router01 172.16.10.1 / webserver01 172.16.20.10 |
| 観察対象 | l3router01 と core01 の FRRouting 出力(受講者は実行しない) |
| 必要権限 | 受講者側は sudo 不要。router の vtysh と /etc/frr/frr.conf は管理者権限が必要(受講者は実行しません)。 |
ip route / ping / curl は何度実行しても状態を変えない確認コマンドです。2回目に同じ結果が出るのは、設定済みの環境では正常です。STEP 01 · learner01 に入る
受講者の出発点は workstation01 です。ここからパスワード SSH で learner01 に入ります。
ssh student@learner01
既に student@learner01 のプロンプトにいる場合は、この STEP は済んでいます。hostname で確認してから次へ進んでください。
STEP 02 · デフォルトゲートウェイを読む
learner01 の経路表を読みます。町の外へ出る先が 172.16.10.1 になっていれば、この章の前提が整っています。
ip route # 例: # default via 172.16.10.1 dev ens18 # 172.16.10.0/24 dev ens18 proto kernel scope link src 172.16.10.20
default via 172.16.10.1 が、l3router01 へ出る道です。172.16.10.0/24 は同じ VLAN10 なので直接つながっています。
STEP 03 · VLAN10 と VLAN20 の疎通を確認する
まず同じ VLAN10 のゲートウェイへ ping し、次に VLAN20 の webserver01 へ進みます。ここで受講者が確認するのは、VLAN10 から VLAN20 へ l3router01 経由で出られることです。
ping -c 3 172.16.10.1 ping -c 3 172.16.20.10 curl -I http://172.16.20.10/ # HTTP/1.1 200 OK などが返れば、VLAN20 の webserver01 へ届いています
STEP 04 · OSPF neighbor Full を観察する
ここからは router 側の観察です。vtysh は管理者権限が必要なので、受講者は実行しません。出力の読み方だけを確認します。
Neighbor ID Pri State Dead Time Address Interface 172.16.20.2 1 Full/- 00:00:3x 172.16.20.2 eth2:172.16.20.1
Neighbor ID 172.16.20.2: 相手はcore01(RID172.16.20.2)State Full/-: OSPF neighbor が成立済み(/-は transit を point-to-point ネットワークにしているため。ブロードキャスト型のセグメントならFull/DRなどになります)Address 172.16.20.2: VLAN20 上で隣り合っている
STEP 05 · 手で書いていない経路が生えたことを読む
l3router01 の経路表に、VLAN30 への経路が OSPF 由来として現れています。Ch4 では VLAN30 の実到達はしません。経路が生えたところまでを確認します。
O>* 172.16.30.0/24 [110/20] via 172.16.20.2, eth2, weight 1
O は OSPF、via 172.16.20.2 は core01 経由です。静的ルートを受講者が追加していないのに道が出ています。これが動的ルーティングの最初の体感です。
STEP 06 · BGP と frr.conf を軽く読む
最後に、設定ファイルを読む伏線を回収します。Part 1 Chapter 2 で「設定は /etc にいることが多い」、Chapter 5 で vim、Chapter 7 で権限を扱いました。FRRouting の設定も /etc/frr/frr.conf にあります。
router ospf ospf router-id 172.16.20.1 network 172.16.10.0/24 area 0 network 172.16.20.0/24 area 0 ! router bgp 65001 neighbor 172.16.20.2 remote-as 65002 network 172.16.10.0/24
BGP は l3router01 が AS65001、core01 が AS65002 です。ここでは「OSPF は組織内、BGP は組織間」という用途の対比だけ持ち帰ります(前述のとおり、本ラボは学習用に同じ2台で両方を併走させた割り切り構成です)。
learner01 でデフォルトゲートウェイを読み、VLAN20 への疎通を確認し、router の観察出力から OSPF neighbor Full と O>* 172.16.30.0/24 via 172.16.20.2 を説明できる状態になりました。つまずきポイント
ping 172.16.10.1 が通らない
learner01 が VLAN10 にいる前提が崩れている可能性があります。まず ip route と ip addr で、自分のアドレスが 172.16.10.x/24 になっているか、デフォルトゲートウェイが 172.16.10.1 になっているかを見ます。
ip addr ip route
ping 172.16.20.10 は通らないが、172.16.10.1 は通る
learner01 から l3router01 までは届いています。次は l3router01 から VLAN20 側、または webserver01 側の問題です。受講者は router 設定を触らず、curl -I http://172.16.20.10/ の結果と ip route の出力をメモします。
管理者側の確認ポイントは、l3router01 の VLAN20 インターフェース 172.16.20.1、webserver01 172.16.20.10、VLAN20 の二役構成です。
OSPF neighbor の出力を自分で打ちたくなった
vtysh は router 上の管理 CLI です。この教材の受講者ロールでは router へ sudo しません。出力を読む練習に集中してください。
自分で検証する管理者ロールの場合は、ops で router に入り、sudo vtysh または sudo vtysh -c 'show ip ospf neighbor' を使います。これは教材本文の受講者操作とは別枠です。
AI に相談
修了確認
この章で見た経路表と OSPF の読み方を、2 問だけ確認します。
問 1 · VLAN20 の二役を説明する
VLAN20(172.16.20.0/24)には、webserver01 172.16.20.10 と core01 172.16.20.2 がいます。この VLAN は、教材上どの 2 つの役割を兼ねていますか?
解答を見る
1つ目は サーバ網です。webserver01 がいるので、learner01 から VLAN20 の Web サービスへ届くかを確認できます。
2つ目は ルータ間 transitです。l3router01 172.16.20.1 と core01 172.16.20.2 が VLAN20 上で向かい合い、OSPF neighbor になります。
問 2 · OSPF の経路を読む
次の 1 行を見て、(a) どのプロトコルで学習した経路か、(b) 次に渡す相手はどの IP か、(c) Ch4 では VLAN30 に ping するか、を答えてください。
O>* 172.16.30.0/24 [110/20] via 172.16.20.2, eth2, weight 1
解答を見る
(a) O なので OSPF です。
(b) via 172.16.20.2 なので、次に渡す相手は core01 の VLAN20 側 IP です。
(c) Ch4 では VLAN30 への実到達は扱いません。経路が生えた確認までに留め、実到達は Ch6 の発展枠で扱います。
💡 修了確認の段階ヒント(問 1・問 2 共通)
💡 段階ヒント 1 段目:まず役割名を見る
O と via だけ見ます。💡 段階ヒント 2 段目:IP をトポロジに戻す
172.16.20.2 は core01 の VLAN20 側 IP です。172.16.30.0/24 は core01 の奥にある VLAN30 です。💡 段階ヒント 3 段目:Ch4 の範囲を切る
次の章へ
この章では、道があることと、道が OSPF で生えたことを確認しました。次の章では、その道を あえて通したり、止めたり、遅らせたり します。通信が届くかどうかだけでなく、ファイアウォールと遅延が体感にどう出るかを見ます。
iptablesで通信を許可・遮断するtc netemで遅延を注入するping/curlの結果から原因を切り分ける