Config Hilfe für OpenVPN Client mit User/Password

Roadmap123

Neuer User
Mitglied seit
17 Jul 2010
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
Hallo Leute,

trotz intensiven Studiums der SuFu konnte ich für mein spezifisches Problem keine Lösung finden, deswegen -> Hiiiilfe ;)

Habe hier eine FritzBox 7170 mit Freetz 1.1.3 mit installierten OopenVPN-Modul.

Ich möchte die Box als VPN Client auf meinen Endian basierenden OpenVPN-Server benutzen, sprich die Clients an der FritzBox sollten Zugriff auf das Netzwerk beim VPN-Server haben.

Meine normale VPN-Client Config sieht so aus:

Code:
client
float
dev tap
proto udp
port 1194
remote mein.server.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca cacert.pem
auth-user-pass
pull
comp-lzo

So wie ich das sehe, kann ich genau das NICHT im GUI einstellen. Also hier mein Hilfeschrei:

a) wie bringe ich diese Config dem OpenVPN-Modul bei, also wo muss die cacert.pem hin, wohin kommen user und passwort und wie sieht die restliche Config aus

b) wie sieht die weitere Config aus das bei stehender Verbindung richtig geroutet wird, also Client <->Fritzbox, VPN-Client <-> VPN-Server <-> Remote Netzwerk

