Port based Gateway Routing

th_cor

Neuer User
Mitglied seit
2 Feb 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Hallo :),

hab auf meine FritzBox 7050 heute Freetz aufgespielt mit OpenVPN und iptables.

Die FritzBox 7050 bezieht ihre IP, Gateway, ... anhand der MAC über einen DHCP.

Möchte gern folgendes realisieren:
Da hier alle Ports über 1024 gesperrt sind, möchte ich gern, dass die Box alle Verbdinungen über 1024 über einen VPN Tunnel leitet.

Die OpenVPN Verbindung zum Server wird mittels TAP Device aufgebaut und funktioniet auch. (Die interne Server IP 192.168.178.1 kann auf der Telnet Konsolte angepingt werden.)

Config:
Code:
FritzBox 7050 
LAN IP: 192.168.0.1
Internetverbindung IP: 141.**.**.32
Gateway: 141.**.**.254

OpenVPN Server
Internetverbindung: *.dyndns.org
LAN IP: 192.168.178.1


Problem ist, dass die Verbindungen jedoch generell nicht über den VPN Tunnel geleitet werden. Hab schon alle möglichen iptables Einstellungen probiert.

Die Clients im Netz 192.168.0.0 können den Gateway 192.168.178.1 durch diesen iptables Eintrag jedoch erreichen:
Code:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0.0/0 -o tap0 -j MASQUERADE

Was muss ich einstellen um erst mal allen Verkehr über die VPN Verbindung zu leiten?
(Das mit den Ports kann man ja danach machen)

Vielen Dank für eure Hilfe.
 
...
Was muss ich einstellen um erst mal allen Verkehr über die VPN Verbindung zu leiten?
(Das mit den Ports kann man ja danach machen)
Versuch es mal mit DNAT:
Code:
iptables -t nat -A PREROUTING -p tcp -d ! 192.168/12 [COLOR="Red"]--dport 1024:[/COLOR] -j DNAT --to-destination 192.168.178.1:<[COLOR="Red"]Port auf dem der Proxy-Server lauscht[/COLOR]>
In/bei den Clients die in Frage kommen (d. h. die den Bereich der Ports >/= 1024 benutzen sollen/müssen/wollen) ist der Proxy-Server einzutragen. Testen kannst Du es mit dem Browser über Port 80, dann die Regel aber erst ohne "--dport 1024:" anwenden/eingeben (d. h. allen tcp-Verkehr über die VPN Verbindung zum Proxy-Server, zu leiten).
 
Leider hilft mir dein Lösungsansatz nicht weiter:
  • Die Clients sind Windows Maschinen.
  • Es gibt keinen Proxy Server.
  • Die FritzBox7050 soll das Routing übernehmen.
 
Soo also das Routing aller Verbindung über den Tunnel klappt, wenn man vorm Starten des Client-VPN folgende Befehle ausführt.

Code:
route del default
route add default gw 192.168.180.1

in iptables muss zusätzlich folgendes eingestellt werden:
Code:
-t nat -I POSTROUTING -s 192.168.0.0/24 -p all -o tap0 -j MASQUERADE

Jetzt hab ich schon rumprobiert mit dem Port Routing... aber ich komm einfach nicht mehr über den normalen Gateway raus :(

Code:
-t nat -I POSTROUTING 1 -s 192.168.0.0/24 -p tcp --sport 80 -o dsl -j MASQUERADE

//edit hier noch die Routing Table
Code:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.180.1   *               255.255.255.255 UH    2      0        0 dsl
192.168.180.2   *               255.255.255.255 UH    2      0        0 dsl
[I]*censored*[/I]  192.168.180.1   255.255.255.255 UGH   0      0        0 dsl
192.168.178.0   *               255.255.255.0   U     0      0        0 tap0
192.168.0.0     *               255.255.255.0   U     0      0        0 lan
169.254.0.0     *               255.255.0.0     U     0      0        0 lan
default         192.168.178.1   0.0.0.0         UG    0      0        0 tap0
 
Zuletzt bearbeitet:
Code:
-t nat -I POSTROUTING 1 -s 192.168.0.0/24 -p tcp --sport 80 -o dsl -j MASQUERADE
Diese Regel bewirkt nicht, dass irgendwelcher Traffic an das Interface dsl geschickt wird, sondern dass Traffic, der (gemäß Routingtabelle) ohnehin über das dsl-Interface rausgeht, ge-MASQUERADE-t wird.

Wenn du Pakete abhängig von was anderem als Ziel- und Quelladresse routen willst, brauchst du mehrere Routingtabellen, und legst mit Routingregeln fest, für welche Pakete welche Tabellen verwendet werden.

Z.B. kannst du Pakete mit Zielport >= 1024 markieren:
Code:
 iptables -t mangle -I PREROUTING --dport 1024:65535 -j MARK --set-mark 3
Dann kannst du eine Routing-Regel anlegen, die Pakete mit der Markierung 3 gemäß einer alternativen Routingtabelle behandelt:
Code:
ip rule add fwmark 3 table 3

Diese Tabelle Nr. 3 ist entsprechend deinen Wünschen zu befüllen: Du trägst dort das andere Default-Gateway ein und übernimmst alle anderen Einträge aus der Default-Routingtabelle:
Code:
ip route add table 3 default via ip.addresse.des.alternativen.gateways
ip route add table 3 192.168.178.0/24 dev tap0
ip route add table 3 192.168.0.0/24 dev lan
ip route add table 3 169.254.0.0/16 dev lan
[...]

Statt 3 geht natürlich auch jede andere Zahl. Insbesondere kannst du auch mehrere alternative Routingtabellen haben, und die Markierungsnummer muss nicht identisch mit der Tabellennummer sein. Wichtig ist, dass das Markieren (für Pakete die die Fritzbox weiterleitet) in der PREROUTING-Chain der mangle-Tabelle passiert. POSTROUTING ist erst dran, wenn die Routingtabelle schon ausgewählt und abgearbeitet wurde. Sollen auch Pakete, die ihren Ursprung auf der Box haben, entsprechend sortiert werden, verwendest du dafür die Chain OUTPUT der mangle-Tabelle.
MASQUERADE-Regeln brauchst du, je nach Art und Konfiguration des VPN, ggf. zusätzlich (natürlich eine fürs DSL, aber evtl. auch eine zweite fürs VPN)

Ich weiß gerade nicht auswendig, ob die Busybox von freetz diese IP-Befehle standardmäßig unterstützt. Ggf. muss du im menuconfig (Advanced -> Busybox Options) noch was aktivieren oder sogar unter "make busybox-menuconfig" was einstellen)
 
...
Ich weiß gerade nicht auswendig, ob die Busybox von freetz diese IP-Befehle standardmäßig unterstützt. Ggf. muss du im menuconfig (Advanced -> Busybox Options) noch was aktivieren ...
Ja, es muss aktiviert werden:
Code:
...
config FREETZ_BUSYBOX_FEATURE_IP_[COLOR="Red"]RULE[/COLOR]
    bool "rule option"
    depends on FREETZ_BUSYBOX_IP
    default n

config FREETZ_BUSYBOX_FEATURE_IP_[COLOR="Red"]ROUTE[/COLOR]
    bool "route option"
    depends on FREETZ_BUSYBOX_IP
    default n
...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.