Linux 内の特定のアプリのネットワーク トラフィックを Docker 内でログに記録し、インターネットへのアクセスを阻止して応答を偽装する

Linux 内の特定のアプリのネットワーク トラフィックを Docker 内でログに記録し、インターネットへのアクセスを阻止して応答を偽装する

私は、Docker インスタンス内の Ubuntu で実行されているアプリ (QEMU 経由で実行される Google の Android エミュレーター) を持っています。次の操作を実行したいと考えています。

  • QEMU 内で実行されている VM からのすべてのネットワーク トラフィック (パケット) をキャプチャします。
  • インスタンスの残りの部分は接続したまま、そのVMからのトラフィックがインターネットに到達しないようにする
  • そのVMから他のサーバーへのリクエストに対する応答を偽装し、自分がそれらのサーバーであるかのように見せかける
  • これらすべてを自動化されたヘッドレス方式で実行します(ユーザー入力なし、スクリプトのみ)

これを調べてみると、https://github.com/mandiant/flare-fakenet-ng、まさに私が必要としているものです。問題は、私の設定ではうまく動作しないように見えることです(Fakenet のネットワーク ドライバーがロードされるたびに、設定に関係なくすべてのネットワーク トラフィックが無効になり、docker インスタンスの制御が失われます)。ここで質問しました(Ubuntu Linuxのfakenet-ngでダイバータを有効にすると、すべてのネットワークトラフィックが無効になります)に問い合わせたが、回答は得られなかった。

これまでこの問題を解決できなかったため、別の方法を探しています。どのようなツールと方法を使用すればよいでしょうか。それらの長所と短所は何ですか。

答え1

Android エミュレータ自体には、tcpdump の実装と、パケットをファイルにダンプするオプションが含まれています。次のように使用しますemulator -tcpdump {path_to_dump}.pcap {other_options}

インターネットへの接続と応答の偽装を阻止するには、エミュレータを別のユーザーグループで起動し、プロセスのGIDに基づいてiptablesフィルタリングを実行し、特定のGIDからのすべてのトラフィックを偽装応答が実装されるローカルサーバーにリダイレクトすることができます。https://pypi.org/project/spoof/またはhttps://pypi.org/project/fake-server/このユースケースでは機能する可能性があります。

関連情報