
基本的に、非常にユニークなプロジェクトで、ブリッジングとNATを自分の意志に合わせて調整したいと思います。
以下の作業を簡素化しました(VM=テスト用Kali仮想マシン)。
ZoneXはネットワークネームスペース、vexxxはIPリンクを使用して作成された仮想リンクです。
前提は、トラフィック(トラフィックの状況に応じて)をZoneXまたはZoneYに切り替え、トラフィックを変更してZoneZに転送し、最終的に物理ネットワークゲートウェイに転送できるLAN用のゲートウェイを作成することです。
さまざまな方法を試しましたが、最大の問題はレイヤ2嵐を作成することです。これは、仮想マシンで正しく機能しないか、NATネットワークネームスペース(ZoneZ)が最初のレイヤを介して再配信することです。トラフィック クライアント VM の NAT テーブル インターフェイス (時には正しくない)
主な目的は交通を複数の地域に分散させることですが、戻ってくる交通は同じルートを再利用することが重要です。次のステップは、複数のゾーンを一緒に接続して、さまざまな方法でトラフィックを変更する機能です。
***編集する
接続の例には、仮想マシン上の8.8.8.8へのDNSルックアップと8.8.8.8へのTCP要求があります。
まず、DNS要求はbrAを介してeth0、ve001、ZoneAに転送され、パケットが表示されます(iptablesを使用)。その後、ve003> ve004などでve006に転送され、NATが適用されてインターネットに送信されます。応答がZoneZ(NATゾーン)に戻ると、NATテーブルのルックアップが完了し、VMシステムのARPエントリがそのインターフェイスを指すため、パケットはve006にルーティングされます。最大の問題は、ボトムパスを通過する他のトラフィックがある場合に発生します。これは以前と同じで、ZoneAまでですが、今回はZoneYを介してve007にルーティングされ、最後にZoneZにルーティングされ、NATゲートウェイを介してインターネットにルーティングされます。ただし、この接続に対する応答を受信すると、パケットはZoneZに移動してNATテーブルでルックアップを完了し、変換され、ARPテーブルルックアップが完了し、この時点でve006を介して再配信されます。これは間違っています。元に戻りたい(この場合はve010を介して)。
私の質問は、NATテーブルが提供するインターフェイスを記録し、そのインターフェイスを介して再配信できるかどうかです。
答え1
回避策は、新しい接続にタグを付け、そのタグをポリシールーティングに使用することです。
iptables -t mangle -A FORWARD -i ve006 -m connmark -j CONNMARK --set-mark 6
iptables -t mangle -A FORWARD -i ve010 -m connmark -j CONNMARK --set-mark 10
ip rule
テストがありますfwmark
。したがって、のve006
ルーティングテーブルを作成しますve010
。
ip route add default table ve006 via a.b.c.51 dev ve006
# .51 again, typo?
ip route add default table ve010 via a.b.c.51 dev ve010
ip rule add pref 100 iif ve998 fwmark 6 table ve006
ip rule add pref 101 iif ve998 fwmark 10 table ve010