ソックスタット は、FreeBSDでネットワークおよびシステムが開いているソケットを表示するために使用される多用途のコマンドラインユーティリティです。主に、sockstatコマンドはデフォルトでFreeBSDにインストールされ、FreeBSDシステムで特定のネットワークポートを開いたプロセスの名前を表示するために一般的に使用されます。
ただし、 sockstat また、プロトコルバージョン(両方のIPバージョン)、接続の状態、およびデーモンまたはプログラムがバインドおよびリッスンするポートに基づいて、開いているソケットを一覧表示することもできます。
また読む :ネットワーク接続をチェックするための20の便利な「netstat」コマンドの例
また、通常はUnixドメインソケットまたはIPCと呼ばれるプロセス間通信ソケットを表示することもできます。 Sockstatコマンドをgrepフィルターと組み合わせたり、awkユーティリティを介してパイプしたりすると、ローカルネットワークスタックの強力なツールであることがわかります。
ソケットを所有するユーザー、ネットワークソケットのファイル記述子、またはソケットを開いたプロセスのPIDに基づいて、開いた接続の結果を縮小できます。
このガイドでは、FreeBSDのsockstatコマンドラインネットワークユーティリティの一般的な使用例をいくつか紹介しますが、非常に強力です。
要件
- FreeBSD11.1インストールガイド
1。 FreeBSDで開いているすべてのポートを一覧表示する
以下のスクリーンショットに示すように、sockstatコマンドをオプションやスイッチなしで実行すると、FreeBSDシステムで開いているすべてのソケットが表示されます。
#sockstat

