Bridging und iptables SNAT-Konflikt

Bridging und iptables SNAT-Konflikt

Ich arbeite hier an einem Setup und es funktioniert mit einer kleinen Ausnahme.

Geräte auf einer Seite meiner Brücke erhalten per SNAT keinen Zugriff auf das Internet.


Das Diagramm / die Übersicht:

                Primary_Network (Site_A)
                        |
                        |
Internet ------- Linux_Bridge_GW (GW)
                        |
                        |
                 Secondary/CoLo Site (Site_B)

Hier ist das Setup:

  1. Site_A verfügt über alle Produktionsserver und Arbeitsstationen.
  2. Site_B verfügt über eine Reihe von Servern, auf die wir ein Failover durchführen und von denen aus wir auch unsere internetbasierten Dienste bereitstellen möchten.
  3. GW verfügt über zwei Schnittstellen, die gebündelt sind und den entsprechenden VLAN-Verkehr übertragen (ermöglicht Layer-2-Ausbreitung des Verkehrs zwischen Standorten) // das funktioniert alles einwandfrei.
  4. Das auftretende Problem besteht darin, dass Hosts von Site_B ihren Standard-GW bei Site_A (dasselbe Subnetz) haben. Der GW hat keine IPs auf den VLANs, die übergeben werden.
  5. Alle Hosts an Site_A können problemlos auf das Internet zugreifen.
  6. GW hat eine Adresse in einem Subnetz, das NUR für Internetverkehr bestimmt ist. (Dies wurde getan, damit Websense keinen unnötigen Verkehr analysieren muss. Wir verwenden dieses VLAN als Quelle des Monitorports auf dem Switch, auf dem sich Websense befindet).

Was meiner Meinung nach passiert:

  1. Paket/Frame kommt auf Physdev bei Site_B an und ist für das Internet bestimmt.
  2. Der Kernel erkennt das Paket und leitet es auf der anderen Seite der Brücke an das Standard-GW dieses Hosts weiter.
  3. Site_A (das das Standard-GW des Kernnetzwerks enthält) erkennt, dass das Paket für einen Host bestimmt ist, den es nicht kennt, und sendet es daher an sein Standard-GW (die Linux-Brücke, da es ans Internet gebunden ist).
  4. Der Kernel sagt: „Hey, ich habe dich schon einmal gesehen“, führt daher kein SNAT-Verfahren für das Paket aus, sondern sendet es ins Internet, wo es in einem schwarzen Loch eingeschlossen wird.

Warum ich glaube, dass es passiert:

  1. Ein TCPdump auf der dem Internet zugewandten Netzwerkkarte zeigt, dass das Paket die Schnittstelle mit der privaten Adresse als Quelle verlässt.

Was ich möchte:

  1. Habe das Paket per SNAT entsorgt.
  2. So etwas wie das Folgende wäre großartig
    • Paket kommt von Site_B
    • Der Kernel erkennt, dass das Paket NICHT für ihn selbst oder eine private Adresse bestimmt ist
    • Der Kernel sagt: „OK, da Sie für das Internet bestimmt sind, sende ich Ihnen diese Schnittstelle, anstatt Sie an Ihr normales Standard-GW weiterzuleiten, das WEIT da drüben ist.“
    • Das Paket kommt aus dem Internet und wird an die entsprechende Bridge-Physdev gesendet, je nachdem, an welchem ​​Standort sich der Host befindet, für den es bestimmt ist.

Antwort1

Wenn die Pakete überbrückt werden, wird iptables sie natürlich nie sehen.

Lösung? Verwenden Sie ebtables, um internetgebundene Pakete an die Maschine umzuleiten, damit sie die SNAT-Behandlung erhalten (ich würde -j REDIRECT für MAC Mangling verwenden).

verwandte Informationen