Problem Iptables: Routing durch virtuellen Tun Device

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
redemp
Beiträge: 9
Registriert: 19.09.2010 15:05:14

Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von redemp » 05.01.2013 16:11:50

Ich Grüße euch!

Ziel: Der RaspberryPi soll als OpenVPN Gateway dienen d.h. als Bsp: Laptop ist per Cat5 Leitung mit dem RaspberryPI verbunden, über einen WLAN Stick baut er eine Verbindung zum AP(Inet) auf. Des Weiteren soll eine OpenVPN Verbindung durch den RaspberryPI hergestellt werden! Der komplette Traffic soll nun über den Tun0 Device geleitet werden, d.h. der Laptop muss Zugriff auf alle Netze hinter dem Tun0 device haben.

Ist Zustand: Raspberry baut die WIFI- sowie die OpenVPN Verbindungen auf. Seitens des RaspberryPI lassen sich alle Netze hinter dem Tun0 erreichen, allerdings gelingt es mir nicht den Traffic vom Laptop in den Tun0 device umzuleiten! Mein erster Ansatz war per Masquerading wie folgt. Anscheinend kommt OpenVpn nicht klar mit dem Masquerading!

Code: Alles auswählen

/sbin/iptables -A FORWARD -o tun0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Habt ihr Ideen wie man das Problem lösen kann ?

Anbei noch meine IP-Adressen sowie Routing Tabellen:


Laptop eth1: 192.168.0.243
RaspberryPi eth0: 192.168.0.1
RaspberryPi wlan0: 192.168.43.230
RaspberryPi tun0: 192.168.10.6





Laptop:

Code: Alles auswählen

Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth1
link-local      *               255.255.0.0     U     1000   0        0 eth1
192.168.0.0     *               255.255.255.0   U     1      0        0 eth1
RaspberryPi:

Code: Alles auswählen

Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
default         192.168.43.1    0.0.0.0         UG    0      0        0 wlan0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
192.168.1.0     192.168.10.5    255.255.255.0   UG    0      0        0 tun0
192.168.10.1    192.168.10.5    255.255.255.255 UGH   0      0        0 tun0
192.168.10.5    *               255.255.255.255 UH    0      0        0 tun0
192.168.43.0    *               255.255.255.0   U     0      0        0 wlan0
192.168.178.0   192.168.10.5    255.255.255.0   UG    0      0        0 tun0

Benutzeravatar
orcape
Beiträge: 1525
Registriert: 07.11.2008 18:37:24
Wohnort: 50°36'23.99"N / 12°10'20.66"E

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von orcape » 05.01.2013 17:10:05

Hi redemp,
der OpenVPN-Server läuft auf dem RaspberryPi .
Normalerweise sind die config-Dateien von OpenVPN zuständig, wenn Du sämtlichen Traffic durch den Tunnel schicken willst.
Im Server ein push- Befehl vorhanden vorhanden ?
Poste mal die configs von Server und Client.
Gruß orcape

redemp
Beiträge: 9
Registriert: 19.09.2010 15:05:14

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von redemp » 05.01.2013 17:55:20

Hi,

danke für deine Antwort.

Der OpenVpn server läuft nicht auf dem Raspberry, sondern der Raspberry ist nur der Client der sich mit dem OpenVpn- Server verbindet(kein Side to Side). Demnach würde eine konventionelle Router-Funktionalität ausreichen d.h. per masquerading in dem die "interne" IP durch die "externe", also die des tun0 Devices ersetzt wird.

client config:

Code: Alles auswählen

client
dev tun
proto tcp
remote xxx port
tls-remote "xxxx"
resolv-retry infinite
nobind
persist-key
persist-tun
ca xxx.crt
cert xxx.crt
key xxx.key
auth-user-pass
cipher AES-192-CBC
auth MD5
comp-lzo
route-delay 4
verb 3
reneg-sec 0  

Benutzeravatar
orcape
Beiträge: 1525
Registriert: 07.11.2008 18:37:24
Wohnort: 50°36'23.99"N / 12°10'20.66"E

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von orcape » 06.01.2013 09:50:56

