まず、基本的なトポロジは次のとおりです。
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-mark
ip rule add fwmark
私を混乱させているのは、すべてが同じボックス上で実行されるということだと思います。
ご指導いただければ幸いです。
答え1
この質問は意味がないことがわかりました。Tcpdump は、VM のサブネット 192.168.122.0/24 がカーネルのルーティング決定にまったく表示されないことを示しています。libvirtd はカーネル ネットワーク スタックに渡す前に独自のネットワーク処理を行っているのだと思います。
ふりだしに戻る。