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

公開: 2022-01-29
Linuxラップトップシステムのターミナルウィンドウ。
Fatmawati Achmad Zaenuri / Shutterstock

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

ssコマンドとnetstat

非推奨のnetstatコマンドの代わりに使用されるssは、コンピューターが他のコンピューター、ネットワーク、およびサービスと通信する方法に関する詳細情報を提供します。

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

ssを使用する

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

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

ネットワーク接続の一覧表示

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

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

 ss 

 Netid State 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のマニュアルページを参照してください。
  • 状態:ソケットの状態。
  • Recv-Q :受信したパケットの数。
  • Send-Q :送信されたパケットの数。
  • ローカルアドレス:ポート:ローカルアドレスとポート(またはUnixソケットの場合は同等の値)。
  • ピアアドレス:ポート:リモートアドレスとポート(またはUnixソケットの同等の値)。
広告

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

  • 聞く:サーバー側のみ。 ソケットは接続要求を待機しています。
  • SYN-SENT:クライアント側のみ。 このソケットは接続要求を行い、それが受け入れられるかどうかを確認するために待機しています。
  • SYN-RECEIVED:サーバー側のみ。 このソケットは、接続要求を受け入れた後、接続確認応答を待機しています。
  • 確立済み:サーバーとクライアント。 サーバーとクライアントの間に正常な接続が確立され、2つの間でデータを転送できるようになりました。
  • FIN-WAIT-1:サーバーとクライアント。 このソケットは、リモートソケットからの接続終了要求、またはこのソケットから以前に送信された接続終了要求の確認応答を待機しています。
  • FIN-WAIT-2:サーバーとクライアント。 このソケットは、リモートソケットからの接続終了要求を待機しています。
  • CLOSE-WAIT:サーバーとクライアント。 このソケットは、ローカルユーザーからの接続終了要求を待機しています。
  • クロージング:サーバーとクライアント。 このソケットは、リモートソケットからの接続終了要求の確認応答を待機しています。
  • LAST-ACK:サーバーとクライアント。 このソケットは、リモートソケットに送信した接続終了要求の確認応答を待機しています。
  • TIME-WAIT:サーバーとクライアント。 このソケットは、リモートソケットに確認応答を送信して、リモートソケットの終了要求を受信したことを通知します。 現在、確認応答が受信されたことを確認するために待機しています。
  • CLOSED:接続がないため、ソケットは終了しました。

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

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

 ss -l 

 Netid State Recv-Q Send-Qローカルアドレス:ポートピアアドレス:ポートプロセス 
nl UNCONN 0 0 rtnl:NetworkManager / 535 * 
nl UNCONN 0 0 rtnl:evolution-addre / 2987 * 
..。
u_str LISTEN 0 4096 / run / systemd / private 13349 * 0 
u_seq LISTEN 0 4096 / run / udev / control 13376 * 0 
u_str LISTEN 0 4096 /tmp/.X11-unix/X0 33071 * 0 
u_dgr UNCONN 0 0 / run / systemd / journal / syslog 13360 * 0 
u_str LISTEN 0 4096 /run/systemd/fsck.progress 13362 * 0 
u_dgr UNCONN 0 0 / run / user / 1000 / systemd / notify 32303 * 0

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

すべてのソケットの一覧表示

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

 ss -a 

 Netid State Recv-Q Send-Qローカルアドレス:ポートピアアドレス:ポートプロセス 
nl UNCONN 0 0 rtnl:NetworkManager / 535 * 
nl UNCONN 0 0 rtnl:evolution-addre / 2987 * 
..。
u_str LISTEN 0100 public / showq 23222 * 0 
u_str LISTEN0100プライベート/エラー23225 * 0 
u_str LISTEN0100プライベート/再試行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 LISTEN 0 128 [::]:ssh [::]:* 
tcp LISTEN 0 5 [:: 1]:ipp [::]:* 
tcp LISTEN 0100 [:: 1]:smtp [::]:*

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

TCPソケットの一覧表示

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

ss -a -t

UDPソケットの一覧表示

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

 ss -a -u 

 State Recv-Q Send-Qローカルアドレス:ポートピアアドレス:ポートプロセス 
UNCONN 0 0 0.0.0.0:631 0.0.0.0:* 
UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* 
UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* 
UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* 
ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps 
UNCONN 0 0 [::]:mdns [::]:* 
UNCONN 0 0 [::]:51193 [::]:*

Unixソケットの一覧表示

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

 ss -a -x 

 Netid State 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ソケットのリスト

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 localhost:5939 0.0.0.0:* 
0 4096 localhost%lo:domain 0.0.0.0:* 
0128 0.0.0.0:ssh 0.0.0.0:* 
0 5 localhost:ipp 0.0.0.0:* 
0100 localhost:smtp 0.0.0.0:* 
0 128 [::]:ssh [::]:* 
0 5 ip6-localhost:ipp [::]:* 
0100 ip6-localhost:smtp [::]:*

プロトコルによるソケットのリスト

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

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

 ss-確立された状態 '(dport =:httpsまたはsport =:https)' 

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

広告

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

 ss -a '(dport =:sshまたはsport =:ssh)'
 ss -a '(dport =:22またはsport =:22)' 

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

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

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

次のように入力します。

 ss -a dst 192.168.4.25 

プロセスの特定

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

 sudo ss -t -p 

 State 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ラップトップ