仮想マシンの透過プロキシを実行する際の問題

仮想マシンの透過プロキシを実行する際の問題

まず、基本的なトポロジは次のとおりです。

  Internet
     |
  Gateway
     |
Workstation---eth0---virbr0
                       |
                       +-----+-----+
                       |     |     |
                      vm1   vm2   vm3 

ワークステーションで実行され、eth0 のポート (たとえば 8990) をリッスンしているトラフィック アナライザーをテストする必要があります。

私が望むルールは、「virbr0 からポート 80 に向かうすべてのパケットは、eth0 のポート 8990 に向かう必要がある」というものです。ポート 8990 で実行されている私のソフトウェアは、NAT パケットのマングリングを独自にチェックし、検査後にパケットを通過させます。

私はこれについて、次のようなさまざまなバリエーションで頭を悩ませてきました。

iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j DNAT \
    --to 10.0.0.10:8990

そして、とを使用しmangleたテーブル を使用するより一般的な方法を試しましたが、うまくいきませんでした。--set-markip rule add fwmark

私を混乱させているのは、すべてが同じボックス上で実行されるということだと思います。

ご指導いただければ幸いです。

答え1

この質問は意味がないことがわかりました。Tcpdump は、VM のサブネット 192.168.122.0/24 がカーネルのルーティング決定にまったく表示されないことを示しています。libvirtd はカーネル ネットワーク スタックに渡す前に独自のネットワーク処理を行っているのだと思います。

ふりだしに戻る。

関連情報