IPを呼び出すプロセスのPIDを決定します。

IPを呼び出すプロセスのPIDを決定します。

私のWi-Fiカードが私のローカルネットワーク上の任意のIPアドレスに接続しようとしています。原因を特定するために、クライアントのどのプロセスがこの接続を確立しようとしているかを探したいと思います。

これは特にMacOSで際立っていますが、他のLinux / Unixバリアントでもこれを行う方法も疑問に思います。 MacはWi-Fi経由でローカルネットワークに接続されています。 USB経由で削除されたドライブにMacOS High Sierraを再インストールしましたが、Wi-Fiカードはまだ接続を試みます。

Wiresharkを使用したネットワークトラフィックのパケットキャプチャは、ネットワークカードが約1分30秒ごとに呼び出しを行い、SYNパケットを送信してローカルネットワーク(192.168.86.173、ポート7000)のIPに接続しようとしていることを示しています。これにより、クライアントがアクセスしようとしているIPが応答しなくなるため、SYN​​が複数回再送信されます。

Wiresharkは、クライアントから未知のLANホストに試みられた接続をキャプチャします。

pingIP 192.168.86.173がありますが、nmap応答がありません。ネットワークスキャナを使用しましたが、そのIPにデバイスが表示されませんでした。

ポート7000を探すと、TCPではなくUDPを使用するファイルサーバーのみが見つかりました。 (https://www.auditmypc.com/tcp-port-7000.asp)、そして自動車テストにTCPを使用するGryphonということ(http://www.networksorcery.com/enp/protocol/ip/ports07000.htm)。

デスクトップ上のすべてのアプリケーションを閉じてから、lsof -i tcpマニュアルページから 。

-i [i] インターネットアドレスが i で指定したアドレスと一致するファイルのリストを選択します。アドレスが指定されていない場合、このオプションはすべてのインターネットおよびx.25(HP-UX)ネットワークファイルのリストを選択します。

プロセスはリストされておらず、SYNパケットが送信されて再送信中に実行中であってもプロセスは表示されません。クライアントのどのプロセスがこの接続を確立しようとしているかを確認する方法はありますか?

netstatループで実行し、PIDコマンド名を返すことができる試みられた発信接続のみを表示するコマンドはありますか?

レベルが低すぎるかPID、コマンド名がわからないと思いますか?Wireshark

答え1

synパケットが実際の接続試行の一部である場合は、次のように適切な場所にソケットとプロセスを一覧表示できます。

netstat -apn | grep SYN_SENT

これはLinuxで動作します。この-pフラグは、ソケットを所有するプロセスの名前をリストします。基準をマテリアライズ/変更して、目的のgrep行を取得できます。

MacOでは、次のことができます。

lsof -i -P | grep -i "SYN_SENT"

Linuxに戻って別の方法は、サーバーをローカルプロセスにリダイレクトして、そのアドレス/ポートにサーバーを設定することです。

# iptables -t nat -A OUTPUT -p tcp --dport 7000 -j DNAT --to-destination 127.0.0.1:7777

$ nc -l 7777

netstat -p...これで接続が確立されたため、ソケットを閉じる前にコマンドを実行する時間が長くなります。

netstat -apn | grep 7000

また、接続で一部のTCPトラフィックをトリガーすることで、クライアントの詳細を確認できます。

Linuxでは使用しますが、ssMacOSに言及したことはnetstat確かです。すべてのソケットを一覧表示するには、rootとしてnetstat実行する必要があります。lsof

関連情報