CodeGym /コース /Docker SELF /ルート設定: コマンド `ip route`、`netstat`、`ss`

ルート設定: コマンド `ip route`、`netstat`、`ss`

Docker SELF
レベル 4 , レッスン 1
使用可能

1. ルーティングの概念

今日はもう少し深く掘り下げてみよう: ルートを設定し、ネットワークの接続を分析して、ポートについて理解しよう。ここからがネットワーク管理の本当の魔法の始まりだよ – パケットがどこへ行ってどうやって動くのか、そしてこの問題で"ルートの管理者"であることがなぜ重要なのかを学ぼう。

ルーティングっていうのは、ただ難しそうに聞こえるだけのものじゃなくて、現代ネットワークの基礎だよ。ちょっと想像してみて: 自分のコンピュータを旅人だと思って、別のコンピュータ(ホテル)に行きたいとする。ルートっていうのはその道と標識なんだ。もしルートがなかったら、旅人は道に迷って、通りすがりの人に道を聞くことになる(その通りすがりの人はDNSサーバかもしれないけど、それはまた別のお話)。あるいは家にとどまったままになるかも。

ルートが必要な理由

ネットワーク内の各デバイスは、他のデバイスにどうやって到達するかを知る必要があるよ。例えば、自分のコンピュータがexample.comサイトにリクエストを送りたいとき、そのコンピュータは以下を知っておく必要がある:

  1. どこにパケットを送るべきか。
  2. どのゲートウェイやインターフェースを経由して送るべきか。

ルートには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 全体のルートだね。パケットはローカルネットワーク内で "家にいる" 状態。
  • protometric: これは追加のパラメータで、後で説明するよ。

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. 実践:スタティックルートの設定

  1. 他のサブネットにアクセスできることを確認してください。
  2. ルートを追加してください:
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
  1. ルーティングテーブルを確認してください:
ip route show
  1. 不要になった場合はルートを削除してください。

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. 接続のモニタリング

  1. netstatまたはssを使って、どのポートがパソコンでリスニングされているか確認してみよう。
  2. 他のデバイスでSSH接続を開いて、それが接続一覧に表示されるかチェックしてみて。
  3. コマンドの出力結果を解釈する練習をしよう。

ルーティングと接続モニタリングの世界に浸ったね。これでip routeを使ってルートテーブルを管理したり、netstat/ssでネットワーク接続を分析できるようになったよ。このツールたちは、一番複雑なネットワーク問題を解決するためのスイスアーミーナイフみたいなものだよ。友達が「インターネットが動かない!」って困っている?新しいスキルを引っ張り出して、スゴさを見せつけちゃおう!

次の講義ではもっと面白いことが待ってるよ:DNSの魔法を学ぶ予定だ。それまでにip routeを練習してみて、パケットがどうやって家に帰るのか見てみよう。

1
タスク
Docker SELF, レベル 4, レッスン 1
ロック未解除
ルーティングテーブルの表示
ルーティングテーブルの表示
1
タスク
Docker SELF, レベル 4, レッスン 1
ロック未解除
ルートの追加
ルートの追加
1
タスク
Docker SELF, レベル 4, レッスン 1
ロック未解除
アクティブな接続の分析
アクティブな接続の分析
1
タスク
Docker SELF, レベル 4, レッスン 1
ロック未解除
ルート削除とポートのモニタリング
ルート削除とポートのモニタリング
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION