技術ノート Linux Linux で ss コマンドを使用する方法

Linux で ss コマンドを使用する方法

ss コマンドは、古典的な netstat に代わる最新のコマンドです。 Linux でこれを使用すると、ネットワーク接続に関する統計を取得できます。この便利なツールを使用する方法は次のとおりです。

ss コマンドと netstat

非推奨の netstat コマンド の代わりとなる ss 、コンピュータが他のコンピュータ、ネットワーク、およびサービスとどのように通信するかに関する 詳細情報を提供します

ss 伝送制御プロトコル (TCP)、 ユーザー データグラム プロトコル (UDP)、 Unix (プロセス間) 、および raw ソケットの統計を表示します。 ネットワーク OSI レベル で動作します。つまり、TCP ヘッダーと UDP ヘッダーはトランスポート層ではなくアプリケーション ソフトウェアで処理する必要があります。 インターネット制御メッセージ プロトコル (ICMP) メッセージと ping ユーティリティはどちらも raw ソケットを使用します。

Linux で ss コマンドを使用する方法

ssの使用

ss 最新の Linux ディストリビューションにすでに含まれているため、インストールする必要はありません。ただし、その出力は非常に長くなる可能性があり、630 行を超える結果が含まれる場合もあります。結果も非常に多岐にわたります。

このため、スクリーンショットに収まらないため、取得した結果のテキスト表現を含めました。より管理しやすくするために、それらをトリミングしました。

Linux で ss コマンドを使用する方法

ネットワーク接続のリスト

コマンドライン オプションを指定せずに ss 使用すると、リッスンしていないソケットがリストされます。つまり、リスニング状態にないソケットがリストされます。

これを確認するには、次のように入力します。

 ss

 Netid 状態 Recv-Q Send-Q ローカル アドレス:ポート ピア アドレス:ポート プロセス

u_str ESTAB 0 0 * 41826 * 41827

u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688

u_str ESTAB 0 0 * 35550 * 35551

u_str ESTAB 0 0 * 38127 * 38128

u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242

u_str ESTAB 0 0 * 19039 * 19040

u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885

u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306

icmp6 UNCONN 0 0 *:ipv6-icmp *:*

udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps

列は次のとおりです。

  • Netid : ソケットのタイプ。この例では、Unix ストリームである「u_str」、「udp」、および IP バージョン 6 ICMP ソケットである「icmp6」があります。 Linux ソケット タイプ の詳細については、Linux マニュアル ページ を参照してください。
  • State : ソケットの状態。
  • Recv-Q : 受信したパケットの数。
  • Send-Q : 送信されたパケットの数。
  • Local Address:Port : ローカル アドレスとポート (または Unix ソケットの同等の値)。
  • Peer Address:Port : リモート アドレスとポート (または Unix ソケットの同等の値)。

UDP ソケットの場合、「状態」列は通常空白です。 TCP ソケットの場合は、次のいずれかになります。

  • リッスン: サーバー側のみ。ソケットは接続要求を待っています。
  • SYN-SENT: クライアント側のみ。このソケットは接続要求を行っており、それが受け入れられるかどうかを待機しています。
  • SYN-RECEIVED: サーバー側のみ。このソケットは、接続要求を受け入れた後、接続確認を待機しています。
  • 確立: サーバーとクライアント。サーバーとクライアントの間に有効な接続が確立され、両者の間でデータを転送できるようになります。
  • FIN-WAIT-1: サーバーとクライアント。このソケットは、リモート ソケットからの接続終了要求、またはこのソケットから以前に送信された接続終了要求の確認を待っています。
  • FIN-WAIT-2: サーバーとクライアント。このソケットはリモート ソケットからの接続終了要求を待っています。
  • CLOSE-WAIT: サーバーとクライアント。このソケットはローカル ユーザーからの接続終了要求を待っています。
  • 終わりに: サーバーとクライアント。このソケットは、リモート ソケットからの接続終了要求の確認を待っています。
  • LAST-ACK: サーバーとクライアント。このソケットは、リモート ソケットに送信した接続終了要求の確認を待っています。
  • TIME-WAIT: サーバーとクライアント。このソケットはリモート ソケットに確認応答を送信し、リモート ソケットの終了要求を受信したことを通知します。現在、確認応答が受信されたことを確認するのを待っています。
  • CLOSED: 接続がないため、ソケットは終了しました。
