投稿履歴
- 【Excel】シートが見えない!表示されない原因と対処法
- 【Linux】lsofコマンドの見方・活用ガイド
- 【A5M2】テーブルにNULL値を入力する方法
- 【Linux】標準出力と標準エラー出力の違い
- DRAMとSRAMの違い・覚え方を徹底解説!
- 【サクラエディタ】スペースとタブを置換する方法
- 【Excel】VBAの起動方法(開発タブが表示されない場合)
- 今日から使える!Gitコミットメッセージの書き方と型
- 【Excel】区切り指定でCSVを貼り付ける方法
- 【Linux】テキストファイルの重複行を削除する方法
- 【サクラエディタ】重複行を削除する方法
- Excelのプルダウンリストをショートカットで操作・管理する
- 【サクラエディタ】タブ表示の設定と使いこなしガイド
- 【サクラエディタ】矩形選択(ボックス選択)を完全ガイド
- 【サクラエディタ】Grep機能の使い方を初心者にもわかりやすく解説!
- TCPとUDPの違いと覚え方:信頼性 vs スピードを徹底解説
- Pythonの仮想環境を終了(deactivate)する方法
- 【Linux】zipファイルの圧縮方法(zipコマンド)
- LinuxでZIPファイルを解凍する方法【unzipコマンド】
- 暗号化アルゴリズムの種類:代表的なアルゴリズムを紹介!
Linux環境でネットワークの状態を調査する際に欠かせないのが、ssコマンドです。本記事では、ssコマンドの基本的な使い方から、実践的な活用方法までをわかりやすく解説します。また、従来のツールとの違いや、より効率的に活用するためのテクニックについても紹介します。
ssはnetstatの代替コマンド
ssコマンドはsocket statisticsの略で、ネットワークのソケットの情報を表示するために使用されるLinuxコマンドです。従来のnetstatコマンドの代替として推奨されていて、より簡単に情報を取得することができます。ネットワーク接続、リスニングソケット、パケット統計などの情報を取得することができます。
ネットワーク接続の状態を調査する際には、まさに必須のツールと言えるでしょう。
ssとnetstatの違い
| 比較項目 | netstat | ss |
|---|---|---|
| パフォーマンス | 低速 | 高速 |
| 保守状況 | 非推奨 | 推奨 |
| 表示対象 | 制限あり | 詳細まで対応 |
ssコマンドはLinuxカーネルが持つ情報を直接読み出すため、非常に高速かつ正確な出力が可能です。
netstatは古くからあるツールですが、内部的には/procファイルシステムを通して情報を取得しており、ssほど効率的ではありません。現在では多くのディストリビューションでssがデフォルトのツールとして推奨されており、将来的なメンテナンス性を考慮してもssへの移行が望まれます。
netstatコマンドを利用した確認をしたい場合はこちらのリンクを参照してください。
基本的な使い方
ssコマンドにオプションを指定することで利用することができます。
ss [オプション]何もオプションを指定せずに実行すると、現在のすべてのTCP接続が表示されます。
ssこの出力には、ローカルアドレス、リモートアドレス、接続状態(ESTAB、LISTENなど)、関連するプロセス情報が含まれます。例えば、ウェブサーバやデータベースサーバの接続数を確認したい場合に便利です。
各出力項目の説明
各出力項目の意味は以下の通りとなります。
| 項目 | 説明 |
|---|---|
Netid | 使用しているソケットタイプ(例: tcp, udp, unix など) |
State | 接続状態(LISTEN, ESTAB, CLOSE-WAIT など) |
Recv-Q | 受信キューのバイト数(未処理データ) |
Send-Q | 送信キューのバイト数(送信待ちデータ) |
Local Address:Port | ローカルアドレスとポート番号(サーバ側) |
Peer Address:Port | 接続相手のアドレスとポート番号(クライアント側) |
Process | 関連するプロセス情報(-p オプション指定時。PIDやコマンド名など) |
よく使うオプション一覧
よく利用するssコマンドの各オプションを以下に示します。これらのオプションを組み合わせることで、さまざまな角度からネットワーク状態を分析することが可能です。
| オプション | 説明 |
|---|---|
-t | TCPソケットのみを表示,TCP情報を表示 |
-u | UDPソケットのみを表示,UDP情報を表示 |
-l | LISTEN状態のソケットのみ表示,Listenポートのみを表示 |
-a | すべてのソケットを表示(LISTEN含む) |
-n | ホスト名やサービス名を解決せずに数値で表示 (ex :httpと表示せず:80と表示) |
-p | 該当ソケットに紐づくプロセス情報を表示(要sudo) |
-s | ソケットの統計情報を表示 |
-x | UNIXドメインソケットを表示 |
すべてのソケットを表示
以下コマンドですべてのソケット情報を取得します。
ss -aLISTEN状態のTCPポートを確認
以下コマンドで接続待ちしているソケットを取得します。
ss -nltサーバとして動作しているプロセスがどのポートで待ち受けているかを確認できます。
LISTEN状態のUDPポートを確認
ss -ulnDNSサーバやNTPサーバのように、UDPで待ち受けているサービスの確認に有効です。
通信が確立しているポートを確認
以下コマンドを実行して通信が確立しているTCPソケットを取得します。
ss -ntState Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessESTAB 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:80ESTAB 0 88 xx.xxx.x.x:xxxx xxx.xxx.xx.xx:xxxxxESTAB 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:80以下コマンドを実行して通信が確立しているUDPソケットを取得します。
ss -nuプロセス情報付きでポート番号を表示
特定の接続がどのプロセスに属しているかを確認したいときに便利です。特にポート競合のトラブルシューティングに役立ちます。 以下コマンドでTCP、UDP両方の接続を、ホスト名解決なし、プロセス情報付きで一覧表示します。
sudo ss -tunapUNIXドメインソケットの一覧表示
nginxやPostgreSQLなど、ローカル通信にUNIXソケットを利用するソフトウェアの接続状況を確認できます。
ss -xソケットの統計情報を表示
以下コマンドでソケットの種類ごとに本数をサマリ表示します。
ss -sTotal: 125TCP: 15 (estab 3, closed 0, orphaned 0, timewait 0)
Transport Total IP IPv6RAW 0 0 0UDP 8 6 2TCP 15 12 3INET 23 18 5FRAG 0 0 0フィルタ機能を使いこなす
ssコマンドでは、詳細なフィルタ指定が可能です。以下のような高度な条件指定に対応しています。
特定のポートで待ち受けているサービスを探す
ss -ltn sport = :80HTTPサービスなど、特定のポートでLISTENしているTCPソケットを探します。
State Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessLISTEN 0 511 0.0.0.0:80 0.0.0.0:*LISTEN 0 511 [::]:80 [::]:*特定のIPアドレスへの接続を確認
あるホストへの接続状態をチェックしたい場合に使用します。ファイアウォールのトラブルシュートにも有効です。
ss -tn dst 192.168.0.1複数条件の組み合わせ
特定ネットワーク内からHTTPSポートへ接続している通信だけを抽出できます。
ss -tan 'src 192.168.0.0/24 and dst = :443'まとめ
ssコマンドは、軽量で高速、かつ柔軟なフィルタ機能を持つ優れたネットワーク調査ツールです。TCP/UDPの通信状態の確認から、特定ポートやプロセスに関する調査、さらにUNIXソケットの確認まで幅広く対応しています。特にリアルタイム性が求められるトラブルシューティングや監視用途において、その価値は非常に高いものです。
基本の使い方をマスターすることで、ネットワークトラブルの原因調査やサーバのポート確認がスムーズになります。netstatからの移行がまだの方は、ぜひこの機会にssに慣れておきましょう。さらにスクリプトや監視ツールと組み合わせることで、自動化されたネットワーク監視体制の一部としても活用できます。
Linuxユーザにお勧めの本
ITエンジニアにお勧めの本
以上で本記事の解説を終わります。
よいITライフを!