Rasberry VPN Server Multi User

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Was habe ich vor?

    Ich habe eine kommerziellen VPN Anbieter, der mir Server in 29 verschiedenen Ländern zur Verfügung stellt.

    Ich möchte jetzt einen Raspberry als VPN-Server einrichten, der wie folgt funtkioniert:

    Der Rasperry stellt als Server einen VPN-Tunnel zur Verfügung. Der Tunnel steht fünf (oder auch mehr) Usern zur Verfügung.

    Jeder User bekommt einen eigenen Zugang zu genau einem kommerziellen VPN-Server.

    Also: User 1 -> Amsterdam
    User 2 -> Mexico
    User 3 -> New York usw....


    Client1 <----> mein VPN-Tunnel <----> Raspberry <------> z.B. hide.sowiso.mexico.vpv <--> metfliux als Mexikaner
    Client2 <----> mein VPN-Tunnel <----> Raspberry <------> z.B. hide.sowiso.usa.vpn <--> metfliux als Amerikaner
    .
    .
    .Clientx......

    es werden immer die selben Websites genutzt, nur, je nach Client als Deutscher, Amerikaner, Mexikaner...

    z.B. Soll, wenn ich als Client1 angemeldet bin, es so scheinen, als wäre ich Ami, als Client2 Deutscher usw.

    Ich will aber immer auf die gleichen Websites zugreifen, z.B. "Metflux.com" ;)

    Die Routen stehen dann fest in den Configs (siehe unten).

    Was läuft schon?

    Auf dem Raspberry läuft ein VPN als Server, in das sich alle Clients einwählen können.

    Zertfikate, Schlüssel und der ganze Kryptokram laufen.

    Hier die Server.conf:

    Den Client werden feste IP's zugewiesen durch:

    Code
    #Auszug aus server.conf von oben...
    client-config-dir ccd
    push "topology subnet"
    topology subnet
    ...

    Was dann im /openvpn/ccd so aussieht:

    Client1 (Datei muss genau den Client Namen haben)

    Code
    ifconfig-push 10.8.0.10

    Client2

    Code
    ifconfig-push 10.8.0.20

    Und die zugehörige client.conf:


    Das funktioniert prima!

    Auch habe ich testweise schon zwei Verbindungen zu zwei VPN-Servern:

    Hierbei st wichtig, dass mein eigener Server auf tun0, der erste komerzielle auf tun1, der Zweite auf tun2 usw läuft.

    Alle Configs für diese Verbindungen sind gleich, bis auf die remote-Einträge und die Schlüssel, bzw. Zertifikat Pfade.

    Es lassen sich auch Verbindungen aufbauen, bis der Rasp. platzt. Das ist nicht das Problem.

    Es läuft alles über wlan0, eth0 ist nicht notwendig.

    Wichtig ist, dass die Option "route-nopull" drinsteht, da sonst der komplette Verkehr nur über diesen tun läuft. Die routen muss man dann händisch eintragen, hier z.B.

    "route ipecho.net" (steht mal stellvertretend für metflux.com, ist halt schöner zum testen, da ipecho.net, gleich die eigene ip liefert.

    So, das ist aber ein Problem, weil ja diese Route in allen VPN (komerziell) stehen muss.

    Openvpn trägt diese route dann einfach in die Routingtabelle ein (172.16.0.1 ist meine Fritzbox)

    Code
    0.0.0.0         172.16.0.1      0.0.0.0         UG    303    0        0 wlan0
    10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
    10.15.22.0      0.0.0.0         255.255.255.0   U     0      0        0 tun1
    10.16.21.0      0.0.0.0         255.255.255.0   U     0      0        0 tun2
    146.255.36.1    10.16.21.1      255.255.255.255 UGH   0      0        0 tun2
    172.16.0.0      0.0.0.0         255.255.0.0     U     303    0        0 wlan0

    Die 146.255... ist ipecho.net.(stellvertretend fur Metflux.com)

    Das passiert aber nur einmal, was auch logisch ist.

    Im Log des zweiten VPN komerz. steht dann:

    ERROR: Linux route add command failed: external program exited with error status: 2

    (Macht ja auch Sinn!)

    Seltsamerweise lässt sich aber händisch die Route:

    146.255.36.1 10.15.22.2 255.255.255.255 UGH 0 0 0 tun1

    Hinzufügen:

    Code
    0.0.0.0         172.16.0.1      0.0.0.0         UG    303    0        0 wlan0
    10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
    10.15.22.0      0.0.0.0         255.255.255.0   U     0      0        0 tun1
    10.16.21.0      0.0.0.0         255.255.255.0   U     0      0        0 tun2
    146.255.36.1    10.15.22.2      255.255.255.255 UGH   0      0        0 tun1
    146.255.36.1    10.16.21.1      255.255.255.255 UGH   0      0        0 tun2
    172.16.0.0      0.0.0.0         255.255.0.0     U     303    0        0 wlan0

    Ob das sinnvoll ist, weiß ich noch nicht.

    Ein Tracerout zu ipecho.net sieht aber auf dem Client so aus:

    Code
    traceroute to ipecho.net (146.255.36.1), 30 hops max, 60 byte packets
    1  10.8.0.1 (10.8.0.1)  124.443 ms  126.107 ms  125.675 ms
    2  10.15.22.2 (10.15.22.2)  129.272 ms  131.327 ms  131.964 ms .........usw.

    funktioniert also, aber eben immer 10.15.22.2, egal, ob man Client1,2 usw. ist. Es sollte aber die zweite Zeile (10.15.22.2) natürlich von Client zu Client verschieden sein.

    Bin zwar begnadeter Python Skripter, aber...

    Es ist mir klar, dass das Ganze:

    1. Mit der Wahl meiner IP-Adressen zusammenhängt. (Subnetting ist mir suspekt)

    2. Mit IPTABLES, was bei mir wie folgt aussieht (ohne, dass ich eine große Ahnung habe, was ich da tue:-( )


    (automatischer Start des Scriptes über init.d ist sichergestellt)

    Code
    update-rc.d rpivpn defaults

    Der Vollständigket halber noch ifconfig vom Rasppberry (eth0 nicht angeschlossen)

    So, ich hoffe nun, dass überhaupt jemand versteht, was ich vorhabe und noch besser, dass jemand mir mit Subnetting und Iptables weiter helfen kann.

    Wenn nicht, hoffe ich, dass jemand meine Ergebnisse bis jetzt für sich verwerten kann.


    PS, so ähnlich, und auch viel "geklaut" von

    http://www.kammerath.net/openvpn-mehrer…eichzeitig.html

    Einmal editiert, zuletzt von ostfriese (2. März 2016 um 16:34)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!