sockstat出力に表示される値は次のように記述されます:
- ユーザー :ソケットの所有者(ユーザーアカウント)。
- コマンド :ソケットを開いたコマンド。
- PID :ソケットを所有するコマンドのプロセスID。
- FD :ソケットのファイル記述子番号。
- プロト :UNIXソケットのUNIXドメインソケット(データグラム、ストリーム、またはseqpac)の場合は、開いているソケットまたはソケットタイプに関連付けられたトランスポートプロトコル(通常はTCP / UDP)。
- ローカルアドレス :IPベースのソケットのローカルIPアドレスを表します。 Unixソケットの場合、ソケットに接続されているエンドポイントファイル名を表します。
“??”
表記は、ソケットエンドポイントを認識または確立できなかったことを意味します。 - 外国の住所 :ソケットが接続されているリモートIPアドレス。
2。 FreeBSDでリッスンしているポートまたは開いているポートを一覧表示する
-l
で実行 フラグ、sockstatコマンドは、ネットワークスタックで開かれたすべてのリスニングソケットと、システムでのある種のローカルデータ処理に関係するすべての開かれたUNIXドメインソケットまたは名前付きパイプを表示します。
#sockstat -l </ pre>![]()
3。 FreeBSDでIPv4で開いているポートを一覧表示する
IPv4で開いているすべてのソケットを表示するには プロトコルのみ、
-4
でコマンドを発行します 以下の例で提案されているように、フラグ。#sockstat -4![]()
4。 FreeBSDでIPv6で開いているポートを一覧表示する
IPv4バージョンと同様に、 IPv6用に開いているネットワークソケットを表示することもできます 以下に示すようにコマンドを発行することによってのみ。
#sockstat -6![]()
5。 FreeBSDでTCPまたはUDPの開いているポートを一覧表示する
TCPなどの指定されたネットワークプロトコルのみに基づいてネットワークソケットを表示するため またはUDP 、
-P
を使用します フラグの後にプロトコルの引数名が続きます。プロトコル名は、 / etc / protocolの内容を調べることで見つけることができます。 ファイル。現在、ICMPプロトコルはsockstatツールではサポートされていません。
TCPソケットのみを表示
#sockstat -P tcp![]()
UDPソケットのみを表示
#sockstat -P udp![]()
両方のプロトコルをチェーンします。
#sockstat –P tcp、udp6。 TCPおよびUDP固有のポート番号を一覧表示する
ローカルまたはリモートのポート番号に基づいて、開いているすべてのTCPまたはUDP IPソケットを表示する場合は、以下のスクリーンショットに示すように、以下のコマンドフラグと構文を使用します。
#sockstat -P tcp -p 443 [TCP HTTPSポートを表示]#sockstat -P udp -p 53 [UDP DNSポートを表示]#sockstat -P tcp -p443,53,80,21[TCPとUDP]![]()
7。 FreeBSDで開いているポートと接続されているポートのリスト
開いて接続されているすべてのソケットを表示するには、
-c
を使用します 国旗。以下のサンプルに示すように、すべての HTTPSを一覧表示できます。 コマンドを発行して、接続されたソケットまたはすべてのTCP接続されたソケット。#sockstat -P tcp -p 443 -c#sockstat -P tcp -c![]()
8。 FreeBSDのネットワークリスニングポートを一覧表示する
リスニング状態で開いているすべてのTCPソケットを一覧表示するには、
-l
を追加します および-s
以下の例に示すように、フラグ。コネクションレス型プロトコルであるため、UDPは接続の状態に関する情報を保持しません。udpプロトコルはデータグラムを使用してデータを送受信し、接続の状態を判別するための組み込みメカニズムがないため、UDPで開いたソケットをその状態を使用して表示することはできません。
#sockstat -46 -l -s![]()
9。 Unixソケットと名前付きパイプのリスト
Unixドメインソケット、および名前付きパイプなどの他の形式のローカルプロセス間通信は、
-u
を使用してsockstatコマンドで表示できます。 下の画像に示すように、フラグを立てます。#sockstat -u![]()
10。 FreeBSDでアプリケーションによって開かれたポートを一覧表示する
Sockstatコマンドの出力は、特定のアプリケーションまたはコマンドによって開かれたポートのリストを表示するために、grepユーティリティを介してフィルタリングできます。
Nginxに関連付けられているすべてのソケットを一覧表示するとします。 Webサーバーの場合、次のコマンドを発行してタスクを実行できます。
#sockstat -46 | grep nginx![]()
Nginx Webサーバーに関連付けられている接続済みソケットのみを表示するには、次のコマンドを発行します。
#sockstat -46 -c | grep nginx11。 HTTPS接続プロトコルのリスト
HTTPSに関連付けられている接続されているすべてのソケットを一覧表示できます 以下のコマンドを実行して、各接続の状態と一緒にプロトコルを実行します。
#sockstat -46 -s -P TCP -p 443 -c![]()
12。 HTTPリモートソケットのリスト
HTTPプロトコルに関連付けられているすべてのリモートソケットを一覧表示するには、次のコマンドの組み合わせのいずれかを実行できます。
#sockstat -46 -c | egrep '80 | 443' | awk'{print $ 7}' | uniq -c | sort -nr#sockstat -46 -c -p 80,443 | grep -v ADDRESS | awk'{print $ 7}' | uniq -c | sort -nr![]()
13。 IPアドレスで最も高いHTTPリクエストを検索する
各リモートIPアドレスによって要求されているHTTP接続の数を確認する場合は、以下のコマンドを発行します。このコマンドは、Webサーバーが何らかのDDOS攻撃を受けているかどうかを判断する場合に非常に役立ちます。疑わしい場合は、リクエスト率が最も高いIPアドレスを調査する必要があります。
#sockstat -46 -c | egrep '80 | 443' | awk'{print $ 7}' |カット-d:-f1 | uniq -c | sort –nr14。 DNSオープンソケットのリスト
TCPトランスポートプロトコルを介して内部クライアントにサービスを提供するように構内でキャッシングおよび転送DNSサーバーを構成し、リゾルバーによって開かれたすべてのソケットのリストを
各ソケット接続の状態とともに表示する場合は、次を実行します。次のコマンド。#sockstat -46 -P tcp –p 53 -s![]()
15。ローカルドメインでTCPDNSをクエリする
ネットワークにDNSトラフィックがない場合は、次のdigコマンドを実行して、ローカルマシンのコンソールからTCPソケットでDNSクエリを手動でトリガーできます。その後、上記のコマンドを発行して、すべてのリゾルバーソケットを一覧表示します。
#dig + tcp www.domain.com @ 127.0.0.1![]()
それで全部です! netstatおよびlsofコマンドラインユーティリティとともに、sockstatコマンドラインは、ネットワーク情報を取得し、FreeBSDネットワークスタックおよびネットワーク関連のプロセスとサービスの複数の側面をトラブルシューティングするために使用される強力なユーティリティです。
Linuxで対応するFreeBSDsockstatコマンドは、 netstatで表されます。 または新しくss 指図。信じられないかもしれませんが、sockstatユーティリティに基づいて、Android OS用に開発されたSockStat– SimpleNetstatGUIという名前の同様のアプリケーションを見つけることができます。
FreeBSD