1000 Dank, aber ich bin jetzt mit "Trial and Error" am Ende :(
 
Vielen Dank für Deine Infos. Den ersten Eintrag habe ich auch gefunden, bringt mich meiner Lösung IMHO nicht weiter, da hier mit Zertifikatsdateien gearbeitet wird (nicht mit User und Passwort), wie bei mir. Mag sein, das ich da ein wenig am Schlauch stehe, aber ich finden nicht mal einen Anfang.
 
Dort steht sowohl im Text "...der eine Username Password Authentifizierung verlangt und nur ein CA Cert ..." und der "ca" Eintrag ist auch in der Config drin...

Ist halt die Frage, ob du wirklich nur die CA-Authentifizierung brauchst, dann musst du die Config von Hand verändern. Am einfachsten wäre, du schreibst deine Config selbst. Dazu dein Cert als Cert eintragen, wie im Wiki angegeben, die User/PW-Datei wie im anderen Beitrag erstellen. Dann nimmst du das als /tmp/flash/openvpn_conf:
Code:
#!/bin/sh
cat << 'EOF' > "$1"
client
float
dev tap
proto udp
port 1194
remote mein.server.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /tmp/flash/ca.cert
auth-user-pass /tmp/flash/openvpn/passfile
pull
comp-lzo
EOF
Danach noch mit "chmod +x /tmp/flash/openvpn_conf" ausführbar machen und mit "modsave" abspeichern.

Das sollte es gewesen sein...

Jörg
 
So ich habe es jetzt so angelegt, aber leider scheint es noch irgendwo zu haken, denn schmeisse ich OpenVPN-Server an, kriege ich keinen Output, sondern es passiert nichts weiter. Die openvpn_conf, habe ich wie angegeben eingerichtet. die passfile sieht dann so aus:

Code:
#!/bin/sh
ALLOWED_USER="meinuser"
ALLOWED_PASS="meinpass"

if [ "$username" == "$ALLOWED_USER" ] && [ "$password" == "$ALLOWED_PASS" ]
 then exit 0
 fi

 exit 1
EOF

Tja aber irgendwo muss wohl noch ein Fehler liegen, kann ich denn irgendwo ein Log einsehen?
 
Läuft denn openvpn? Ist /mod/etc/openvpn.conf die gewünschte Datei?
Starte "openvpn /mod/etc/openvpn.conf " und schau den Output an. Ggf. "verb" noch auf 6 setzen, falls du nicht weiterkommst. Das Wiki hast du sicher schon angesehen, besonders "Ein paar Tips wenn es nicht gleich so klappt"??

Wenn es läuft sollte übrigens noch "daemon" mit in die Config.

Jörg
 
Danke für Deine Hilfe aber es funzt immer nicht. Ich tippe drauf das Du mit /mod/etc/openvpn.conf die umkopierte /tmp/flash/openvpn_conf meinst, oder? Ich hab diese mal umkopiert und mit openvpn /mod/etc/openvpn.conf gestartet und das ist der Output:

Code:
/var/mod/root # openvpn /mod/etc/openvpn.conf 
Thu Jul 22 20:38:48 2010 OpenVPN 2.1.1 mipsel-linux [SSL] [LZO2] [EPOLL] [MH] built on Jul 16 2010
Thu Jul 22 20:38:48 2010 WARNING: file '/tmp/flash/openvpn/passfile' is group or others accessible
Thu Jul 22 20:38:48 2010 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
Thu Jul 22 20:38:48 2010 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Thu Jul 22 20:38:48 2010 LZO compression initialized
Thu Jul 22 20:38:48 2010 UDPv4 link local: [undef]
Thu Jul 22 20:38:48 2010 UDPv4 link remote: [AF_INET]87.173.149.27:1194
Thu Jul 22 20:38:49 2010 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Thu Jul 22 20:38:49 2010 VERIFY ERROR: depth=1, error=self signed certificate in certificate chain: /C=IT/O=efw/CN=efw_CA
Thu Jul 22 20:38:49 2010 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:lib(20):func(144):reason(134)
Thu Jul 22 20:38:49 2010 TLS Error: TLS object -> incoming plaintext read error
Thu Jul 22 20:38:49 2010 TLS Error: TLS handshake failed
Thu Jul 22 20:38:49 2010 SIGUSR1[soft,tls-error] received, process restarting
Thu Jul 22 20:38:51 2010 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
Thu Jul 22 20:38:51 2010 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Thu Jul 22 20:38:51 2010 Re-using SSL/TLS context
Thu Jul 22 20:38:51 2010 LZO compression initialized
Thu Jul 22 20:38:51 2010 UDPv4 link local: [undef]
Thu Jul 22 20:38:51 2010 UDPv4 link remote: [AF_INET]87.173.149.27:1194
Thu Jul 22 20:38:51 2010 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Thu Jul 22 20:38:52 2010 VERIFY ERROR: depth=1, error=self signed certificate in certificate chain: /C=IT/O=efw/CN=efw_CA
Thu Jul 22 20:38:52 2010 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:lib(20):func(144):reason(134)
Thu Jul 22 20:38:52 2010 TLS Error: TLS object -> incoming plaintext read error
Thu Jul 22 20:38:52 2010 TLS Error: TLS handshake failed
Thu Jul 22 20:38:52 2010 SIGUSR1[soft,tls-error] received, process restarting
Thu Jul 22 20:38:54 2010 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
Thu Jul 22 20:38:54 2010 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Thu Jul 22 20:38:54 2010 Re-using SSL/TLS context
Thu Jul 22 20:38:54 2010 LZO compression initialized
Thu Jul 22 20:38:54 2010 UDPv4 link local: [undef]
Thu Jul 22 20:38:54 2010 UDPv4 link remote: [AF_INET]87.173.149.27:1194
Thu Jul 22 20:38:54 2010 TLS Error: Unroutable control packet received from [AF_INET]87.173.149.27:1194 (si=3 op=P_ACK_V1)
Thu Jul 22 20:38:55 2010 TLS Error: Unroutable control packet received from [AF_INET]87.173.149.27:1194 (si=3 op=P_CONTROL_V1)
Thu Jul 22 20:38:55 2010 TLS Error: Unroutable control packet received from [AF_INET]87.173.149.27:1194 (si=3 op=P_CONTROL_V1)
Thu Jul 22 20:38:55 2010 TLS Error: Unroutable control packet received from [AF_INET]87.173.149.27:1194 (si=3 op=P_CONTROL_V1)
Thu Jul 22 20:38:55 2010 TLS Error: Unroutable control packet received from ...

TJa aber was sagen mir diese Fehler??? Auch das Wiki schweigt sich in meinem Fall aus :(
 
Ich tippe drauf das Du mit /mod/etc/openvpn.conf die umkopierte /tmp/flash/openvpn_conf meinst, oder?
Nö, ich meinte, ob "/mod/etc/openvpn.conf" die Config-Datei enthält, die du nutzen willst. In "/tmp/flash/openvpn_conf" liegt (oder: sollte liegen) ein Shell-Skript, was diese Datei erzeugt.

Also: das openvpn wir mit der Config-Datei "/mod/etc/openvpn.conf" gestartet, das wird aus der in der GUI eingetragenen Daten erstellt, oder, sofern vorhanden, von einem ausführbaren Shellskript /tmp/flash/openvpn_conf.

Ist nach dem Start vom openvpn in "/mod/etc/openvpn.conf" genau das drin, was du als Konfig benötigst??

Die "Error"-Zeilen sollten natürlich nicht sein, aber das liegt an falscher Config, oder eventuell sogar am Internetzugang.
VERIFY ERROR: depth=1, error=self signed certificate in certificate chain
Hast du als Zertifikat für den Client vielleicht das CA-Certifikat eingetragen??

Jörg
 
OK jetzt hast Du es geschafft, ich bin komplett verwirrt :D

Also meine Vorgehensweise war folgende:

1. mein Cert "cacert.pem" via FTP übertragen und als "ca.cert" nach "/tmp/flash/" verschoben
2. per Telnet und vi die "/tmp/flash/openvpn_conf" erstellt, wie in Deinem Posting beschrieben (mit den EOF's) drin.
3. /tmp/flash/openvpn/passfile erstellt wie oben beschrieben
4. die Rechte verändert "chmod +x /tmp/flash/openvpn_conf"
5. "modsave"

Danach gestartet und keinen Output bekommen.

Nach Deinem letzten Posting habe ich zuerst nach der der "/mod/etc/openvpn.conf" gesucht, die es aber nicht gab. Ich hab dann die "/tmp/flash/openvpn_conf" genommen und als "/mod/etc/openvpn.conf" kopiert. Ein "openvpn /mod/etc/openvpn.conf" gab dann eine Fehlermeldung aufgrund der "#!/bin/sh cat << 'EOF' > "$1"" Zeilen, die ich dann entfernt habe. Danach haben ich den obigen Output bekommen.

Scheinbar wurde per Shellscript die .conf schon gar nicht erzeugt bei mir.

Jetzt zum Fehler. Die Config ist wiegesagt, grundsätzlich die die ich auch mit meinem normalen OpenVPN Client im gleichen Netzwerk auf einem PC hinter der Fritz!Box benutze, was alles ohne Probleme klappt. Ich denke einen Fehler der I'Net-Verbindung kann ich ausschliessen.
 
Danach gestartet und keinen Output bekommen.
Wie gestartet? Über die Weboberfläche? Was ist dann genau passiert? War danach in der GUI openvpn als "gestartet" angezeigt?

Nochmal die Frage: Was war/ist (nach dem Starten!) in der Datei "/mod/etc/openvpn.conf"?
Wenn diese Datei nach dem Starten nicht existiert, rufe bitte mal auf
"/tmp/flash/openvpn_conf /mod/etc/openvpn.conf"
Erzeugt das die Datei?

Bei mir habe ich es gerade nachgestellt: Es klappt wie gewünscht. Wenn du übrigens das ca-Cert aus der GUI nutzen willst (Einstellungen -> OpenVPN: CA Cert), müsstest du die Zeile in meinem Beispiel korrigieren und ein "e" entfernen (nicht "ca /tmp/flash/ca.cert" sondern "ca /tmp/flash/ca.crt").

Bitte denke auch an diesen Satz, wenn das ganze als Dienst laufen soll:
Wenn es läuft sollte übrigens noch "daemon" mit in die Config.
sonst wird das OpenVPN als Programm im Vordergrund gestartet...

Falls du dabei einen Fehler gemacht haben solltest wäre meine Vermutung: In der vor(!)-letzten Zeile der Datei /tmp/flash/openvpn_conf steht nicht genau nur ein "EOF" ohne Leerzeichen (und ohne Anführungszeichen) mit einem <Return> danach, denn bei mir geht das so wie beschrieben (mit angepasstem Cert-Namen und "daemon" in der Config):
Code:
Starting openvpn ... done.
Im Log steht dann
Code:
Fri Jul 23 13:33:19 2010 OpenVPN 2.1.1 mipsel-linux [SSL] [LZO2] [EPOLL] [MH] built on Jul 19 2010
Fri Jul 23 13:33:19 2010 WARNING: file '/tmp/flash/openvpn/passfile' is group or others accessible
Fri Jul 23 13:33:19 2010 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
Fri Jul 23 13:33:19 2010 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Fri Jul 23 13:33:19 2010 LZO compression initialized
Fri Jul 23 13:33:19 2010 UDPv4 link local: [undef]
Fri Jul 23 13:33:19 2010 UDPv4 link remote: [AF_INET]192.168.178.234:1194
Fri Jul 23 13:33:19 2010 read UDPv4 [ECONNREFUSED]: Connection refused (code=146)
Fri Jul 23 13:33:21 2010 read UDPv4 [ECONNREFUSED]: Connection refused (code=146)
Dieser Fehler ist ja auch klar, nämlich dass "mein.server.com" nicht mit mir reden will ;-)
Einziger Unterschied: Ich habe natürlich nicht "dein" CA-Certificat drin, sondern ein x-belibiges (aber korrektes ;-)).

Jörg
 
Vielen Dank für die ausführlichen Beschreibungen. Ich hab das Ganze jetzt nochmals von Vorne gemacht und auch das Cert per WebGUI übertragen und komme einen Schritt weiter:

Code:
Sun Jul 25 08:51:21 2010 OpenVPN 2.1.1 mipsel-linux [SSL] [LZO2] [EPOLL] [MH] built on Jul 16 2010
Sun Jul 25 08:51:21 2010 WARNING: file '/tmp/flash/openvpn/passfile' is group or others accessible
Sun Jul 25 08:51:21 2010 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
Sun Jul 25 08:51:21 2010 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Sun Jul 25 08:51:21 2010 LZO compression initialized
Sun Jul 25 08:51:21 2010 UDPv4 link local: [undef]
Sun Jul 25 08:51:21 2010 UDPv4 link remote: [AF_INET]87.173.159.44:1194
Sun Jul 25 08:51:21 2010 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Sun Jul 25 08:51:22 2010 [127.0.0.1] Peer Connection Initiated with [AF_INET]87.173.159.44:1194
Sun Jul 25 08:51:24 2010 AUTH: Received AUTH_FAILED control message
Sun Jul 25 08:51:24 2010 SIGTERM[soft,auth-failure] received, process exiting

Soweit ich den Fehler verstehe liegt es jetzt wohl an der Authentifikation. Hier nochmal mein passfile lt. WiKi, hat das schon mal einer mit Erfolg eingesetzt, bzw. sieht meinen Fehler???

Code:
#!/bin/sh
ALLOWED_USER="meinuser"
ALLOWED_PASS="meinpass"

if [ "$username" == "$ALLOWED_USER" ] && [ "$password" == "$ALLOWED_PASS" ]
 then exit 0
 fi

 exit 1
EOF

Ich glaube jetzt wirklich wir nähern uns der Lösung ;-)
 
