どうしてかわかりません。 PIDはワイヤに到達しません(一般的に言えば)、さらにWiresharkでは、ワイヤ上にあるものを見ることができます-潜在的にallワイヤ上で通信しているマシン。とにかく、プロセスIDは異なるマシン間で一意ではありません。
別の方法を探していて、使用している環境がWindowsの場合、Microsoftの Network Monitor 3.3が適切な選択です。プロセス名の列があります。コンテキストメニューを使用して簡単にフィルターに追加し、フィルターを適用します。通常どおり、GUIは非常に直感的です...
たとえば、wiresharkのポート番号を netstat のポート番号に一致させると、そのポートでリッスンしているプロセスのPIDがわかります。
Microsoft Message Analyzer v1.4を使用します
フィールドチューザーからProcessIdに移動します。
Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId
右クリックして列として追加
Windowsには、メーリングリストで説明されているように、これを行う実験的なビルドがあります。ローカルプロセス名によるフィルター
これは、特定のプロセスが接続しようとする場所を監視するためにできる重要なことであり、Linuxでこれを行う便利な方法はないようです。ただし、いくつかの回避策が考えられるため、言及する価値があると感じています。
nonet と呼ばれるプログラムがあり、インターネットにアクセスせずにプログラムを実行できます(システムにほとんどのプログラムランチャーがセットアップされています)。 setguidを使用してグループnonetでプロセスを実行し、 iptables ルールを設定して、このグループからのすべての接続を拒否します。
更新:今では私はさらにシンプルなシステムを使用しており、fermで読み取り可能なiptables構成を簡単に作成でき、プログラムsg
を使用して特定のグループでプログラムを実行できます。 Iptablesでは、トラフィックを再ルーティングすることもできるため、ポート上の別のインターフェイスまたはローカルプロキシにルーティングすることもできます。トラフィックをチェックアウトしています。
グループでプログラムを実行し、実行期間中にiptablesを使用して他のすべてのトラフィックをカットするように調整することはそれほど複雑ではなく、このプロセスからのみトラフィックをキャプチャできます。
書いてみたら、ここにリンクを投稿します。
別の注意事項として、仮想マシンでいつでもプロセスを実行し、正しいインターフェースを探って、それが行う接続を分離することができますが、それは非常に劣ったソリューションです...
まだ起動しなければならないアプリケーションをフォローしたい場合、それは確かに可能です:
docker run -t -i ubuntu /bin/bash
(「ubuntu」をお気に入りのディストリビューションに変更します。これは実際のシステムと同じである必要はありません)any
、wlan0
、eth0
を選択する代わりに、...代わりに新しい仮想インターフェイスdocker0
を選択します。コンテナ内でソフトウェアを実行することに疑問があるかもしれません。そこで、おそらくあなたが尋ねたい質問に対する答えを以下に示します。
場合によっては、プロセスIDでフィルタリングできません。たとえば、私の場合、1つのプロセスからのトラフィックをスニッフィングする必要がありました。しかし、configのターゲットマシンのIPアドレスにフィルタip.dst==someip
と出来上がりを追加しました。いずれの場合も機能しませんが、一部の人にとっては便利です。