目次
はじめに
みなさま、ssコマンドは活用されていますでしょうか。私はまだできていません。
ネットワーク通信におけるソケットの状態を表示させるコマンドです。
ながらくサーバー運用に携わっている方は、netstatコマンドのほうが馴染みがあると思います。
なので、まだ私は、ssでなく、netstatを現役で活用しています。
というわけで、私自身が、netstatコマンドを卒業すべく、ssコマンドを紹介していきます。
といっても、netstatで良く使うオプションがそのまま使えますw
環境
OS : AlmaLinux 8
ssバージョン : 5.18.0
使い方
よく使うオプションはこんな感じかと思います。
オプション | 説明 | |
-a | --all | display all sockets |
-t | --tcp | display only TCP sockets |
-n | --numeric | don't resolve service names |
-r | --resolve | resolve host names |
-l | --listening | display listening sockets |
-4 | --ipv4 | display only IP version 4 sockets |
まずは、-a を付けて実行してみます。
$ ss -a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
nl UNCONN 0 0 rtnl:kernel *
nl UNCONN 0 0 rtnl:NetworkManager/1038 *
..省略..
u_dgr UNCONN 0 0 * 28220 * 11759
u_str ESTAB 0 0 /run/systemd/journal/stdout 24017 * 23307
udp UNCONN 0 0 0.0.0.0:sunrpc 0.0.0.0:*
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:*
udp UNCONN 0 0 [::]:sunrpc [::]:*
udp UNCONN 0 0 [::1]:323 [::]:*
tcp LISTEN 0 100 0.0.0.0:pop3 0.0.0.0:*
tcp LISTEN 0 100 0.0.0.0:imap 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:sunrpc 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:http 0.0.0.0:*
tcp LISTEN 0 32 0.0.0.0:ftp 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:https 0.0.0.0:*
tcp LISTEN 0 32 0.0.0.0:ftps 0.0.0.0:*
tcp LISTEN 0 100 0.0.0.0:imaps 0.0.0.0:*
tcp LISTEN 0 100 0.0.0.0:pop3s 0.0.0.0:*
tcp ESTAB 0 0 192.0.2.129:ssh 192.0.2.114:51138
tcp LISTEN 0 128 *:mysql *:*
tcp LISTEN 0 100 [::]:pop3 [::]:*
tcp LISTEN 0 100 [::]:imap [::]:*
tcp LISTEN 0 128 [::]:sunrpc [::]:*
tcp LISTEN 0 128 [::]:ssh [::]:*
tcp LISTEN 0 100 [::]:imaps [::]:*
tcp LISTEN 0 100 [::]:pop3s [::]:*
$
すべてのソケットの状態が表示されます。
-t をつけることで、TCP通信のソケットのみを表示させることができます。
$ ss -at
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 100 0.0.0.0:pop3 0.0.0.0:*
LISTEN 0 100 0.0.0.0:imap 0.0.0.0:*
LISTEN 0 128 0.0.0.0:sunrpc 0.0.0.0:*
LISTEN 0 128 0.0.0.0:http 0.0.0.0:*
LISTEN 0 32 0.0.0.0:ftp 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 128 0.0.0.0:https 0.0.0.0:*
LISTEN 0 32 0.0.0.0:ftps 0.0.0.0:*
LISTEN 0 100 0.0.0.0:imaps 0.0.0.0:*
LISTEN 0 100 0.0.0.0:pop3s 0.0.0.0:*
ESTAB 0 0 192.0.2.129:ssh 192.0.2.114:51138
LISTEN 0 128 *:mysql *:*
LISTEN 0 100 [::]:pop3 [::]:*
LISTEN 0 100 [::]:imap [::]:*
LISTEN 0 128 [::]:sunrpc [::]:*
LISTEN 0 128 [::]:ssh [::]:*
LISTEN 0 100 [::]:imaps [::]:*
LISTEN 0 100 [::]:pop3s [::]:*
$
-n をつけると、ポートの情報をサービス名でなく、ポート番号での表示にすることができます。
$ ss -atn
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 100 0.0.0.0:110 0.0.0.0:*
LISTEN 0 100 0.0.0.0:143 0.0.0.0:*
LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 32 0.0.0.0:21 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:443 0.0.0.0:*
LISTEN 0 32 0.0.0.0:990 0.0.0.0:*
LISTEN 0 100 0.0.0.0:993 0.0.0.0:*
LISTEN 0 100 0.0.0.0:995 0.0.0.0:*
ESTAB 0 0 192.0.2.129:22 192.0.2.114:51138
LISTEN 0 128 *:3306 *:*
LISTEN 0 100 [::]:110 [::]:*
LISTEN 0 100 [::]:143 [::]:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::]:993 [::]:*
LISTEN 0 100 [::]:995 [::]:*
$
-r をつけるとIPアドレスの表示をホスト名での表示にすることができます。
$ ss -atnr
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 100 0.0.0.0:110 0.0.0.0:*
LISTEN 0 100 0.0.0.0:143 0.0.0.0:*
LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 32 0.0.0.0:21 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:443 0.0.0.0:*
LISTEN 0 32 0.0.0.0:990 0.0.0.0:*
LISTEN 0 100 0.0.0.0:993 0.0.0.0:*
LISTEN 0 100 0.0.0.0:995 0.0.0.0:*
ESTAB 0 0 test.example.co.jp:22 192.0.2.114:51138
LISTEN 0 128 *:3306 *:*
LISTEN 0 100 [::]:110 [::]:*
LISTEN 0 100 [::]:143 [::]:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::]:993 [::]:*
LISTEN 0 100 [::]:995 [::]:*
$
-l はリッスンしているソケットのみを表示することができます。
$ ss -atl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 100 0.0.0.0:pop3 0.0.0.0:*
LISTEN 0 100 0.0.0.0:imap 0.0.0.0:*
LISTEN 0 128 0.0.0.0:sunrpc 0.0.0.0:*
LISTEN 0 128 0.0.0.0:http 0.0.0.0:*
LISTEN 0 32 0.0.0.0:ftp 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 128 0.0.0.0:https 0.0.0.0:*
LISTEN 0 32 0.0.0.0:ftps 0.0.0.0:*
LISTEN 0 100 0.0.0.0:imaps 0.0.0.0:*
LISTEN 0 100 0.0.0.0:pop3s 0.0.0.0:*
LISTEN 0 128 *:mysql *:*
LISTEN 0 100 [::]:pop3 [::]:*
LISTEN 0 100 [::]:imap [::]:*
LISTEN 0 128 [::]:sunrpc [::]:*
LISTEN 0 128 [::]:ssh [::]:*
LISTEN 0 100 [::]:imaps [::]:*
LISTEN 0 100 [::]:pop3s [::]:*
$
-4 をつけることで、ipv4のソケットのみを表示することができます。
$ ss -atl4
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 100 0.0.0.0:pop3 0.0.0.0:*
LISTEN 0 100 0.0.0.0:imap 0.0.0.0:*
LISTEN 0 128 0.0.0.0:sunrpc 0.0.0.0:*
LISTEN 0 128 0.0.0.0:http 0.0.0.0:*
LISTEN 0 32 0.0.0.0:ftp 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 128 0.0.0.0:https 0.0.0.0:*
LISTEN 0 32 0.0.0.0:ftps 0.0.0.0:*
LISTEN 0 100 0.0.0.0:imaps 0.0.0.0:*
LISTEN 0 100 0.0.0.0:pop3s 0.0.0.0:*
$
まとめ
いかがでしたか?
netstatの使い方とほとんど変わらないと思います。すんなりssコマンドに乗り換えれそうですね。
実際のサーバー運用では、Webサーバーへのアクセスでタイムアウトを検知した場合、どういったアクセスが443番ポートに接続しているか、また接続元IPから、大量に同時接続しているIPはないか等の調査において、活躍してくれるはずです。
ぜひ、ssコマンドを活用してみてください。