2026年5月24日

2026年5月24日

netstatとssコマンドで接続状態を確認する方法

はじめに

サーバー運用では「どのポートが開いているか」「どのプロセスが接続を受けているか」を把握することが極めて重要です。ss(Socket Statistics)は高速で詳細な情報を出力し、旧来のnetstatを置き換える標準ツールです。

本記事ではssとnetstatの基本的な使い方から、よくあるトラブル調査での実用例までを解説します。

症状・背景

  • サーバーで開いているポート一覧を確認したい
  • どのプロセスがポートを使用しているか調べたい
  • 特定アドレスからの接続数を集計したい
  • TIME_WAITが多発しているか確認したい

手順・設定方法

ステップ1: リスニングポートを確認する

# 全リスニングポートを表示(プロセス付き)
sudo ss -tulnp

# TCPのみ
sudo ss -tlnp

# UDPのみ
sudo ss -ulnp

# netstat版(従来コマンド)
sudo netstat -tulnp

ステップ2: 接続状態を確認する

# 確立済みTCP接続を表示
ss -tn state established

# 特定ポートへの接続を抽出
ss -tn 'sport = :80'

# 接続元IPごとに集計
ss -tn state established | awk '{print $5}' | \
  cut -d: -f1 | sort | uniq -c | sort -rn

# 接続状態別の数を集計
ss -tan | awk 'NR>1 {print $1}' | sort | uniq -c

ステップ3: プロセスとの紐付けを確認する

# プロセス情報付きで表示
sudo ss -tlnp

# nginxのリスニング状況を確認
sudo ss -tlnp | grep nginx

# 特定PIDの開いているソケットを表示
sudo ss -tlnp | grep 'pid=1234'

# プロセスから逆引きする場合
sudo lsof -i -P -n | grep LISTEN

ステップ4: フィルタと統計を活用する

# 特定ポート範囲を表示
ss -tn 'dport >= :8000 and dport <= :9000'

# ソケットの統計サマリを表示
ss -s

# Unixドメインソケットを表示
ss -lx

# TIME_WAITソケットの数を確認
ss -tan state time-wait | wc -l

注意事項

  • netstatは多くのディストリビューションで非推奨化、net-toolsパッケージの別途インストールが必要な場合がある
  • -pオプションでプロセス情報を取得するにはroot権限が必要
  • 接続数が極端に多い環境ではssの方が大幅に高速
  • IPv6接続は別行で表示されるため、IPv4/IPv6両方を確認する

まとめ

1. ss -tulnpがリスニングポート確認の標準

2. stateフィルタで接続状態別に絞り込み可能

3. ss -sでソケット統計サマリを取得

4. netstatは非推奨、新規環境ではssを使用する

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