Zuletzt bearbeitet:
Du hast das "auth-user-pass" für einen Server gemacht, benötigst es aber für einen Client, so wie z.B. hier beschrieben:
Code:
cat << 'EOF' > /tmp/flash/openvpn/passfile
deinuser
deinpw
EOF

Dann sollte es auch mit dem Server klappen ;-)

Jörg
 
Jörg 1000 Dank, ich denke ich bin wieder einen Schritt weiter, aber leider neue Fehlermeldung :confused:

Config sieht jetzt so aus:

Code:
#!/bin/sh
cat << 'EOF' > "$1"
client
float
dev tap
proto udp
port 1194
remote mein.server.com 1194
resolv-retry infinite
nobind
daemon
persist-key
persist-tun
ca /tmp/flash/ca.crt
auth-user-pass /tmp/openvpn/userpw
pull
comp-lzo
EOF

und die Fehlermeldung sagt:

Code:
Options error: You must define TUN/TAP device (--dev)
Use --help for more information.

Hmmm also meiner Meinung nach steht "dev tap" doch recht deutlich drin, oder??? Bei gestartetem Dienst sieht die /mod/etc/openvpn.conf auch so aus wie oben.
 
Ja, genauso sehe ich das auch, es sollte so klappen...
Gleiche Fehlermeldung, wenn du es so "von Hand" ausführst??
Code:
# Config erzeugen nach /tmp/openvpn.conf 
/tmp/flash/openvpn_conf /tmp/openvpn.conf
# im Vordergrund, also "daemon" raus
sed -i '/daemon/ d' /tmp/openvpn.conf
# starten 
openvpn /tmp/openvpn.conf

