コマンドリファレンス - ネットワークの状態を表示 netstat, sockstat


 クラウディア


1. 概要
2. netstat 状態表示
3. netstat 一覧表示
4. sockstat
5. Linux
6. 参考サイト

1. 概要

 「netstat」は、ネットワークの状態を表示するコマンドです。  「sockstat」は、開いているソケットを列挙するコマンドです。  「Linux」の場合、「net-tools」というパッケージをインストールしていないと、「netstat」はインストールされていません。  「Linux」では、「sockstat」はありません。

2. netstat 状態表示

 ネットワークの状態(オープン中のサーバポートや接続中のアドレス・ポート番号)を表示します。  このコマンドは非常に使いこなすのが難しくて、はっきり言えばわたしも使いこなしていないのです。  単に。

netstat
 と入力すると、以下のように表示されます。

Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  ns.local.ssh           pc01.local.1146        ESTABLISHED
tcp4       0      0  localhost.953          *.*                    LISTEN
tcp6       0      0  localhost.953          *.*                    LISTEN
tcp4       0      0  localhost.domain       *.*                    LISTEN

・・・	略	・・・

udp4       0      0  ns.local.ntp           *.*
Active UNIX domain sockets
Address  Type   Recv-Q Send-Q    Inode     Conn     Refs  Nextref Addr
c514bdc0 stream      0      0        0 c514be00        0        0

・・・	略	・・・

c514afc0 dgram       0      0 c5148680        0 c514be80        0 /var/run/log
 詳しい説明は省略しますが、上記で簡単に説明すると。  「pc01.local」というクライアントが、「ssh」でログインして作業中であるということがわかります。  ポート番号「953」を使うサーバプログラムが、「IPv4」と「IPv6」で接続待ち状態であることがわかります。  「DNS」サーバや「NTP」サーバが動作中であるということがわかります。

3. netstat 一覧表示


netstat [-AaLnSW] [-f protocol_family | -p protocol] [-M core] [-N system]
 「IPv4」の状態を見るには、「-f」オプションを使用します。  「-f」はアドレスファミリーを指定します。  「-p」でプロトコルと組み合わせることもできます。
ファミリ 意味 設定可能なプロトコル
inet IPv4 bdg, divert, icmp, igmp, ip, ipsec, pim, tcp, udp
inet6IPv6 bdg, icmp6, ip6, ipsec6, rip6, tcp, udp

 例)


netstat -f inet

Active Internet connections
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)
tcp4       0      0 vm.ssh                 172.20.10.2.52089      ESTABLISHED
udp4       0      0 vm.domain              *.*
udp4       0      0 localhost.domain       *.*
udp4       0      0 localhost.ntp          *.*
udp4       0      0 vm.ntp                 *.*

netstat -f inet -p tcp

Active Internet connections
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)
tcp4       0      0 vm.ssh                 172.20.10.2.52089      ESTABLISHED

4. sockstat

 「sockstat」は、開いているソケットを列挙するコマンドです。  基本形は。

 sockstat [-46clu] [-p ports]
 主なオプションは、下記の通り。
オプション 意  味 備考
-4 IPv4 を表示
-6 IPv6 を表示
-c connect しているソケット数を表示
-l listen しているソケット数を表示

 メールサーバの「imap」を「dovecot」が使用している場合。


 sockstat -4 -l -p 143
 上記のコマンドの結果は、例えば、下記のように表示されます。

USER     COMMAND    PID   FD  PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
root     dovecot    68174 39  tcp4   *:143                 *:*
 列挙される情報は、下記の意味を持ちます。
項  目 意  味 備考
USER ソケットを所有するユーザ
COMMAND ソケットを保持するコマンド
PID ソケットを保持するコマンドの、プロセス ID
FD ソケットのファイルディスクリプタ
PROTO 関連付けられている、転送プロトコル
LOCAL ADDRESS ローカルアドレス
FOREIGN ADDRESS リモートアドレス

