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