1. ルーティングの概念
今日はもう少し深く掘り下げてみよう: ルートを設定し、ネットワークの接続を分析して、ポートについて理解しよう。ここからがネットワーク管理の本当の魔法の始まりだよ – パケットがどこへ行ってどうやって動くのか、そしてこの問題で"ルートの管理者"であることがなぜ重要なのかを学ぼう。
ルーティングっていうのは、ただ難しそうに聞こえるだけのものじゃなくて、現代ネットワークの基礎だよ。ちょっと想像してみて: 自分のコンピュータを旅人だと思って、別のコンピュータ(ホテル)に行きたいとする。ルートっていうのはその道と標識なんだ。もしルートがなかったら、旅人は道に迷って、通りすがりの人に道を聞くことになる(その通りすがりの人はDNSサーバかもしれないけど、それはまた別のお話)。あるいは家にとどまったままになるかも。
ルートが必要な理由
ネットワーク内の各デバイスは、他のデバイスにどうやって到達するかを知る必要があるよ。例えば、自分のコンピュータがexample.comサイトにリクエストを送りたいとき、そのコンピュータは以下を知っておく必要がある:
- どこにパケットを送るべきか。
- どのゲートウェイやインターフェースを経由して送るべきか。
ルートには2つのタイプがある:
- ローカルルート: 自分のサブネット内のデバイス向けの指示(例: 自分のコンピュータとプリンター)。
- 外部ルート: サブネット外のデバイス向けの指示(例: インターネット上のリソース)。
2. ルーティングテーブル
ルーティングテーブルは、IPアドレスに基づいてパケットをどこに送るべきかを決めるルールが入ったテーブルなんだ。まるでコンピューター用のGoogle Mapsみたいなものだよ。「そこに行きたいなら、このゲートウェイを通れ」って感じ。
自分のルートテーブルを表示してみよう:
ip route show
出力例:
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
これが何を意味するのか:
default via 192.168.1.1: パケットがどこに行くべきか明示されてない場合、このゲートウェイ192.168.1.1を通るんだ。dev eth0:eth0インターフェイスを使うよ。192.168.1.0/24: サブネットの192.168.1.0/24全体のルートだね。パケットはローカルネットワーク内で "家にいる" 状態。protoとmetric: これは追加のパラメータで、後で説明するよ。
3. コマンド ip route
ルートの確認
ルーティングテーブルを見るには、すでにip route showを使ったことがあるよね。フィルタを追加して、例えばローカルネットワーク用のルートだけを確認することもできるよ:
ip route show match 192.168.1.0/24
ルートの追加
静的ルートを追加できるよ。これは、自分で道路標識を置くような感じ。例えば、すべてのリクエストを10.0.0.0/24のサブネットに特定のゲートウェイ経由でリダイレクトしたい場合:
sudo ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0
これを分解すると:
10.0.0.0/24– 宛先サブネット。via 192.168.1.1– パケットを送信するゲートウェイ。dev eth0– パケットが送られるインターフェイス。
ルートの削除
もうルートが不要になった場合は、次のコマンドで削除するよ:
sudo ip route del 10.0.0.0/24
4. 実践:スタティックルートの設定
- 他のサブネットにアクセスできることを確認してください。
- ルートを追加してください:
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
- ルーティングテーブルを確認してください:
ip route show
- 不要になった場合はルートを削除してください。
5. コマンド netstat
現在の接続を分析する必要があるとき、netstatはシステム管理者にとって長年の信頼できるツールです(最近では、より新しい代替ツールssもありますが、それについては後ほど説明します)。
アクティブな接続の確認
netstat -tun
これが意味するところは次の通り:
-t– TCP接続を表示。-u– UDP接続を表示。-n– 数値アドレス(ホスト名の代わり)を使用。
出力例:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.100:22 192.168.1.50:50240 ESTABLISHED
これが意味するところは次の通り:
- ローカルアドレス
192.168.1.100:22– あなたのコンピュータがポート22 (SSH) をリッスンしています。 - リモートアドレス
192.168.1.50:50240– あなたのポートに接続しているリモートホストです。 ESTABLISHED– アクティブな接続でデータが転送されています。
ポート待機の確認
コンピュータがどのポートを「リッスン」しているかを確認するには:
netstat -ltn
-lフラグはリッスン中のポートのみを表示し、-tおよび-nはすでに説明しました。
6. コマンド ss
netstat が恐竜なら、ss は未来のデロリアン車だね。もっと速く動いて、より多くの情報を提供する。
アクティブな接続の確認
ss -tun
出力例は netstat と似てるけど、速度と詳細の点で優れてるよ。
ポートのリスニング
ss -tln
netstat と同じように使えるけど、ss のほうが操作しやすくて現代的だよ。
7. 接続のモニタリング
netstatまたはssを使って、どのポートがパソコンでリスニングされているか確認してみよう。- 他のデバイスでSSH接続を開いて、それが接続一覧に表示されるかチェックしてみて。
- コマンドの出力結果を解釈する練習をしよう。
ルーティングと接続モニタリングの世界に浸ったね。これでip routeを使ってルートテーブルを管理したり、netstat/ssでネットワーク接続を分析できるようになったよ。このツールたちは、一番複雑なネットワーク問題を解決するためのスイスアーミーナイフみたいなものだよ。友達が「インターネットが動かない!」って困っている?新しいスキルを引っ張り出して、スゴさを見せつけちゃおう!
次の講義ではもっと面白いことが待ってるよ:DNSの魔法を学ぶ予定だ。それまでにip routeを練習してみて、パケットがどうやって家に帰るのか見てみよう。
GO TO FULL VERSION