netstatコマンドで特定のポートで通信しているプロセスを調べる(Linux/Windows)
ポートを開いているプロセスまで調べる方法についてのメモ。
Linuxの場合
-a
でLISTEN状態も含むすべてのソケットを表示する、-n
でIPアドレス・ポート番号をそのまま表示する、-p
で対応するプロセスを表示する。
$ sudo netstat -anp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1370/sshd ... Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 3 [ ] STREAM CONNECTED 9599 1391/sshd ...
あるいは、lsofコマンドを使ってもよい。-i
で通信のみを表示する、-nP
でIPアドレス・ポート番号をそのまま表示する。
また、-i:80
(tcp/80)、-iudp:123
(udp/123) のように指定することで特定のポートに絞り込むことができる。
$ sudo lsof -i -nP COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1370 root 3u IPv4 9355 0t0 TCP *:22 (LISTEN) ...
Windowsの場合
すべての情報を表示するために、コマンドプロンプトを右クリックメニューから管理者権限で開いた上で実行する。
-a
ですべての接続を表示する、-n
でIPアドレス・ポート番号をそのまま表示する、-o
で対応するプロセスを表示する。
C:\>netstat -ano アクティブな接続 プロトコル ローカル アドレス 外部アドレス 状態 PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 496 ...
-b
をつけると、対応する実行ファイル名を下に表示できる。ただし、この処理には時間がかかる。
C:\>netstat -anob アクティブな接続 プロトコル ローカル アドレス 外部アドレス 状態 PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 396 RpcSs [svchost.exe] ...
たとえば上からは、svchost.extのRpcSsがtcp/135で接続を待ち受けていることがわかる。
サービスの詳細は、sc
コマンドを使うことで調べられる。
C:\>sc qc RpcSs [SC] QueryServiceConfig SUCCESS SERVICE_NAME: RpcSs TYPE : 20 WIN32_SHARE_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\Windows\system32\svchost.exe -k rpcss LOAD_ORDER_GROUP : COM Infrastructure TAG : 0 DISPLAY_NAME : Remote Procedure Call (RPC) DEPENDENCIES : RpcEptMapper : DcomLaunch SERVICE_START_NAME : NT AUTHORITY\NetworkService C:\>sc qdescription RpcSs [SC] QueryServiceConfig2 SUCCESS SERVICE_NAME: RpcSs 説明: RPCSS サービスは、COM および DCOM サーバーのサービス コントロール マネー ジャーです。COM および DCOM サーバーに対して、オブジェクト アクティブ化要求、オ ブジェクト エクスポーターの解決、および分散ガベージ コレクションを実行します。こ のサービスが停止しているか無効になっている場合、COM または DCOM を使用するプログ ラムは正常に機能しません。RPCSS サービスを実行しておくことを推奨します。
あるいは、Ctrl+Shift+ESCでタスクマネージャーを開き、「サービス」タブを見ると、このサービスが「Remote Procedure Call (RPC)」であることがわかる。 さらに、「コントロールパネル」→「管理ツール」→「サービス」から、このサービスの詳細を調べることができる。