iptables regel/frage

dMopp

Banned
Registriert
März 2007
Beiträge
9.688
Hi,

zu erst einmal folgendes Szenario:

Ich habe einen kleinen Linux Server daheim, der als Gateway dient. Mein Plan ist es nun, mehere VPN Verbindungen aufrecht zu halten. (1x nach US, 1x nach DE, 1x NL).

Ich möchte, dass wenn der Client mit der IP 1.2.3.4 (als Platzhalter) IRGENDEIN Paket schickt, dass sich außerhalb des eigendenen Netzwerks befindet, dieses Paket über das VPN1 (sagen wir mal tun0 als Adapter) geht. Alle anderen Clients sollen ihren Internettraffic über VPN3 (tun2) abwickeln.

Wie würde die iptable config dafür aussehen? Ich habe ehrlich gesagt eine akute Blockage was iptables angeht, daher bin ich dankbar wenn mir wer hilft :D



(Hintergrund:

AppleTV soll übers USA VPN laufen, zwecks netflix und co, der Rest im Netz übers Holland VPN, zur Umgehung von den ganzen Sperren und dem bescheidenen Routing. Das DE VPN will ich dann ggf später für alle "Gäste" bereit stellen, so das quasy kein Paket mehr mein Heimnetzwerk unverschlüsselt verlässt).


Zusatzinfo: Das Home-Gateway ist ebenfalls VPN client (sagen wir tun4), das ist aber nen anderes Thema :D
 
Push
 
Zuletzt bearbeitet:
Ist das, was du suchst, nicht eher die Routingtabelle?
Dort kannst du eine Regel eintragen, dass jeglicher Traffic, der an Netflix gehen soll, über dein VPN-Interface laufen soll.
Dazu brauchst du die IP-Adresse(n) von dem oder den Netflixserver(n) und trägst als Netzmaske 255.255.255.255 ein.
Gateway ist direct.
 
Vermutlich eine Mischung aus beidem.

Was ich jedoch möchte ist, eine QuellIP an eine Interface zu binden, sofern die ZielIP außerhalb des Netzes der QuellIP liegt.

Code:
Quelle:                    Ziel:                       Wunsch Interface:
192.168.178.2         192.168.178.200     eth0
192.168.178.2         217.1.2.3                tun0
192.168.178.3         192.168.178.201     eth0
192.168.178.3         217.1.2.3                tun1
 
Zuletzt bearbeitet:
Was wäre denn das Problem, wenn du die Routingtabelle benutzt?
Von welchem Gerät der Traffic aus deinem Netzwerk an zB Netflix geht ist doch egal, so wie ich dein Setup verstanden habe.
IPTables ist eigentlich nur für die Paketprüfung verantwortlich und kann auch nicht wirklich mehr:

ACCEPT Das Paket wird akzeptiert und angenommen.
DROP Das Paket wird nicht angenommen, der Sender erhält keine Nachricht.
REJECT Das Paket wird nicht angenommen, der Sender wird benachrichtigt.
LOG Die Paketdaten werden im System-Log festgehalten, anschließend wird die nächste Regel der Chain geprüft und ggf. angewendet.
 
Wenn ne Routingtabelle die Lösung wäre um ne Single IP um zu biegen, sofern das Ziel NICHT das Quellnetz ist, gerne :D Aber momentan stehe ich da noch auf dem Schlauch

Soweit ich weis, kann ich aber nur gesamte Netzte Routen durch ein Interface, ich will jedoch nur einen Client durch ein Interface jagen

Edit: http://firehol.org

scheint also doch über iptables zu gehen :D


in dieser vereinfachten Form wäre es wohl sowas wie: (anhand des Beispiel oben)

Code:
interface eth0 lan
    policy accept

interface tun0 internet
    server ssh  accept
    client all  accept src 192.168.178.2

interface tun1 internet
    server ssh  accept
    client all  accept src 192.168.178.3

router usVPN inface eth0 outface tun0
    masquerade
    route all  accept
router deVPN inface eth0 outface tun1
    masquerade
    route all  accept


ich hätte halt nur ganz gerne die 2-3 commands die ich brauceh anstatt wieder ne ganze software ein zu setzten die nix anderes macht :(
 
Zuletzt bearbeitet:
Also soll, wenn ein anderes Gerät versucht sich zu Netflix zu verbinden, die Verbindung über ein anderes VPN gehen und damit in die Geo-Sperre rennen?
Hmm... Du könntest eine weitere Netzwerkkarte einbauen und daran den AppleTV stecken.
Dann kannst du sagen "alles von diesem Interface bitte an das US-VPN-Interface".
Kann mir aber auch nicht vorstellen, dass es nicht ohne zusätzliche Netzwerkkarte geht.
Ansonsten weiß ich da leider auch nicht weiter:(

EDIT: Ah, cool. Dann viel Spaß beim Netflix gucken :D
 
Zuletzt bearbeitet:
Geht mir nicht nur um netflix :D


Generell möchte ich IPs an VPNs binden .. naja ich versuche mich mal an diesem tool und schaue was raus purzelt
 
Zuletzt bearbeitet:
Wenn ich das richtig verstanden habe möchtest du folgendes erreichen: Der Router/Server (IP *.1) hält eine VPN Verbindung. Wenn Client 1 (zB Streaming PC; IP *.2) ins Internet will, dann soll das über VPN geroutet werden. Client 2 (IP *.3) geht normal über den Provider. Demnach muss der Router entscheiden "QuellIP *.2 --> Routing --> VPN Gateway" bzw. "QuellIP *.3 --> Routing --> Provider GW"

Die Routing Tabelle wird dir da wenig helfen. Das klassische Routing ist zielbasiert, das heißt der Router entscheidet ausschließlich anhand der Zieladresse wohin er ein Paket weiterleitet.

iptables wiederum kann die Pakete während des Routings modifizieren, anderer Port, andere QuellIP (NAT), aber auch da wirst du keinen Erfolg haben.

Das was du suchst ist quellbasiertes Routing oder auch "Policy Based Routing". Damit kannst du für jede Quelle eine eigene Routing Tabelle erstellen. Gib mal folgendes ein: ip rule list Es kommt ungefähr sowas:
Code:
yamashin@sonne:~$ ip rule list
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default
Mit ip rule add from 192.168.1.2 table 10 kannst du nun eine Regel definieren, nach der beim Routing von der Quelladresse 192.168.1.2 die Routing Tabelle 10 verwendet wird. ip route list table 10 zeigt die dortigen Routen an und mit ip route add x.x.x.x table 10 via y.y.y.y.y dev tun0 erstellst du eine Route.

Ich denke mit dem Rest solltest du klarkommen ;-)

[edit]
Mit obiger Methode kann man auch nach anderen Kriterien routen. Es kann bis auf einige Ausnahmen jede Eigenschaft eines Datenpakets als Entscheidungskriterium verwendet werden. Will heißen, man kann damit zB auch QoS einrichten. Problematisch an PBR ist, dass die Fehlersuche im Netzwerk unter Umständen arg kompliziert wird. Es kann je nach Konfiguration nämlich passieren, dass ein traceroute durch die Vielzahl von Routingtabellen einen anderen Weg nimmt als die echten Daten.

[edit2]
Ich muss das Rad ja nicht neu erfinden, hab dir mal was rausgegoogelt: PBR
 
Zuletzt bearbeitet:
WOW Danke, genau das was ich suche :D
 
Zurück
Oben