Hi redemp,
nimm´s mir nicht übel, aber so richtig blick ich in Deiner config nicht durch.
Wäre es nicht Sinnvoller den OpenVPN-Server auf dem Raspberry laufen zu lassen, da könnte der je nach config das Routing übernehmen.
Um als Aussenstehender durchzublicken, bedarf es hier vielleicht mal noch einer kleinen Zeichnung.
Gibt´s das Packet "Dia" , bringt zeichentechnisch alles mit, was man für´s Netzwerk braucht und ist kinderleicht zu bedienen.
Der Übersichtlichkeit halber wäre es auch für Dich sinnvoll, wenn Netze und OpenVPN nicht alle im 192.168.0.0/24 Netz liegen.
Ich habe das bei mir rigoros abgetrennt um da sofort auf einen Blick zu sehen was wohin gehört.
BSP.:
LAN 192.168.133.0/24
DMZ 172.12.4.0/24
OVPN 10.7.8.0/24
Aber letztlich musst Du entscheiden, wie Du damit klar kommst. :wink:
Übrigens, sollten wir hier im Forum nicht klarkommen.....
http://www.administrator.de/
...ist für mich immer ´ne gute Anlaufstelle gewesen, was Netzwerk angeht.
Dein Problem ist ja nun wirklich nicht von trivialer Natur. :wink:
Gruß orcape

Benutzeravatar
Six
Beiträge: 8066
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von Six » 06.01.2013 11:20:55

Das klingt so:

Code: Alles auswählen

[openvpn-server-irgendwo] -- tun0 -- [rasberry] -- eth0 --- eth1 -- [laptop]
Was nun passieren soll, ist, dass der rasberry als router fungiert und schlicht alles vom Laptop auf iface tun0 routet, richtig? Ohne nochmal nachzusclagen, ob es stimmt, müssten folgende Aktionen, die alle auf dem rasberry stattfinden, das bereits erledigen.

Code: Alles auswählen

echo 1 > /proc/sys/net/ipv4/ipforward
Dann erstelle eine route für das Laptop und leite jeden Traffic ins VPN

Code: Alles auswählen

route add -host -n 192.168.0.243 dev tun0
Das sollte es schon tun. Evtl. noch Masquerading

Code: Alles auswählen

iptables -t nat -A POSTROUTING --o tun0 -j MASQUERADE
iptables -A FORWARD -i eth0 -j ACCEPT
Alle weiteren rules sind nicht wirklich nötig, sollte aber aus Sicherheitsgründen nicht vernachlässigt werden.
Be seeing you!

redemp
Beiträge: 9
Registriert: 19.09.2010 15:05:14

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von redemp » 06.01.2013 13:35:11

Hallo,

anbei noch eine schematischer Netzplan!

http://gallery.debianforum.de/var/album ... 1357475523

Alle grünen Linien zeigen was schon geht! Die Roten Linien zeigen das aktuelle Problem.



Grüße

Benutzeravatar
orcape
Beiträge: 1525
Registriert: 07.11.2008 18:37:24
Wohnort: 50°36'23.99"N / 12°10'20.66"E

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von orcape » 06.01.2013 14:26:37

Hi redemp,
optisch Einwandfrei. :-)
Auch auf Verdacht hin, das ich Sch.... erzähle.
Auf dem Raspberry must Du den Port für OVPN freigeben....

Code: Alles auswählen

iptables -I INPUT -p udp --dport 1195 -j ACCEPT
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -I INPUT -i tun0 -j ACCEPT
Beispiel aus meiner config, entsprechend anpassen.
Der OpenVPN-Server braucht zum....

Code: Alles auswählen

1. Eine Route zum Laptop    iroute 192.168.0.243

Code: Alles auswählen

2. 3xPushroute-Einträge    push "route 192.168.10.0 255.255.255.0"; 
push "route 192.168.178.0 255.255.255.0"; push "route 192.168.1.0 255.255.255.0"  
...gibt der Server an den Client weiter um die Netze hinter dem Server publik zu machen.
Gruß orcape

redemp
Beiträge: 9
Registriert: 19.09.2010 15:05:14

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von redemp » 06.01.2013 21:16:47

Hi Orcape,

vielen Dank für deinen regen Support.

Da hier eine Astaro Firewall im Spiel ist, gestaltet sich das mit dem Anpassen der OpenVPN config ein wenig tricky! Aktuell weiss ich noch nicht, ob sich das überhaupt anpassen lässt, so das ich das mit dem "iroute" berücksichtigen kann!---> Ich denke das ist hier an der ganzen Geschichte auch der Knackpunkt! Vergleicht mein mein Szenario mit diesem HowTO (sollte äquivalent sein) http://wiki.openvpn.eu/index.php/Config ... _ClientNET http://www.secure-computing.net/wiki/in ... PN/Routing stellt man auch fest, dass es notwendig ist. Was mir noch aufgefallen ist, ich kann mit dem Laptop ohne weiteres tun0 192.168.10.6 anpingen, alles was hinter ihm ist kann ich nicht mehr mit dem Laptop erreichen.