Ich tippe doch irgendwie auf einen Tipp-Fehler?!?

Jörg
 
Ich glaube das wäre "zu einfach" gewesen :)

Nach Deiner händischen Methode, kriege ich keine Fehlermeldung mehr, der TelnetPrompt attestiert mir einen kompletten Login:

Code:
Sun Jul 25 20:31:30 2010 [127.0.0.1] Peer Connection Initiated with [AF_INET]87.173.159.44:1194
Sun Jul 25 20:31:32 2010 TUN/TAP device tap0 opened
Sun Jul 25 20:31:32 2010 /sbin/ifconfig tap0 192.168.0.155 netmask 255.255.255.0 mtu 1500 broadcast 192.168.0.255
Sun Jul 25 20:31:32 2010 Initialization Sequence Completed

Das sieht ja prima aus, ABER es findet kein Routing ins VPN Netz statt, heisst ich kann aus einem PC hinter FritzBox (192.168.178.X) nicht ins VPN Network (192.168.0.X). Bzw. es nichts anpingbar.

Heisst das ich stehe "kurz" vor der Lösung???? :idea:
 
Scheint fast so :D

Ich denke, was du nun noch willst, aber nicht konfiguriert hast, ist das "bridging", denn momentan hat (wenn es denn mit der Verbindung klappt) nur die FB den Zugriff auf das VPN.

