本文へスキップ
BecomeCoder

ネットワークコース · 第3章 つながりを確かめる · レッスン13

netstat と ss ― 開いているポートを見る

ブラウザで完結

導入

ここまでは「外へ問い合わせる」側でした。今度は自分のサーバーを内側から見て、「このサーバーは今どのポートで待ち受けている?」を調べます。それが ss(socket statistics)と、その前身 netstat です。レッスン23で学んだ「ポート=部屋番号」を、実際に一覧できます。

説明

ss -tuln で、待ち受け中のポートを一覧します。オプションの意味は -tTCP-u(UDP)-l(listening=待ち受けのみ)-n(名前解決せず番号で表示)です。

ss -tuln

Local Address:Port の列に注目します。0.0.0.0:22 は「どこからでも 22 番(SSH)で受け付ける」、127.0.0.1:5432 は「自分自身からだけ 5432 番(PostgreSQL)で受け付ける」という意味です。StateLISTEN なら待ち受け中——つまり「そのサービスが動いていて、通信を受け付けている」ことの証拠です。

第2章・第3章で学んだポート番号と照らし合わせると、このサーバーで何が動いているか読み解けます。

flowchart LR
    ss["ss -tuln の結果"] --> p22["0.0.0.0:22 → SSH が待受中"]
    ss --> p80["0.0.0.0:80 → Webサーバーが待受中"]
    ss --> p5432["127.0.0.1:5432 → DBが待受中(自分からだけ)"]

昔からある netstat でもほぼ同じことができます(表示の形が少し違います)。

netstat -tuln

grep と組み合わせれば、特定のポートだけを探せます。「80番は開いているか?」を確かめる定番です。

ss -tuln | grep 80

0.0.0.0 は「どのアドレスからの接続も受ける(外部公開)」、127.0.0.1 は「自分自身からだけ(非公開)」という重要な違いです。データベース127.0.0.1 で待ち受けているのは、「外から直接触らせない」というセキュリティ設計です。この「どこまで受け付けるか」を制御するのが、次章のファイアウォールです。

やってみよう

ss -tuln で待ち受けポートの一覧を見て、22(SSH)・80(Web)・5432(DB)が並んでいることを確認しましょう。127.0.0.1:5432 だけが「自分からのみ」になっている点に注目してください。netstat -tuln と見比べ、ss -tuln | grep 80 で 80 番だけを絞る動きも試しましょう。

演習

ss を使って、待ち受け中の TCP/UDP ポートを番号表示で一覧してください(-t -u -l -n をまとめて指定します)。

ヒント1を見る

4つのオプションは -tuln とまとめて書けます。

ヒント2を見る

ss -tuln

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。