Die 3x Pushrouten für 192.168.10.0, 192.168.1.0 192.168.178.0 funktionieren, erkenntlich wird das an der Routing Tabelle die ich zu vor schon gepostet hatte. Alle Netze lassen sich vom RaspberryPi aus erreichen!

Hinsichtlich deines Vorschlags der Iptables, kann ich diese nicht nachvollziehen, da ich ja das VPN Netz schon aufbauen kann sowie alle Netze aus Sicht des Raspberry hinter der Firewall erreichen kann.

@Six Auch dir danke für deinen Support

Ich hatte deine Vorschläge auch soweit getestet, jedoch auch ohne Erfolg-->dann bin ich auf das hier gestoßen
http://www.sysadmintalk.net/forums/thread-292.html


Meines erachtens muss es eine Lösung geben ohne den OpenVPN Server noch mal anpacken zu müssen

...werde das folgende Später mal auf dem RaspberryPi probieren
iptables -t nat -A POSTROUTING -o tun0 -j SNAT -to 192.168.10.6
iptables -A FORWARD -i eth0 -o tun0 -m state -state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

Benutzeravatar
orcape
Beiträge: 1525
Registriert: 07.11.2008 18:37:24
Wohnort: 50°36'23.99"N / 12°10'20.66"E

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von orcape » 07.01.2013 05:44:48

Hi redemp,
Hinsichtlich deines Vorschlags der Iptables, kann ich diese nicht nachvollziehen, da ich ja das VPN Netz schon aufbauen kann sowie alle Netze aus Sicht des Raspberry hinter der Firewall erreichen kann.
Das macht sich bei mir erforderlich, weil ich den Openvpn-Client auf einem DD-WRT-Router laufen lasse,
dieser macht auch auf dem Tunnelinterface NAT und verhindert so eine Verbindung. Da ich das NAT aber nicht separat abschalten läßt, die Iptables Einträge. Wenn die nicht drin sind, krieg ich keine Verbindung zum tun-Interface,
NAT ist hier also kontraproduktiv..
Bei Dir ist ja NAT eigentlich kein Thema, das dürfte ja der vorgeschaltete Router erledigen. Also nur eine Route zum Tun-Interface nötig.
So, erster Arbeitstag 2013, muß los, evtl. Abends Feedback ?
Gruß orcape
PS.: Dem OpenVPN-Server muß auch (außer dem iroute Eintrag) die Route zum remoten Netz bekannt sein. route 192.168.0.0/24

redemp
Beiträge: 9
Registriert: 19.09.2010 15:05:14

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von redemp » 12.01.2013 13:21:41

Hallo,

nach langem hin und her hab ich jetzt erst mal theoretisch eine Lösung gefunden! Da meine OpenVPN Server nicht im Site to Site Mode läuft werden die Routen nicht per "push redirect-gateway def1" gepushed.

Allerdings würde mich noch eins interessieren. Ich hatte ja oben schon kurz angerissen, dass es nach meiner Meinung ohne statische routen funktionieren müsste. Wenn ja kann das jemand bestätigen? Ein Simpler DSL Router ersetzt die privaten internen IP's mit der Externen a la Masquerading. Für mein Szenario hat der Tun0 eine statische IP Adresse, demnach müsste es hier auch mit SNAT auf dem RaspberryPi klappen???

Wie müssten denn die IPTables auf dem Raspberry aussehen um das zu realisieren! Die bis dato hier aufgeführten Vorschläge haben alle nicht funktioniert...Jemand eine Idee?

Grüße

worstcase
Beiträge: 1
Registriert: 29.12.2014 15:07:50

Re: Problem Iptables: Routing durch virtuellen Tun Device

Beitrag von worstcase » 29.12.2014 15:21:53

Hallo,

ich baue mir gerade das gleiche system mit einem beagleboard auf.
VPN funktioniert. Ich ich habe Probleme das tun0 auf die eth0 zu routen.
Auch ich will mit meinem Laptop ->ethx -> { beagleboard -> etho routen -tun0 -> wlan0 } -> vpn .......router ... internet ...usw. router (vpn-netz)
Ich möchte aber noch das die eth0 im beagleboard und die ethx im Laptop automatisch eine ip vom dhcp Server des vpn-netzes bekommt (so wie tun0)

Bist du hier schon zu einem Ergfebnis gekommen.... ?

Danke
worstcase

Antworten