「サーバーの中で何が起きている?」迷えるエンジニアのための netstat 徹底活用術
データセンターのフロアで、深夜2時の冷たい空気に触れながら格闘した経験は数知れません。画面の向こうで「ネットワークが繋がらない」「なんだかレスポンスが重い」という悲鳴が上がったとき、僕たちがまず最初に手を伸ばすのは、実は最新の統合管理ツールではなく、この古くからある netstat という魔法のコマンドです。
「レガシーなツールなんて今さら……」と思うかもしれません。しかし、現場の最前線でこそ、こうしたシンプルで強力な道具が真価を発揮するのです。今日は、ネットワークの「いま」を可視化するこのコマンドを、身近な例えを交えて一緒に紐解いていきましょう。
—
そもそも netstat って何をしているの?
想像してみてください。あなたのサーバーを「大きな郵便局」だとします。
サーバーの中では、たくさんの小包(データ)が世界中から届き、また外へ送り出されていますよね。
- 誰とやり取りしているのか?
- 今、どれくらいの荷物が窓口(ポート)に殺到しているのか?
- 返信待ちで溜まっている荷物はないか?
netstat は、この郵便局の「窓口管理台帳」をパッと広げて見せてくれるコマンドです。どの窓口(ポート)が開いていて、誰と電話(接続)しているのか、今の混雑具合はどうなのかを一目瞭然にしてくれます。
—
基本のキ:まずはこれだけ知っておこう
ターミナルを開いて、まずは以下のコマンドを打ってみてください。現場で最も頻繁に使うオプションの組み合わせです。
# 全ての接続を表示し、ポート番号を数字のまま表示し、プログラム名も表示する
netstat -tulpn
それぞれのオプションを噛み砕くとこうなります。
-t(TCP): 通信の「約束事」の中でも、特に相手との繋がりを重視するタイプを表示します。-u(UDP): 手紙をポイっと投げるような、繋がりを気にしないタイプを表示します。-l(Listening): 「何か用ですか?」と相手からの接続を待っている窓口を表示します。-p(Program): その窓口で受付をしている「郵便局員(プロセス)」の名前を表示します。-n(Numeric): ホスト名などを解決せず、数字(IPアドレス)で表示します。名前解決で待たされないので、トラブル時は必須です!
—
現場で役立つ「あ、これ怪しいな」の瞬間
初心者のうかに陥りがちなのが、「とにかく情報をたくさん出せばいい」という考えです。でも、現場では「何を見ないといけないか」を知っていることが重要です。
1. サーバーが正しくサービスを提供しているか確認する
Webサーバーを立てたはずなのに繋がらない……そんなときは LISTEN 状態をチェックします。
# 80番ポート(Webの窓口)がちゃんと開いているか確認
netstat -tulpn | grep :80
ここで何も返ってこないなら、そもそもサーバープログラムが起動していないか、別のポートで待機している証拠です。郵便局で言えば「窓口そのものが閉まっている」状態ですね。
2. 特定の相手とどれくらい繋がっているか見る
「アクセスが集中しすぎてサーバーが重い!」というとき、特定のIPアドレスから攻撃を受けていたり、異常な数の接続が残っていたりすることがあります。
# ESTABLISHED(接続確立中)の数を数えてみる
netstat -an | grep ESTABLISHED | wc -l
こうして「今、何件の通信がアクティブなのか」という数値(カウント)をとる癖をつけておくと、平常時のサーバーの顔つきが見えてくるようになります。
—
注意:netstat は「引退」に向かっている?
ここまで netstat を紹介してきましたが、実はモダンなLinux環境では、後継となる ss コマンドへの移行が進んでいます。netstat が net-tools という古いパッケージの一部であるのに対し、ss はより高速で、カーネルの情報を直接覗き込むようなパワフルな動きをします。
もし皆さんの環境に ss が入っていたら、まずは ss -tulpn と打ち込んでみてください。出力は netstat に非常に似ているので、すぐに馴染めるはずです。
—
最後に:ツールはあくまで「杖」に過ぎない
ネットワークのトラブルシューティングにおいて、コマンドは魔法の杖ではありません。コマンドが吐き出した数字の羅列を見て、「ああ、これはWebサーバーが大量の接続要求でパンクしているな」とか、「この接続は、先ほど設定したデータベースへの応答待ちで溜まっているな」と、サーバーの中で起きている物理的な光景を想像できること。それこそが、シニアエンジニアと初心者を分ける決定的な差になります。
まずは怖がらずに、自分のPCや仮想サーバーで netstat を叩いてみてください。「こんなにたくさんのプログラムが、裏で誰かと喋っているんだな」と気づくことができれば、あなたはもうインフラエンジニアの第一歩を確実に踏み出しています。
現場はいつでも、こうした小さな観察の積み重ねで守られています。また次回の記事で、より深いトラブルシューティングの世界を冒険しましょう!
コメント