私の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が複数回再送信されます。
ping
IP 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では使用しますが、ss
MacOSに言及したことはnetstat
確かです。すべてのソケットを一覧表示するには、rootとしてnetstat
実行する必要があります。lsof