Wenn auch andere das nutzen können sollen, müssen die in das gleiche Netz, dazu muss das TAP mit dem LAN verbunden werden (und die PCs müssen in dem VPN Netzt natürlich auch eine IP haben) . Das sollte gehen mit:
Code:
brctl addif lan tap0

Oder du lässt vom VPN-Server das Netz 192.168.178.0/24 an "deine" VPN-IP (192.168.0.155 ??) routen.

Jörg
 
Bevor ich mich (wieder) blöd anstelle ;)

Kommt dieser Eintrag in die /tmp/flash/openvpn_conf?!

Code:
brctl addif lan tap0

Mein Unix (Halb-)Wissen sagt mit zudem das brctl ein Tool ist, ist das beim OpenVPN-Paket oder muss ich mir die Binary dazu noch besorgen??
 
"brctl" ist unabhängig vom OpenVPN. Es stellt unter Linux generell "Netzwerkbrücken" zur Verfügung, dementsprechend gehört der Befehl nicht in die OpenVPN-Konfig, sondern wird "normal" in der Shell ausgeführt. Je nach Box ist das schon dabei, oder du kannst es beim Bauen von Freetz mit ins Image einbauen lassen.

Er bewirkt, dass das TAP-Interface des Openvpn mit dem LAN "überbrückt" wird, alle Pakete im LAN werden so (im Prinzip) zum OpenVPN übertragen und umgekehrt. Wenn du das machst, können sich die PCs in deinem Netz und das VPN "sehen", sie sind verbunden. Um "miteinander reden" zu können müssen zudem die IP-Adressen "stimmen", die PCs müssen auch eine IP des VPN-Netzes haben, sonst klappt das nicht.

Jörg
 
OK alles klar, habe ich brctl auf der Box, wo ist die beste Stelle um das automatisch auszuführen?

BTW :groesste:
 
Am einfachsten, indem du in der Konfig vom OpenVPN noch ein "up" script hinzufügst, so in der Art:
Code:
up /tmp/openvpn/up-script
was dann im einfachsten Fall so aussehen könnte (nur aus dem Kopf, nicht getestet):
Code:
#!/bin/sh
brctl addif lan "$1"

Jörg
 
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.