ip で読む IP・サブネット・ルーティング
learner01 がどのネットワークに居て、町の外へ出るときどこへ渡すのかを、設定変更なしで読めるようになります。Part 1 で SSH した接続先を、今度はサーバ自身の目線で確認します。
| 所要時間 | 約 45 分 |
|---|---|
| 章タイプ | standard |
| 前提知識 | Part 1 Chapter 1(SSH)/ Chapter 3(ファイルを読む)/ Chapter 4(長い出力から見る場所を決める) |
| 使用機材 | workstation01 → ssh student@learner01、learner01: 172.16.10.20/24、GW: l3router01 172.16.10.1 |
| 関連章 | 前: Part 2 目次 / 次: Chapter 2「ARP と MAC」 |
サーバの現在地と出口を読む
Part 1 では ssh student@learner01 と打ち、名前を使ってサーバへ入りました。この章では、入った後の learner01 で ip a と ip r を読み、そのサーバがどの住所を持ち、どの出口へつながっているかを確認します。
ネットワークの切り分けは、いきなり設定を書き換えるところから始めません。まず「自分はどのネットワークに居るのか」「同じセグメントはどこまでか」「外へ出るなら誰に渡すのか」を読むところから始めます。
learner01 NIC: ens18 IP: 172.16.10.20/24 NET: 172.16.10.0/24 ← 同じセグメント GW: 172.16.10.1 ← 町の外へ出る出口 使うコマンド: ip a 自分の NIC と IP を読む ip r 直結ルートと default route を読む ping default gateway に届くか確認する
learner01 上で ip a、ip r、ping 172.16.10.1 を実行し、「172.16.10.20/24 は VLAN10 に居る」「172.16.10.0/24 は直結」「default は 172.16.10.1 へ渡す」と説明できる。この章を終えるとできること
ネットワークを読む 4 動作を、すべて learner01 上の読み取りコマンドで練習します。
出力から見つける
/24 から同じセグメントを読む
ルートを読み分ける
届くか確認する
IP、サブネット、経路表を分けて読む
1. IP アドレスはサーバの住所
172.16.10.20/24 のうち、172.16.10.20 が learner01 の IP アドレスです。Linux ではこの住所が NIC に付いています。NIC が複数あるサーバでは、ip a に複数のインターフェースが並びます。
この章では、172.16.10.20/24 が付いている NIC を VLAN10 の入口として読みます。名前は環境により ens18 や eth0 のように変わることがあります。名前よりも、どの IP が付いている NIC かを見るのが大切です。
2. /24 は同じセグメントの境界線
/24 は CIDR 表記で、172.16.10.0 から 172.16.10.255 までを同じセグメントとして扱う、という意味です。この章では 172.16.10.0/24 を VLAN10 の町として読みます。
| 相手 | learner01 から見た読み方 | この章での扱い |
|---|---|---|
172.16.10.1 | 172.16.10.0/24 の中にいる | 同じセグメントの gateway |
172.16.10.50 | 172.16.10.0/24 の中にいる | 直結ルートの範囲 |
172.16.20.10 | 172.16.10.0/24 の外にいる | Ch4 で別セグメントとして扱う |
3. ルーティングテーブルは「どこへ渡すか」の表
ip r は、Linux が持っている経路表を表示します。直結ルートは「この NIC に IP が付いているので、このネットワーク宛はそのまま出せる」という行です。default は、どの直結ルートにも当てはまらない宛先を最後に渡す出口です。
| 出力の形 | 読み方 |
|---|---|
172.16.10.0/24 dev ens18 ... | VLAN10 宛は ens18 から直接出す |
default via 172.16.10.1 dev ens18 | それ以外は 172.16.10.1 に渡す |
4. NIC と vmbr は見える場所が違う
learner01 の中では ens18 のような NIC 名が見えます。その外側、Proxmox ホスト側には vmbr という仮想スイッチがあり、VM の NIC を物理 NIC や VLAN へつなぎます。受講者は learner01 上で vmbr を操作しませんが、自分の NIC の先に仮想スイッチと物理ネットワークがあると理解しておくと、Chapter 3 の Bridge / VLAN がつながります。
ens18172.16.10.20/24172.16.10.1default gateway
5. L2 と L3 の入口を分ける
この章の中心は L3、つまり IP とルーティングです。ただし、同じ 172.16.10.0/24 の中で実際にフレームを届けるときは L2 の MAC アドレスが必要になります。その変換が Chapter 2 の ARP です。ここでは、同じセグメントか、町の外へ出るかを判断する入口までを扱います。
learner01 で ip の出力を読む
この章のコマンドは learner01 上で実行する読み取り中心の操作です。sudo は使いません。設定を変更しないため、ip a、ip r、ping は何度打っても問題ありません。
STEP 01 · learner01 に入ったことを確認する
受講者の出発点は workstation01 です。ssh student@learner01 で入ったあと、この章のコピー対象はすべて learner01 上で実行します。まずホスト名を確認します。
hostname
learner01
workstation01 のままなら、まだ演習対象へ入れていません。ssh student@learner01 で learner01 へ入ってから続けます。
STEP 02 · ip a で NIC と IP を読む
ip a はインターフェースごとの詳細を表示します。長い出力ですが、この章では inet 172.16.10.20/24 と、その直前にある NIC 名を探します。
ip a ip -br addr
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
inet 172.16.10.20/24 brd 172.16.10.255 scope global ens18
lo UNKNOWN 127.0.0.1/8 ::1/128
ens18 UP 172.16.10.20/24
inet 172.16.10.20/24 が learner01 の住所です。行末の ens18 が、その住所を持つ NIC です。複数 NIC が出ても、VLAN10 の 172.16.10.20/24 を持つ行を基準にします。STEP 03 · ip r で default と直結ルートを読む
ip r は経路表です。ここでは default と 172.16.10.0/24 の 2 種類を読み分けます。
ip r
default via 172.16.10.1 dev ens18 proto static 172.16.10.0/24 dev ens18 proto kernel scope link src 172.16.10.20
172.16.10.0/24 dev ens18 は直結ルートです。同じ VLAN10 宛は ens18 から直接出します。default via 172.16.10.1 は、町の外へ出るとき l3router01 に渡すという意味です。STEP 04 · default gateway に ping する
最後に、経路表で読んだ default gateway 172.16.10.1 へ届くかを確認します。これは「learner01 から VLAN10 の出口までは届いているか」を見る確認です。
ping -c 3 172.16.10.1
PING 172.16.10.1 (172.16.10.1) 56(84) bytes of data. 64 bytes from 172.16.10.1: icmp_seq=1 ttl=64 time=0.421 ms 64 bytes from 172.16.10.1: icmp_seq=2 ttl=64 time=0.389 ms 64 bytes from 172.16.10.1: icmp_seq=3 ttl=64 time=0.402 ms --- 172.16.10.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss
0% packet loss なら、learner01 から l3router01 の VLAN10 側までは届いています。別セグメントへ出る話は Chapter 4 で扱います。読めないときの切り分け
1. NIC が複数あって迷う
NIC 名だけで判断せず、172.16.10.20/24 が付いた行を探します。lo は自分自身に戻る内線なので、この章の通信経路ではありません。
ip -br addr ip -br link
2. ip r に default がない
default via 172.16.10.1 が無い場合、町の外へ出る出口が経路表にありません。この章では設定を変更しないため、出力をメモして講師または運営に共有します。設定追加は Chapter 4 以降の範囲です。
ip r ip -br addr
3. ping 172.16.10.1 が通らない
まず ip a で learner01 が 172.16.10.20/24 を持っているか、次に ip r で 172.16.10.0/24 と default があるかを確認します。IP と経路表が正しく見えるのに ping が失敗する場合、Chapter 2 で扱う ARP / MAC 側の確認へ進みます。
ip a ip r ping -c 3 172.16.10.1
AI に相談
詰まったら、ip a と ip r の出力を貼って「どの行を読めばよいか」「default の意味が分からない」のように質問してください。
修了確認
問 1 · ip a の行を読む
次の行を見て、(a) learner01 の IP アドレス、(b) CIDR、(c) NIC 名を答えてください。
inet 172.16.10.20/24 brd 172.16.10.255 scope global ens18
解答を見る
172.16.10.20、(b) /24、(c) ens18 です。/24 まで含めると、同じセグメントが 172.16.10.0/24 だと読めます。問 2 · ip r の default と直結を読む
次の経路表で、(a) VLAN10 へ直接出る行、(b) 町の外へ出るときに渡す gateway、を答えてください。
default via 172.16.10.1 dev ens18 proto static 172.16.10.0/24 dev ens18 proto kernel scope link src 172.16.10.20
解答を見る
172.16.10.0/24 dev ens18 が直結ルートです。(b) gateway は 172.16.10.1 です。default via は、他の行に当てはまらない宛先を最後に渡す出口を示します。修了確認の段階ヒント(問 1・問 2 共通)
段階ヒント 1 段目:まず数字と NIC 名を拾う
ip a では inet の後ろが IP / CIDR、行末が NIC 名です。ip r では dev の後ろが出口 NIC です。段階ヒント 2 段目:default と直結を分ける
172.16.10.0/24 dev ens18 は同じセグメントへ直接出る行です。default via 172.16.10.1 は、それ以外を gateway に渡す行です。段階ヒント 3 段目:Part 1 の SSH とつなげる
172.16.10.20/24 という住所を持っています。名前で入った先を、IP の行として読み直すのがこの章の確認です。次は ARP と MAC
この章では、learner01 の住所、同じセグメントの範囲、町の外へ出る gateway を読みました。ここまでが L3 の入口です。
次の Chapter 2 では、同じ VLAN10 の中で 172.16.10.1 に届く直前に、IP アドレスから MAC アドレスをどう引くのかを見ます。ip neigh と tcpdump で ARP を捕まえ、L2 と L3 のつながりを出力で確認します。
ip neighで gateway の MAC を読む- ARP request と reply を tcpdump で見る
- 同じセグメントの中で起きている L2 の動きを説明する