Linux環境でソケット接続を調査する際、ssコマンドは強力なツールとなります。Socket Statisticsの略称であるこのコマンドは、従来のnetstatよりも詳細かつ高速な接続情報の取得が可能です。
基本統計の確認
システム全体のソケット状況を俯瞰するには、以下を実行します:
$ ss -s
Total: 524
TCP: 8 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total IP IPv6
RAW 2 1 1
UDP 7 5 2
TCP 8 6 2
INET 17 12 5
FRAG 0 0 0
各項目の意味は以下の通りです:
- RAW:IP層への直接アクセスを許可するソケット(パケットキャプチャなどに使用)
- TCP/UDP:標準的なトランスポート層プロトコル
- INET:IPv4とIPv6の統合カウント
- FRAG:IPフラグメント関連のエントリ
アクティブ接続の詳細表示
すべてのソケット情報を表示すると膨大な出力となります:
$ ss -a | wc -l
555
プロトコル別に絞り込むオプションを活用しましょう:
| オプション | 表示内容 |
|---|---|
-ta | TCPソケット(全状態) |
-ua | UDPソケット |
-wa | RAWソケット |
-xa | UNIXドメインソケット |
-4a | IPv4のみ |
-6a | IPv6のみ |
確立済み接続のみを確認:
$ ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 64 192.168.0.16:ssh 192.168.0.6:25944
ESTAB 0 0 192.168.0.16:ssh 192.168.0.9:5385
リスニングポートの調査
待ち受け中のサービスを確認:
$ ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 10 127.0.0.1:submission 0.0.0.0:*
LISTEN 0 128 127.0.0.53%lo:domain 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
サービス名ではなくポート番号で表示:
$ ss -ltn
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 10 127.0.0.1:587 0.0.0.0:*
LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
効率化のためのエイリアス設定
頻繁に使用する組み合わせをシェルエイリアスに登録すると便利です:
$ alias ports='ss -ltn'
$ alias conns='ss -t state established'
$ alias sockstat='ss -s'
より高度なフィルタリングとして、特定状態の接続のみ抽出も可能です:
$ ss -t state time-wait
$ ss -t state established '( dport = :http or dport = :https )'
詳細な構文はman ssまたはss --helpで確認してください。