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を使用する
関連記事: