
の出力で、不明nmap -p- localhost
なオープン TCP ポートが表示されますが、これは再起動ごとに異なります。どのプロセスがポートを開いてリッスンしているかを判断するにはどうすればよいでしょうか。一般的なツール ( netstat
、、) を多数試しましたが、原因がわかりません。例: PID/プログラム名が表示されません。ss
lsof
sudo netstat -pan -Ainet | grep <PORT>
tcp 0 0 0.0.0.0:<PORT> 0.0.0.0:* LISTEN -
起動シーケンスを分析する必要があるかもしれません。しかし、どのようにすればよいのでしょうか?
誰か助けてくれませんか?
答え1
としてほのめかしたもss
答えを提供できます。構文は次のとおりです。
sudo ss --tcp --listening --processes 'sport = 1234'
1234
nmap スキャンからの今日のポートはどこにありますか。これにより、出力が TCP ポートに制限され、そのポートでリッスンしているプロセス名と PID が表示されます。プロセス名と PID を提供するフラグがsudo
必要な場合にのみ必要です。--process
答え2
Netstat は、root として正しいフラグを使用して実行すると、まさに要求どおりに動作します。
sudo netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1931/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 32296/cupsd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1550/postgres
tcp6 0 0 :::80 :::* LISTEN 3198/docker-proxy
また、ss
はの置き換えでありnetstat
、ほぼ同じフラグを取りますが、出力のフォーマットが異なります。
答え3
カーネルや特定のサービス(NFS、OCFS、sshトンネル)によって開かれたポートの一部は、netstatやssでは表示されません。