Wiresharkでは、ループバックインターフェイスで、RST、ACKSで応答されているlocalhostからlocalhost上の閉じたポートへのSYN要求を確認できます。
トラフィックの原因を知りたい。どうすれば確認できますか?
接続が開いたままになっていないため、netstat
を使用できません。 lsof -i :[port-range]
も結果を表示しません。
netstat
、ss
、lsof
などのツールの問題は、これらがネットワーク状態のスナップショットで機能することです。セットアップ中にリセットされた接続は、高い確率で表示されません。
WiresharkはTCP=パケットをキャプチャできますが、その原因となったプロセスIDを通知することはできません。この情報は通常のイーサネットキャプチャでは提供されません。別のメカニズムがあります( [〜#〜] nflog [〜#〜] )は、Netfilter(iptables)で見られるようにパケットをログに記録できますが、これには最大で、パケットを生成したプロセスのユーザーIDが含まれます。
この問題に取り組むための1つのアプローチは、ネットワークトラフィックを停止させるか完全に落とすことです。
新しく開始されたTCPトラフィックをそのポート範囲のループバックインターフェイスにドロップする新しいファイアウォールルールを追加します。
Sudo iptables -I INPUT -p tcp -i lo --dport 5037:5585 --syn -j DROP
これで、netstat、ssなどを使用して、問題のプログラムを見つけることができます。例えば:
Sudo ss -tapn | grep '5[0-5]'
完了したら、ファイアウォールルールを再度削除して、新しい接続が発生するようにします。
Sudo iptables -D INPUT -p tcp -i lo --dport 5037:5585 --syn -j DROP
私はこのアプローチを使用して、おそらくAndroidシミュレーターを見つけるために、ADBデーモンが常にいくつかのローカルポートに接続しようとしていたことを識別しました。
Windowsを使用している場合は、procmonおよびTCPviewツールを使用して、どのプロセスがどの宛先に接続しているかを監視できます。
https://technet.Microsoft.com/en-us/sysinternals/processmonitor.aspxhttps://technet.Microsoft.com/en-us/sysinternals/tcpview
Linuxでは、同じ機能を次のように使用して実現できます。
ps
とnetstat
、およびiptables
でファイアウォールを閉じてドロップされたパケットをログに記録し、multitail
で接続を監視する