Linux で ss コマンドを使用する方法

リスニングソケットのリスト表示

リッスンしているソケットを表示するには、次のように -l (リッスン) オプションを追加します。

 ss -l

 Netid 状態 Recv-Q Send-Q ローカル アドレス:ポート ピア アドレス:ポート プロセス

nl UNCONN 0 0 rtnl:NetworkManager/535 *

nl UNCONN 0 0 rtnl:evolution-addre/2987 *

u_str リッスン 0 4096 /run/systemd/private 13349 * 0

u_seq リッスン 0 4096 /run/udev/control 13376 * 0

u_str リッスン 0 4096 /tmp/.X11-unix/X0 33071 * 0

u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0

u_str リッスン 0 4096 /run/systemd/fsck.progress 13362 * 0

u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0

これらのソケットはすべて接続されておらず、リッスンしています。 「rtnl」はルーティング ネットリンクを意味し、カーネル プロセスとユーザー空間プロセスの間で情報を転送するために使用されます。

Linux で ss コマンドを使用する方法

すべてのソケットのリスト表示

すべてのソケットをリストするには、 -a (all) オプションを使用できます。

 ss -a

 Netid 状態 Recv-Q Send-Q ローカル アドレス:ポート ピア アドレス:ポート プロセス

nl UNCONN 0 0 rtnl:NetworkManager/535 *

nl UNCONN 0 0 rtnl:evolution-addre/2987 *

u_str 聞く 0 100 public/showq 23222 * 0

u_str LISTEN 0 100 プライベート/エラー 23225 * 0

u_str LISTEN 0 100 プライベート/リトライ 23228 * 0

udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:*

udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:*

tcp リッスン 0 128 [::]:ssh [::]:*

tcp リッスン 0 5 [::1]:ipp [::]:*

tcp リッスン 0 100 [::1]:smtp [::]:*

出力には、状態に関係なく、すべてのソケットが含まれます。

Linux で ss コマンドを使用する方法

TCPソケットのリスト表示

フィルターを適用して、一致するソケットのみを表示することもできます。 -t (TCP) オプションを使用するので、TCP ソケットのみがリストされます。

ss -a -t

Linux で ss コマンドを使用する方法

UDP ソケットのリスト表示

-u (UDP) オプションは、同じタイプのフィルタリング アクションを実行します。今回は、UDP ソケットのみを表示します。

 ss -a -u

状態 Recv-Q Send-Q ローカル アドレス:ポート ピア アドレス:ポート プロセス

アンコン 0 0 0.0.0.0:631 0.0.0.0:*

UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:*

アンコン 0 0 0.0.0.0:60734 0.0.0.0:*

UNCONN 0 0 127.0.0.53%lo:ドメイン 0.0.0.0:*

ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps

UNCONN 0 0 [::]:mdns [::]:*

アンコン 0 0 [::]:51193 [::]:*

Unix ソケットのリスト

Unix ソケットのみを表示するには、以下に示すように -x (Unix) オプションを含めることができます。

 ss -a -x

 Netid 状態 Recv-Q Send-Q ローカル アドレス:ポート ピア アドレス:ポート プロセス

u_str ESTAB 0 0 * 41826 * 41827

u_str ESTAB 0 0 * 23183 * 23184

u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639

u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885

u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306

未処理のソケットのリスト表示

raw ソケットのフィルターは -w (raw) オプションです。

 ss -a -w

IP バージョン 4 ソケットのリスト