5. Linux

 「Linux」の場合、「sockstat」に相当するものとして、「ss」「lsof」があります。  「lsof」は、「netstat」と同様、「net-tools」というパッケージをインストールする必要があります。  「ss」の基本形は、下記の通り。

ss [options] [ FILTER ]
 主なオプションは、下記の通り。
オプション 意味 備考
-l listen 状態のソケットのみ
-t tcp
-u udp
-n 名前解決しない(数値表示)
-p プロセス情報(PID/名前)

 「Ubuntu 25.04」で試してみました。


$ ss -ltp
State        Recv-Q       Send-Q             Local Address:Port               Peer Address:Port      Process
LISTEN       0            4096                  127.0.0.54:domain                  0.0.0.0:*
LISTEN       0            4096                   127.0.0.1:ipp                     0.0.0.0:*
LISTEN       0            4096               127.0.0.53%lo:domain                  0.0.0.0:*
LISTEN       0            4096                     0.0.0.0:ssh                     0.0.0.0:*
LISTEN       0            4096                        [::]:ssh                        [::]:*
LISTEN       0            4096                       [::1]:ipp                        [::]:*
 「lsof」の基本形は下記の通り(長ぇよ)。

lsof  [  -?abChHlnNOPQRtUvVX  ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-E ] [ +|-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ -K k ] [ +|-L [l] ] [ +|-m m ] [ +|-M ] [ -o [o] ]  [ -p  s  ] [ +|-r [t[m]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [ -u s ] [ +|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]
 ユーザ配下のプロセスについて表示するので、管理者権限で実行しないと、システム全体は見ることができません。  実際には、プロセスが、オープンしているファイルになりますので、下記のオプションを組み合わせて使用します。
オプション 意  味 備  考
-P ポート番号を名前に変換しない
-n アドレスを名前に変換しない こちらは使わなくてもよい

 「Ubuntu 25.04」で試してみました。


$ sudo lsof -i -P
COMMAND    PID            USER  FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd      1            root 313u  IPv4   9513      0t0  TCP *:22 (LISTEN)
systemd      1            root 317u  IPv6   9515      0t0  TCP *:22 (LISTEN)
systemd-r  306 systemd-resolve  14u  IPv4   5001      0t0  UDP _localdnsstub:53
systemd-r  306 systemd-resolve  15u  IPv4   5002      0t0  TCP _localdnsstub:53 (LISTEN)
systemd-r  306 systemd-resolve  16u  IPv4   5003      0t0  UDP _localdnsproxy:53
systemd-r  306 systemd-resolve  17u  IPv4   5004      0t0  TCP _localdnsproxy:53 (LISTEN)
avahi-dae  754           avahi  12u  IPv4  10073      0t0  UDP *:5353
avahi-dae  754           avahi  13u  IPv6  10074      0t0  UDP *:5353
avahi-dae  754           avahi  14u  IPv4  10075      0t0  UDP *:51372
avahi-dae  754           avahi  15u  IPv6  10076      0t0  UDP *:51785
NetworkMa  941            root  26u  IPv4  12453      0t0  UDP ubuntu2504.sing.ne.jp:68->_gateway:67
cupsd     1412            root   6u  IPv6  13824      0t0  TCP ip6-localhost:631 (LISTEN)
cupsd     1412            root   7u  IPv4  13825      0t0  TCP localhost:631 (LISTEN)
sshd      2510            root   3u  IPv4   9513      0t0  TCP *:22 (LISTEN)
sshd      2510            root   4u  IPv6   9515      0t0  TCP *:22 (LISTEN)
sshd-sess 2513            root   4u  IPv4  19633      0t0  TCP ubuntu2504.sing.ne.jp:22->192.168.10.102:52038 (ESTABLISHED)
sshd-sess 2574        hogehoge   4u  IPv4  19633      0t0  TCP ubuntu2504.sing.ne.jp:22->192.168.10.102:52038 (ESTABLISHED)

6. 参考サイト

 本ページは、「ChatGPT」くんを参考にさせていただきました。

AbemaTV 無料体験
JETBOY
ネットオークションの相場、統計、価格比較といえばオークファン
【usus ウズウズ】