iptables, nftables und pfSense

  • Moin zusammen,


    mal ein eine Frage für die Netzwerkler hier.


    Nehmen wir mal an, ich hätte nen Server der als Router fungieren soll mit OpenVPN und möchte "Source Based Routing" bauen. Beispiel: Daten, die von 10.1.0.1 kommen sollen über 10.2.0.1 als Gateway verschickt werden. Kommen die Daten von 10.1.0.2, sollen sie über 10.2.0.2 verschickt werden - usw.


    Mit pfSense ist das furchtbar einfach (läuft bereits): Man legt das Gateway an und erzeugt dann ne Firewall-Regel, in der man das Gateway - auf Basis des Absenders - neu setzt.


    Jetzt überlege ich, ob es eine Möglichkeit gibt, das mit einem z. B. Ubuntu hinzubekommen. Eine Lösung (nicht ausprobiert, aber ich glaube sie könnte gehen) ist: neue Routing-Tabelle anlegen, mit ip rule alle Pakete mit einer bestimmten Absender-IP auf diese Routing-Tabelle packen und der eben als default-Gateway das Gateway verpacken. Soweit, so gut.

    Gibts da noch was von Raptiopharm, sowas, was sich mehr nach "ich lege nur eine einzelne Regel an" anfühlt? Bei iptables scheint es das nicht zu geben, jetzt habe ich gelesen da gibts noch nftables, aber noch nie mit gearbeitet. Es wäre meines Erachtens gut, wenn dieses "ich lege x Routing-Tabellen an" nicht Bestandteil der Lösung sei müsste.


    Mögen die Spiele beginnen.


    Viele Grüße
    Matthias

  • Moin,


    danke für den Link.


    Soweit ich das richtig verstehe beschreibt das ja genau das, was ich eigentlich zu vermeiden versuche: Man muss (laut dieser Seite) erst ne neue Routing-Tabelle anlegen, der das Gateway hinzufügen und dann die entsprechende ip rule erzeugen. Das wären drei Schritte und ich brauch ne Menge Routing-Tabellen. Ich weiß nicht, ob pfSense das genauso macht und einfach besonders gut versteckt oder ob die ne andere Methode haben. Falls dem so ist, wüsste ich gerne, welche Methode das ist.


    Viele Grüße
    Matthias

  • Ich würde die Sache einfach über OpenVPN angehen und dort mittels push route das alternative Gateway per Client definieren.

    Ansonsten kannst Du mittels IP-Tables auch Destination NAT von einer bestimmten Source-Adresse definieren, um Traffic, der von 10.1.0.1 kommt, nach 10.2.0.1 zu natten, vorausgesetzt, es handelt sich bei 10.2.0.1 um eine lokale IP des Routers, um den es hier geht.

    Kurzanleitung für DNAT https://www.debuntu.org/how-to…-a-new-ip-using-iptables/