TCP/IP バージョン 4 プロトコルを使用するソケットは、 -4 (IPV4) オプションを使用してリストできます。

 ss -a -4

IP バージョン 6 ソケットのリスト表示

次のように、 -6 (IPV6) オプションを使用して、一致する IP バージョン 6 フィルターをオンにできます。

 ss -a -6

状態ごとのソケットのリスト

state オプションを使用すると、ソケットをその状態ごとにリストできます。これは、確立された状態、リスニング状態、またはクローズされた状態で機能します。また、解決オプション ( -r ) を使用して、ネットワーク アドレスを名前に解決し、ポートをプロトコルに解決しようとします。

次のコマンドは確立された TCP 接続を検索し、 ss 名前の解決を試みます。

 ss -t -r 状態が確立されました

確立された状態にある 4 つの接続がリストされます。ホスト名 ubuntu20-04 は解決されており、2 行目の SSH 接続には 22 の代わりに「ssh」が表示されています。

これを繰り返して、リスニング状態のソケットを探すことができます。

 ss -t -r 状態リスニング

Recv-Q Send-Q ローカル アドレス:ポート ピア アドレス:ポート プロセス

0 128 ローカルホスト:5939 0.0.0.0:*

0 4096 ローカルホスト%lo:ドメイン 0.0.0.0:*

0 128 0.0.0.0:ssh 0.0.0.0:*

0 5 ローカルホスト:ipp 0.0.0.0:*

0 100 ローカルホスト:smtp 0.0.0.0:*

0 128 [::]:ssh [::]:*

0 5 ip6-localhost:ipp [::]:*

0 100 ip6-localhost:smtp [::]:*

プロトコルごとのソケットのリスト

dport および sport オプションを使用して、特定のプロトコルを使用してソケットを一覧表示できます。これらのオプションは、それぞれ宛先ポートと送信元ポートを表します。

established 接続で HTTPS プロトコルを使用しているソケットを一覧表示するには、次のように入力します (開き括弧の後ろと閉じ括弧の前のスペースに注意してください)。

 ss -a 状態が確立されました '( dport = :https または Sport = :https )'

プロトコル名またはそのプロトコルに通常関連付けられているポートを使用できます。 Secure Shell (SSH) のデフォルトのポートはポート 22 です。

1 つのコマンドでプロトコル名を使用し、ポート番号を使用してそれを繰り返します。

 ss -a '( dport = :ssh または スポーツ = :ssh )'

 ss -a '( dport = :22 または スポーツ = :22 )'

予想どおり、同じ結果が得られます。

特定の IP アドレスへの接続の一覧表示

dst (宛先) オプションを使用すると、特定の宛先 IP アドレスへの接続をリストできます。

次のように入力します。

 ss -a dst 192.168.4.25

プロセスの特定

どのプロセスがソケットを使用しているかを確認するには、以下に示すように、プロセス オプション ( -p ) を使用できます ( sudo を使用する必要があることに注意してください)。

 sudo ss -t -p

状態 Recv-Q Send-Q ローカル アドレス:ポート ピア アドレス:ポート プロセス

ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https ユーザー:((“firefox”,pid=3378,fd=151))

ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 ユーザー:((“sshd”,pid=4086,fd=4),(“sshd”,pid=3985,fd=4))

これは、TCP ソケット上で確立された 2 つの接続が SSH デーモンと Firefox によって使用されていることを示しています。

ふさわしい後継者

ss コマンドは、以前に netstat によって提供されていたものと同じ情報を、よりシンプルでアクセスしやすい方法で提供します。その他のオプションとヒントについては、 man ページ をチェックしてください。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワッド · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

関連: 開発者と愛好家のための最高の Linux ラップトップ

「Linux で ss コマンドを使用する方法」に関するベスト動画選定!

【スイカゲーム】告知がしたい!3000点いかないと告知できない!【星街すいせい / ホロライブ】
ポート番号とは?(基本情報技術者試験(国家資格)講座)netstatコマンド、ssコマンド(Windows、Linux)