ebtables を使用してブリッジからパケットをドロップし、Tinc VPN 経由でルーティングする

ebtables を使用してブリッジからパケットをドロップし、Tinc VPN 経由でルーティングする

Ubuntu にブリッジを設定して、LAN を同じサブネットにあるゲートウェイにリンクしています。トラフィックを制御するにはこれが必要ですが、現在はサブネットを変更できないため、代わりにルーティングすることはできません。

ゲートウェイは、192.168.0.0/16 内のさまざまな他の /24 サブネットに MPLS を提供する ISP によって制御されます。

現在の設定は次のとおりです。

192.168.10.1 (gw) <-> eth0 <-> br0 (192.168.10.3) <-> eth1 <-> LAN (192.168.10.0/24)

br0       Link encap:Ethernet  HWaddr ..
          inet addr:192.168.10.3  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ...

eth0      Link encap:Ethernet  HWaddr ..
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth1      Link encap:Ethernet  HWaddr ..
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

これは正常に動作しており、問題は発生していません。

また、ブリッジの一部ではない同じサーバー (192.168.10.3) 上に、データセンター インフラストラクチャへの Tinc VPN もあります。例:

tincvpn   Link encap:Ethernet  HWaddr ..
          inet addr:192.168.10.3  Bcast:192.168.255.255  Mask:255.255.0.0
          ...

LAN からブリッジを経由して特定の宛先 (例: 192.168.5.0/24) に向かうパケットのルーティングをオーバーライドして、tinc 経由で送信されるようにしたいと考えています。つまり、LAN 上の 192.168.10.x から 192.168.5.x へのパケットは、ゲートウェイではなく tinc 経由で送信される必要があります。

何も設定せずに LAN 上のすべてのマシンでこれが機能するようにしたいのですが、現時点では、LAN 上の各 PC/サーバーに次の静的ルートを追加するという回避策を見つけました。

route add -net 192.168.5.0/24 via 192.168.10.3 dev eth0

静的ルートを機能させるには、192.168.10.3 上のすべてのインターフェースに対して proxy_arp を有効にする必要もありました。

次の構成を試しましたが、機能しませんでした。

ip rule add fwmark 20 lookup 20
ip route add 192.168.0.0/16 dev tincvpn table 20
ebtables -t broute -I BROUTING -i eth1 -p ipv4 --ip-dst 192.168.5.0/24 -j REDIRECT --redirect-target DROP
iptables -t mangle -I PREROUTING -i eth1 -d 192.168.5.0/24 -j MARK --set-mark 20

この設定では、パケットはマングルルールに到達し、マークされましたが、tincvpnインターフェースにルーティングされませんでした。

私たちの理解では、ebtables を使用してブリッジからパケットをドロップし、ポリシー ベース ルーティングを使用してパケットが tinc を通過するようにする必要があると理解していました。この理解は正しいでしょうか?

なぜこれが機能しなかったのか、何かアイデアをお持ちの方がいらっしゃいましたら、教えていただけると幸いです。

どうもありがとう、

トム

関連情報