web-dev-qa-db-ja.com

localhostへのSYNトラフィックを生成しているプロセスを確認するにはどうすればよいですか?

Wiresharkでは、ループバックインターフェイスで、RST、ACKSで応答されているlocalhostからlocalhost上の閉じたポートへのSYN要求を確認できます。

トラフィックの原因を知りたい。どうすれば確認できますか?

接続が開いたままになっていないため、netstatを使用できません。 lsof -i :[port-range]も結果を表示しません。

3
Qgenerator

netstatsslsofなどのツールの問題は、これらがネットワーク状態のスナップショットで機能することです。セットアップ中にリセットされた接続は、高い確率で表示されません。

WiresharkはTCP=パケットをキャプチャできますが、その原因となったプロセスIDを通知することはできません。この情報は通常のイーサネットキャプチャでは提供されません。別のメカニズムがあります( [〜#〜] nflog [〜#〜] )は、Netfilter(iptables)で見られるようにパケットをログに記録できますが、これには最大で、パケットを生成したプロセスのユーザーIDが含まれます。

この問題に取り組むための1つのアプローチは、ネットワークトラフィックを停止させるか完全に落とすことです。

  1. Wiresharkを使用して、たとえば、ポート範囲が5037-5585内にあることを確認できます。
  2. 新しく開始されたTCPトラフィックをそのポート範囲のループバックインターフェイスにドロップする新しいファイアウォールルールを追加します。

    Sudo iptables -I INPUT -p tcp -i lo --dport 5037:5585 --syn -j DROP
    
  3. これで、netstat、ssなどを使用して、問題のプログラムを見つけることができます。例えば:

    Sudo ss -tapn | grep '5[0-5]'
    
  4. 完了したら、ファイアウォールルールを再度削除して、新しい接続が発生するようにします。

    Sudo iptables -D INPUT -p tcp -i lo --dport 5037:5585 --syn -j DROP
    

私はこのアプローチを使用して、おそらくAndroidシミュレーターを見つけるために、ADBデーモンが常にいくつかのローカルポートに接続しようとしていたことを識別しました。

2
Lekensteyn

Windowsを使用している場合は、procmonおよびTCPviewツールを使用して、どのプロセスがどの宛先に接続しているかを監視できます。

https://technet.Microsoft.com/en-us/sysinternals/processmonitor.aspxhttps://technet.Microsoft.com/en-us/sysinternals/tcpview

Linuxでは、同じ機能を次のように使用して実現できます。

psnetstat、およびiptablesでファイアウォールを閉じてドロップされたパケットをログに記録し、multitailで接続を監視する

0
gmlox