.titleBar { margin-bottom: 5px!important; }

OpenVPN Routing Frage

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von pechspilz, 20 Nov. 2011.

  1. pechspilz

    pechspilz Neuer User

    Registriert seit:
    1 Okt. 2010
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 pechspilz, 20 Nov. 2011
    Zuletzt bearbeitet: 20 Nov. 2011
    Servus allerseits!

    Ich möchte auf meiner 7390 (standard image) einen openvpn client laufen lassen und bestimmte Netzwerke über einen externen Server routen.

    Installiert ist soweit mal alles und der Client kann sich erfolgreich mit dem Server verbinden. Auf dem Server kann ich die Box pingen und von der Box den Server. Das war's dann aber schon. Der Ping vom Netz hinter der Box kommt auf dem VPN Server nicht an. Die 7390 läuft auf dem 192.168.178.0 Netz, der VPN Server im 10.8.0.0.

    Fritzbox-Tun Device:
    tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255


    VPN-Server Tun Device:
    tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255


    In der server.conf sieht das so aus:
    port 1194
    proto udp
    dev tun
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    route 192.168.178.0 255.255.255.0
    comp-lzo
    persist-key
    persist-tun

    Die Routingtabelle in der Box schaut so aus:
    Code:
    10.8.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
    10.8.0.1        10.8.0.5        255.255.255.255 UGH   0      0        0 tun0
    192.168.180.1   0.0.0.0         255.255.255.255 UH    2      0        0 dsl
    192.168.180.2   0.0.0.0         255.255.255.255 UH    2      0        0 dsl
    192.168.178.201 0.0.0.0         255.255.255.255 UH    2      0        0 dsl
    192.168.178.0   0.0.0.0         255.255.255.0   U     0      0        0 lan
    192.168.179.0   0.0.0.0         255.255.255.0   U     0      0        0 guest
    x.x.x.x         0.0.0.0         255.255.252.0   U     2      0        0 dsl
    169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 lan
    0.0.0.0         0.0.0.0         0.0.0.0         U     2      0        0 dsl
    Auf dem VPN Server:
    Code:
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
    192.168.178.0   10.8.0.2        255.255.255.0   UG    0      0        0 tun0
    10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
    0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 eth0
    Was fehlt mir denn hier noch, damit der Ping vom/zum VPN aus dem 192.168.178.0 Netz funktioniert?
     
  2. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,924
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Wichtig ist, dass die 7390 in dem Netz 192.168.178.0 auch das Default-Gateway ist. Sonst finden die PCs aus dem Netz den VPN-Server nicht.

    Kann der OpenVPN-Server die FB auch mit ihrer IP im 192.168.178.0-Netz erreichen?

    Da sich prinzipiell mehrere Clients verbinden könnten, müsstest du eigentlich sicher stellen, dass die Pakete für das Netz 192.168.178.0 auch zum "richtigen" Client geroutet werden. Dafür müsstest du auf dem Server mit "client-config-dir" arbeiten, wobei dem Client (abhängig vom Namen im Zertifikat) eine IP zugeordnet wird und dafür auch das Routing angelegt werden kann (mit "iroute"). Woher sollte der Server sonst wissen, bei welchem Client das Netz ist?
    Du siehst die prinzipielle Problematik schon oben:
    Der Client hat die IP 10.8.0.6 bekommen, der Server hat aber die Route zu 10.8.0.2 eingetragen. Das ist so zwar hier "egal", denn der Eintrag ist nur für den Kernel, damit der OpenVPN-Prozess die Pakete bekommt, aber zum richtigen Weiterrouten benötigt das OpenVPN dann noch "iroute" Einträge. So dürftest du beim Server Meldungen bekommen mit "MULTI: bad source address from client ... ".
     
  3. pechspilz

    pechspilz Neuer User

    Registriert seit:
    1 Okt. 2010
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Vielen Dank für deine Antwort. Muss zwar zuerst etwas darüber brüten aber das wird schon :)
     
  4. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,924
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Melde dich, wenn das Brüten fertig ist, oder du nicht weiter kommst ;-).

    Du kannst aber doch schon mal die zwei Sachen "ausprobieren", die oben stehen
    (Ping auf die LAN-IP der Box und VPN-Log auf dem Server ansehen, nachdem du Zugriffe von PCs aus deinem LAN gemacht hast. Wenn du im Server-Log die o.g. Fehlermeldung siehst, benötigst du "client-config-dir".)

    Das CCD ist ein Ordner auf dem Server, in dem eine Textdatei mit dem Namen deines Clients steht, so wie du ihn im Zertifikat genannt hast (CN). Heißt die Box "client01" und dein Ordner "/var/openvpn/CCD" , so sollte es eine Datei "/var/openvpn/CCD/client01" geben, die mindestens diesen einen Eintrag enthalten sollte:

    Code:
    iroute 192.168.178.0 255.255.255.0
    In der Config des Servers dann zusätzlich:
    Code:
    client-config-dir /var/openvpn/CCD 
     
  5. pechspilz

    pechspilz Neuer User

    Registriert seit:
    1 Okt. 2010
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Habe es dank deiner Hilfe hinbekommen. In der client-config steht drin:
    ifconfig-push 10.8.0.10 10.8.0.9
    push "route 192.168.178.0 255.255.255.0"
    iroute 192.168.178.0 255.255.255.0

    Zusätzlich musste in die server.conf rein (nimmt openvpn in der ccd config nicht an):
    route 192.168.178.0 255.255.255.0

    Nun ist vom VPN-Server das interne Netz der 7390 sichtbar und umgekehrt. So weit so gut. Wie muss ich nun vorgehen, wenn ich beispielsweise diese Adresse hier:
    174.132.254.58 (von http://www.cmyip.com - zeigt die IP Adresse des aufrufers an) nur über das VPN routen möchte?

    In meiner Netzwerk-Naivität habe ich einfach mal probiert, mit Netmask 255.255.255.255 diese Adresse genau gleich wie oben beschrieben zusätzlich zu routen. Ergebnis ist, dass mir beim Seitenaufruf immer meine DSL-IP angezeigt wird statt meiner VPN-Server IP. Auf die 7390 wird diese Route zwar gepushed beim Verbindungsaufbau, aber der Client legt sie in der Routing-Tabelle nicht an. Wo ist denn hier mein Denkfehler?
     
  6. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,924
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Das ist eigentlich nicht so eine gute Idee, damit schickst du dem Client den Befehl, er solle sich eine Route zu 192.168.178.0 über das VPN eintragen. Das ist aber sein lokales Netz, das soll er lieber lokal nutzen und nicht ins VPN routen ;-).
    Für die Route zu bestimmten Zielen ist das aber eigentlich o.k.

    Versuche doch mal diese Config:
    Code:
    ifconfig-push 10.8.0.10 10.8.0.9
    push "route-gateway 10.8.0.9"
    push "route 174.132.254.58 255.255.255.255"
    iroute 192.168.178.0 255.255.255.0
    
    Gab es irgendeine Meldung, warum die 7390 die "gepushte" Route nicht eingetragen hatte???
     
  7. pechspilz

    pechspilz Neuer User

    Registriert seit:
    1 Okt. 2010
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #7 pechspilz, 23 Nov. 2011
    Zuletzt bearbeitet: 23 Nov. 2011
    Mit der von dir genannten Config werden alle Routen eingetragen.

    Auf der 7390 sieht das jetzt so aus:

    Code:
    174.132.254.58  10.8.0.9        255.255.255.255 UGH   0      0        0 tun0
    192.168.180.1   0.0.0.0         255.255.255.255 UH    2      0        0 dsl
    192.168.180.2   0.0.0.0         255.255.255.255 UH    2      0        0 dsl
    192.168.178.201 0.0.0.0         255.255.255.255 UH    2      0        0 dsl
    10.8.0.9        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
    192.168.178.0   0.0.0.0         255.255.255.0   U     0      0        0 lan
    192.168.179.0   0.0.0.0         255.255.255.0   U     0      0        0 guest
    10.8.0.0        10.8.0.9        255.255.255.0   UG    0      0        0 tun0
    x.x.x.x         0.0.0.0         255.255.252.0   U     2      0        0 dsl
    169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 lan
    0.0.0.0         0.0.0.0         0.0.0.0         U     2      0        0 dsl
    Auf dem VPN-Server so:
    Code:
    174.132.254.58  10.8.0.2        255.255.255.255 UGH   0      0        0 tun0
    10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
    192.168.178.0   10.8.0.2        255.255.255.0   UG    0      0        0 tun0
    10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
    0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 venet0
    Die Route für 192* habe ich in der server.conf eingetragen.

    Code:
    ...
    route 192.168.178.0 255.255.255.0
    
    Wenn ich die 192* in der server.conf weglasse funktioniert sonst das VPN nicht.

    Der Ping auf den 174* Host funktioniert von der 7390, allerdings nicht von einem Client hinter dem 192 Subnet.

    Die CCD config habe ich 1:1 von dir übernommen. IP-Forwarding auf dem VPN-Server ist natürlich an und funktioniert auch, wenn ich direkt von meinem PC ein VPN auf den Server aufbaue.

    Wäre toll wenn du noch einen guten Tipp auf Lager hättest.
     
  8. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,924
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Das mit der "route ..." in der Server-Config ist immer so (hatte ich oben mal versucht zu erklären: das sorgt dafür, dass der Kernel die Pakete überhaupt zum OpenVPN schickt, das iroute im ccd sorgt dann dafür, dass es zum richtigen Client kommt).

    Ich vermute mal, der Zugriff aus dem LAN auf diese IP läuft dann "ins Leere"? Ein "trace" endet auf dem Server?
    Dann musst du wohl dem Server noch "beibringen", dass auch das Netz 192.168.178.0 auf seine offizielle IP zu Natten ist. Das OpenVPN-Netz ist ja angeschlossen, das "kennt" er vermutlich, aber Adressen aus 192.168.178.0 nicht.
     
  9. pechspilz

    pechspilz Neuer User

    Registriert seit:
    1 Okt. 2010
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Genau, der ping auf den 174er Host aus einem Client im 192er Netz kommt im VPN-Server auf tun0 an. Ich sehe ihn allerdings nicht auf venet0 rausgehen.
     
  10. pechspilz

    pechspilz Neuer User

    Registriert seit:
    1 Okt. 2010
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hoppla falsch, stimmt nicht:

    22:01:16.032093 IP 192.168.178.20 > 174.132.254.58: ICMP echo request, id 45320, seq 44, length 64
    22:01:17.032993 IP 192.168.178.20 > 174.132.254.58: ICMP echo request, id 45320, seq 45, length 64
    22:01:18.034457 IP 192.168.178.20 > 174.132.254.58: ICMP echo request, id 45320, seq 46, length 64
    22:01:19.035992 IP 192.168.178.20 > 174.132.254.58: ICMP echo request, id 45320, seq 47, length 64
    22:01:20.036812 IP 192.168.178.20 > 174.132.254.58: ICMP echo request, id 45320, seq 48, length 64

    Das heisst also, der Rückweg passt noch nicht?
     
  11. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,924
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Gibts da eine Firewall, der das auch noch "beigebogen" werden muss? Also einmal muss es natürlich zum passenden Interface raus (dürfen), zum andern dabei auch noch "genatted" werden....
     
  12. pechspilz

    pechspilz Neuer User

    Registriert seit:
    1 Okt. 2010
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Es handelt sich hier um eine virtualisierte openVZ Umgebung, dahinter gibt's bestimmt eine Firewall irgendwo - auf die habe ich natürlich keinen Einfluss.
     
  13. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,924
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    #13 MaxMuster, 23 Nov. 2011
    Zuletzt bearbeitet: 23 Nov. 2011
    Naja, raus scheint es ja zu gehen. Gibt es iptables auf der Box? Mit welcher Config?
    ( iptables -L ; iptables -t nat -L)

    EDIT: mit "Box" meinte ich hier die openVZ Kiste ;-)
     
  14. pechspilz

    pechspilz Neuer User

    Registriert seit:
    1 Okt. 2010
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Musste mich erst mal schlau machen was natten ist, wie gesagt ich bin da noch nicht so ganz zu Hause bei diesen Netzwerk-Geschichten. Jetzt habe ich jedenfalls verstanden was du meintest und mit folgender Regel funktioniert alles wie gewünscht:
    iptables -t nat -A POSTROUTING -s 192.168.178.0/24 -o venet0 -j SNAT --to-source $(ifconfig venet0:0 | grep -i 'inet' | cut -d: -f2 | awk '{ print $1}')

    (SNAT wird bei diesen virtuellen openVZ Kisten benötigt)

    Ganz herzlichen Dank für deine Hilfe, das hat mir vermutlich Tage des Brütens erspart ;-)