導入
ここまでは「外へ問い合わせる」側でした。今度は自分のサーバーを内側から見て、「このサーバーは今どのポートで待ち受けている?」を調べます。それが ss(socket statistics)と、その前身 netstat です。レッスン23で学んだ「ポート=部屋番号」を、実際に一覧できます。
説明
ss -tuln で、待ち受け中のポートを一覧します。オプションの意味は -t(TCP)-u(UDP)-l(listening=待ち受けのみ)-n(名前解決せず番号で表示)です。
ss -tuln
Local Address:Port の列に注目します。0.0.0.0:22 は「どこからでも 22 番(SSH)で受け付ける」、127.0.0.1:5432 は「自分自身からだけ 5432 番(PostgreSQL)で受け付ける」という意味です。State が LISTEN なら待ち受け中——つまり「そのサービスが動いていて、通信を受け付けている」ことの証拠です。
第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