【入門編】 ssコマンドのフィルタリング構文(state, sport, dport, dport = :http等) – トラブルシューティング&ネットワーク運用監視実践ガイド

こんにちは。大規模データセンターの片隅で、今日もパケットの波に揉まれているシニアエンジニアです。

皆さんは、運用中のサーバーで「なんだか接続が重いな?」「特定の場所から大量にアクセスが来ている気がする……」と感じたことはありませんか? そんな時、ベテランエンジニアが魔法のように黒い画面(CLI)を叩いて、一瞬で原因を特定する姿を見たことがあるかもしれません。

かつては netstat というコマンドがその役割を担っていましたが、現代のLinuxインフラにおいて、より高速で、より強力な武器となるのが ss (Socket Statistics)コマンドです。

「オプションがいっぱいあって難しそう……」と敬遠されがちですが、実はコツさえ掴めば、郵便局の仕分け作業のように直感的に使いこなせるんですよ。今回は、ネットワークの迷宮を解き明かす「ssコマンドのフィルタリング術」を、一歩ずつ丁寧に紐解いていきましょう!

—

1. サーバーは「巨大なアパート」である

まずはイメージを膨らませてみましょう。
ネットワークに繋がったサーバーは、数万もの部屋がある「巨大なアパート」のようなものです。

  • IPアドレス:アパートの住所そのもの
  • ポート番号:各部屋の番号(80号室、443号室など)
  • ソケット(Socket):部屋の中で誰かが誰かと会話している「通話状態」

ss コマンドは、このアパートの管理人さんが持っている「入居者名簿」のようなものです。「今、どの部屋で、誰が、どんな状況で話をしているか?」を瞬時にリストアップしてくれます。

—

2. まずは基本の「キ」:すべてを表示する

フィルタリングを学ぶ前に、まずは全体を見る魔法の合言葉を覚えましょう。

# 全てのTCP接続(t)を、数字形式(n)で、詳しく表示(a)します
ss -tan

これだけでも情報は出ますが、接続数が多いサーバーだと画面が文字で埋め尽くされてしまいます。そこで、「フィルタリング(絞り込み)」の出番です!

—

3. 「状態(State)」で絞り込む:今、何をしている?

ネットワークの接続には「フェーズ」があります。電話に例えるとわかりやすいですよ。

  • LISTEN:電話が鳴るのを待っている状態(受付中)
  • ESTABLISHED:通話中の状態(データ通信中)
  • TIME-WAIT:通話が終わって、受話器を置いた直後の余韻(終了処理中)

例えば、「今まさに通信しているセッションだけ見たい!」という時は、こう書きます。

# 通信が確立(established)しているものだけを表示
ss -t state established

# 逆に、外部からの接続を待ち受けている(listening)ポートだけを確認
ss -t state listening

「一歩ずつ理解していきましょう!」
この state 指定を覚えるだけで、ノイズ(不要な情報)がグッと減って、今起きていることが見えやすくなります。

—

4. 「ポート番号」で絞り込む:どの部屋の出来事?

次に、「特定の部屋(ポート)」に注目してみましょう。
ここで使うのが sport (Source Port / 送信元) と dport (Destination Port / 送信先) です。

サーバーが提供しているサービスを確認する(dport)

例えば、「Webサイト(80番や443番)へのアクセスだけを見たい」という場合です。

# 宛先ポート(dport)が 80(HTTP)の接続を表示
ss -t dport = :80

# HTTPS(443)も見たい場合は、このように書けます
ss -t '( dport = :http or dport = :https )'

ここで出てくる :http という書き方は、/etc/services というファイルに定義された名前を使っています。もちろん :80 と数字で書いても大丈夫です。

自分のサーバーから外への通信を確認する(sport)

逆に、「自分のサーバーが外のデータベースに繋ぎに行っている様子」を見たい時は、自分の部屋番号である sport を意識します。

—

5. 「住所(CIDR)」で絞り込む:どこの誰からの接続?

トラブルシューティングの現場では、「特定のネットワーク拠点(例えば支店や特定のクラウド)からの接続だけを調査したい」という場面がよくあります。

そんな時は、IPアドレスの範囲を指定する dst (Destination) や src (Source) を使います。

# 192.168.1.0〜255 の範囲(24ビットマスク)からの接続を調べる
ss -t src 192.168.1.0/24

これは郵便配達員さんが「この町内会からの手紙だけをピックアップしよう」と仕分けするのと全く同じ感覚です。

—

6. 【実践編】これぞプロの技! 組み合わせの妙

さて、ここまでの知識を組み合わせて、現場で即戦力になる「複合クエリ」を作ってみましょう。
「ある特定のIPアドレスから、こちらのWebサイト(80番)に、現在進行形で繋がっているセッション」を探し出すコマンドです。

# src: 相手のIP
# dport: こちらの待ち受けポート
# state established: 通信中
ss -t src 203.0.113.50 dport = :80 state established

どうでしょう? 複雑に見えたネットワークの濁流が、まるで透明になったかのように整理されて見えてきませんか?

—

まとめ:道具を使いこなす楽しさ

ネットワークの運用監視は、目に見えない電気信号の流れを追いかける、非常にクリエイティブな仕事です。

今回ご紹介した ss コマンドのフィルタリングは、いわば「高性能な顕微鏡」のピントを合わせる作業のようなもの。最初は ss -at だけで全体を眺めるだけでも十分です。慣れてきたら「今日は state で絞ってみよう」「次は dport を使ってみよう」と、少しずつ新しいレンズを試してみてください。

トラブルの真っ只中で、自分がおこなった ss コマンドの結果から「原因はこれだ!」と特定できた時の快感は、何物にも代えがたいものがあります。

一歩ずつ、パケットの気持ちがわかるエンジニアを目指していきましょう。あなたの挑戦を、いつでも応援しています!

—
*執筆:NOCシニアエンジニア 兼 技術メディア主筆*
*現場の泥臭い経験を、明日の運用に活かす知恵に変えて。*

コメント

タイトルとURLをコピーしました