こんにちは。国内外のデータセンターを渡り歩き、深夜の緊急呼び出し(オンコール)の呼び出し音を子守唄に育ってきた、NOCエンジニア兼技術ライターです。
皆さんは、自分が管理しているサーバーが「今、誰と、どんな話を、どの道を通ってしているのか」を正確に把握できていますか?
ネットワークのトラブルは、目に見えないパケットが飛び交う世界だからこそ、一度こじれると迷宮入りしがちです。でも、安心してください。私たちプロの現場には、古くから愛され続けている最強の「聴診器」があります。それが netstat コマンドです。
今日は、インフラの世界に足を踏み入れたばかりの皆さんが、この魔法のコマンドを使いこなし、サーバーの心の声を聴けるようになるための第一歩を、優しく丁寧に解説していきますね。
—
1. そもそも netstat って何をしているの?
想像してみてください。あなたは巨大な郵便局のセンター長です。
ひっきりなしに届く手紙(パケット)が、どの窓口(ポート)に届き、どの配達員(プロセス)が処理し、どの道路(ルーティング)を通って出ていくのか。この「郵便局内の交通整理状況」を一覧表にして見せてくれるのが netstat です。
最近では ss コマンドという新しい道具も出てきましたが、netstat のオプションの覚えやすさと、どのOSでも動く汎用性は、今でも現場で絶大な信頼を得ています。
—
2. 【最優先】 -an で「スピード解決」と「全体把握」
まず最初に覚えるべき基本中の基本が、この -an オプションです。
-a(all): すべての接続(待ち受け中も、通信中も)を表示します。-n(numeric): 名前解決をせず、IPアドレスとポート番号を「数字」のまま表示します。
ここが一番のポイントです。トラブルが起きている時、サーバーは必死に「このIPアドレスは、えーっと、google.com さんかな?」と名前を調べようとします。これが「名前解決」です。しかし、ネットワークが重い時にこれをやると、コマンドの結果が返ってくるまで数分待たされることも……。
現場では迷わず -n をつけます。「名前なんて後でいい、まずは数字でサッと見せて!」というわけですね。
# すべての接続を数字形式で表示する
# 現場で最も叩かれるコマンドの一つです
netstat -an
実行すると、0.0.0.0:80(誰からのWebアクセスも待っています!)といった情報がズラリと並びます。数字で見ることで、余計な待ち時間をゼロにできるんです。
—
3. 【犯人捜し】 -p で「どのプログラムか」を特定する
「怪しい通信があるのはわかった。でも、一体どのプログラムが犯人なんだ?」
そんな時に活躍するのが -p (programs) オプションです。
郵便局の例えで言えば、「窓口に座っている担当者の名札を確認する」ようなものです。
# 管理者権限(sudo)で実行することで、プログラム名(PID)まで表示します
# プロセスIDとプログラム名が一番右側に表示されます
sudo netstat -anp | grep :80
上記の例では、ポート 80 番(Webサイトの入り口)を実際に使っているのが nginx なのか apache なのか、はたまた全く知らない怪しいプログラムなのかを一発で見抜けます。
※ -p オプションは、他の人の名札を覗き見るようなものなので、通常は sudo(管理者権限)が必要になることを覚えておきましょう!
—
4. 【地図の確認】 -r で「パケットの帰り道」を診る
サーバーが外の世界と通信できない時、実は「行き」ではなく「帰り道」が分からなくて迷子になっていることがよくあります。
その「地図」を確認するのが -r (routing) オプションです。
# カーネルのルーティングテーブル(ネットワークの地図)を表示します
netstat -r
ここで一番大事なのは default と書かれた行です。これは「宛先がよくわからないパケットは、とりあえずこの出口(ゲートウェイ)に出せ!」という、いわば「近所の大きな郵便局への道」を指しています。
もし、この default 先が間違っていたら、サーバーは外の世界に一歩も出ることができません。パケットが迷子になっていないか、この地図を見て優しく導いてあげましょう。
—
5. 【健康診断】 -i で「インターフェースの悲鳴」を聴く
最後に紹介するのが -i (interfaces) です。これは、LANケーブルが刺さっている物理的な口(インターフェース)が、元気に働いているかをチェックします。
# インターフェースごとの統計情報を表示します
netstat -i
注目してほしいのは RX-ERR(受信エラー)や TX-ERR(送信エラー)の項目です。ここが 0 ではなく大きな数字になっていたら、それは「郵便物がボロボロになって届いている」か「配達中に落とした」というトラブルのサイン。
LANケーブルの接触不良や、ネットワーク機器の故障を疑うきっかけになります。
—
まとめ:現場で使える「魔法の組み合わせ」
最後に、私が現場でトラブルに直面した時、真っ先に叩く「秘伝の組み合わせ」を伝授します。
# TCP通信(-t)に絞り、数字形式(-n)で、すべての接続(-a)と、
# プロセス名(-p)を同時に表示する
sudo netstat -antp
このコマンド一つで、「どのプログラムが、どのIPアドレスと、どのポートを使って、今どんな状態(接続中か、待ち受け中か)なのか」がすべて手に取るように分かります。
ネットワークの運用監視は、最初は難しく感じるかもしれません。でも、netstat が出してくれる情報を一つずつ紐解いていけば、必ず解決の糸口が見えてきます。
「パケットは正直」です。
コマンドを通じて彼らと対話ができるようになれば、あなたも立派なインフラエンジニアの仲間入りです。一歩ずつ、楽しみながら理解を深めていきましょうね!
また次回の記事でお会いしましょう。ハッピー・トラブルシューティング!
コメント