Tipps & Tricks: OpenVPN auf dd-wrt Router

Das war jetzt auf die iptables bezogen, ich vermute mal, dd-wrt nutzt diese ebenfalls als Firewall. Egal ob du die nun per GUI einstellst oder auf der Kommandozeile, du kannst dir auf der Kommandozeile anzeigen lassen, welche Regeln gerade aktiv sind.

Für die Tabelle Filter würde das so aussehen:

iptables -t filter -L

oder für NAT:

iptables -t nat -L

Interessant ist, was dabei angezeigt wird. Bei ersterem Kommando ist auch die policy interessant, ob ACCEPT oder DROP.
 
Da bräuchte man wieder zusätzliche iptables Regeln zu den Firewallregeln.
Wenn die IP 192.168.1.150 in "Richtlinienbasiertes Routen" aufgenommen wird, dann bräuchte man wahrscheinlich folgende iptables.
Ich weiß aber nicht ob sie richtig geschrieben sind.

Code:
iptables -I FORWARD -i br0 -s 192.168.1.150 -j ACCEPT
iptables -I FORWARD -o br0 -d 192.168.1.150 -j ACCEPT

Ich gehe mal davon aus, dass es nicht egal ist, wo das in den iptables steht.
Wenn ich das so mache wie hier, geht es zumindest. Stimmt es so auch?

Code:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -I FORWARD -i br0 -o tun1 -j ACCEPT
iptables -I FORWARD -i tun1 -o br0 -j ACCEPT
iptables -I FORWARD -i br0 -o vlan2 -j DROP
iptables -I FORWARD -i br0 -s 192.168.1.xyz -j ACCEPT
iptables -I FORWARD -o br0 -d 192.168.1.xyz -j ACCEPT
iptables -I INPUT -i tun1 -j REJECT
iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE

Und dann noch in den "Richtlinienbasierten Routen" die IPs eintragen, die über VPN gehen sollen.
 
Ich gehe mal davon aus, dass es nicht egal ist, wo das in den iptables steht.

Die Wertigkeit der Regeln nimmt von oben nach unten zu, dh wenn du in Regel 1 Traffic auf br0 verbietest und in Regel 2 erlaubst, bleibt der Traffic auf br0 erlaubt. Vertauscht du die Regeln 1 und 2 wäre Traffic auf br0 verboten.
Ob eine Regel an bestehende angehangen wird oder zwischen bestehende eingefügt wird, steuert -A oder -I. Du kannst dir die Zeilennummern der Regeln ebenfalls anzeigen lassen mit:

iptables -t filter -L --line-numbers

Du könntest die obigen Regeln, die mit "iptables -I" beginnen ersetzen durch ein "iptables -A". Da du nirgends bei -I eine Zeilennummer verwendest würde -A besser passen, der Effekt bleibt allerdings gleich.

iptables -P steuert die Policy der Kette, also was für eine übergeordnete Regel auf die jeweilige Kette angewendet werden soll. Die ersten 2 Regeln besagen also, dass Traffic auf der INPUT sowie FORWARD chain verworfen werden soll. Die INPUT chain filtert Traffic, der als Ziel reingehend direkt deinen Router hat, zum Beispiel ein Ping an die externe Adresse deines Routers würde darunter fallen. Die FORWARD chain filtert Traffic, der als Ziel einen Rechner hinter deinem Router hat, also ein Rechner deines LAN.

Damit du nun überhaupt ins Internet gelangen kannst musst du diese DROP Regel selektiv aufheben. Das machen die Regeln 3 und 4, sie erlauben auf der FORWARD chain Traffic reingehend auf br0 und rausgehend auf tun1 und umgekehrt.
Die Regel 5 ist unnötig, da du für die FORWARD chain als übergeordnete Regel bereits DROP gesetzt hast.
Die Regel 6 erlaubt Traffic reingehend auf br0, sofern die Quelle 192.168.1.xyz ist.
Die Regel 7 erlaubt Traffic rausgehend auf br0, sofern das Ziel 192.168.1.xyz ist.
6 und 7 ist nötig, da du Traffic für diesen speziellen Rechner am VPN vorbei erlauben möchtest.

Die Regel 8 ist unnötig, da die Policy auf INPUT für alle interfaces, also auch für tun1 bereits DROP ist. REJECT würde ich ausserdem nicht nehmen, da dadurch der Anfragende ein Fehlerpaket darüber bekommt, dass sein Paket zurückgewiesen wurde, bei DROP wird das Paket einfach verworfen, ohne Info darüber, was ja auch idR keinen was angeht.

Die Regel 9 maskiert zuletzt alle Pakete, die über tun1 rausgehen, mit der VPN IP, die dein Router vom PP Server zugewiesen bekommen hat, damit überhaupt eine Verbindung zum VPN Server möglich ist, da wir hier ja zwei unterschiedliche Netze haben, einmal dein LAN und einmal das VPN Netz.

Kurz und bündig kannst du das ganze also so schreiben:

Code:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -I FORWARD -i br0 -o tun1 -j ACCEPT
iptables -I FORWARD -i tun1 -o br0 -j ACCEPT
iptables -I FORWARD -i br0 -s 192.168.1.xyz -j ACCEPT
iptables -I FORWARD -o br0 -d 192.168.1.xyz -j ACCEPT
iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE

Edit:
Wenn man nur obiges Regelwerk hat, wäre allerdings keine VPN Verbindung vom Router zu einem PP Server mehr möglich. Dafür müsstest du noch die INPUT Chain öffnen, oder du lässt das:

iptables -P INPUT DROP

einfach weg, da ja lediglich vermieden werden soll, dass deine Rechner nicht ohne VPN ins Netz können.
 
Last edited:
Nabend, ich bekomme einfach kein Tun angezeigt.

Das Log spuckt folgendes aus.

Serverlog Clientlog 19700101 00:11:38 I OpenVPN 2.3.0 mips-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Mar 25 2013
19700101 00:11:38 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:16
19700101 00:11:38 W NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
19700101 00:11:38 W WARNING: file '/tmp/openvpncl/client.key' is group or others accessible
19700101 00:11:38 W WARNING: file '/tmp/openvpncl/ta.key' is group or others accessible
19700101 00:11:38 I Control Channel Authentication: using '/tmp/openvpncl/ta.key' as a OpenVPN static key file
19700101 00:11:38 Outgoing Control Channel Authentication: Using 512 bit message hash 'SHA512' for HMAC authentication
19700101 00:11:38 Incoming Control Channel Authentication: Using 512 bit message hash 'SHA512' for HMAC authentication
19700101 00:11:38 Socket Buffers: R=[172032->131072] S=[172032->131072]
19700101 00:11:38 I UDPv4 link local: [undef]
19700101 00:11:38 I UDPv4 link remote: [AF_INET]178.162.209.134:1149
19700101 00:13:08 I [UNDEF] Inactivity timeout (--ping-restart) restarting
19700101 00:13:08 I SIGUSR1[soft ping-restart] received process restarting
19700101 00:13:08 Restart pause 2 second(s)
19700101 00:13:10 W NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
19700101 00:13:10 Socket Buffers: R=[172032->131072] S=[172032->131072]
19700101 00:13:10 I TCP/UDP: Preserving recently used remote address: [AF_INET]178.162.209.134:1149
19700101 00:13:10 I UDPv4 link local: [undef]
19700101 00:13:10 I UDPv4 link remote: [AF_INET]178.162.209.134:1149
19700101 00:14:40 I [UNDEF] Inactivity timeout (--ping-restart) restarting
19700101 00:14:40 I SIGUSR1[soft ping-restart] received process restarting
19700101 00:14:40 Restart pause 2 second(s)
19700101 00:14:42 W NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
19700101 00:14:42 Socket Buffers: R=[172032->131072] S=[172032->131072]
19700101 00:14:42 I TCP/UDP: Preserving recently used remote address: [AF_INET]178.162.209.134:1149
19700101 00:14:42 I UDPv4 link local: [undef]
19700101 00:14:42 I UDPv4 link remote: [AF_INET]178.162.209.134:1149
19700101 00:16:12 I [UNDEF] Inactivity timeout (--ping-restart) restarting
19700101 00:16:12 I SIGUSR1[soft ping-restart] received process restarting
19700101 00:16:12 Restart pause 2 second(s)
19700101 00:16:14 W NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
19700101 00:16:14 Socket Buffers: R=[172032->131072] S=[172032->131072]
19700101 00:16:14 I TCP/UDP: Preserving recently used remote address: [AF_INET]178.162.209.134:1149
19700101 00:16:14 I UDPv4 link local: [undef]
19700101 00:16:14 I UDPv4 link remote: [AF_INET]178.162.209.134:1149
19700101 00:17:02 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:16
19700101 00:17:02 D MANAGEMENT: CMD 'state'
19700101 00:17:02 MANAGEMENT: Client disconnected
19700101 00:17:02 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:16
19700101 00:17:02 D MANAGEMENT: CMD 'state'
19700101 00:17:02 MANAGEMENT: Client disconnected
19700101 00:17:02 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:16
19700101 00:17:02 D MANAGEMENT: CMD 'state'
19700101 00:17:02 MANAGEMENT: Client disconnected
19700101 00:17:02 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:16
19700101 00:17:02 D MANAGEMENT: CMD 'log 500'
19700101 00:00:00
 
@chris2015 Hast du schon versucht ohne Firewallregeln eine Verbindung aufzubauen?
Gib in Additional Config verb 5 Befehl für ausführliche Informationen hinzu und poste bitte nochmal den Log Inhalt:

Code:
verb 5
 
@Gerd da es noch kein freizugebendes Interface gibt, hielt ich die Firewallanpassung noch nicht für relevant.

Serverlog Clientlog 19700101 00:00:26 Current Parameter Settings:
19700101 00:00:26 config = '/tmp/openvpncl/openvpn.conf'
19700101 00:00:26 mode = 0
19700101 00:00:26 NOTE: --mute triggered...
19700101 00:00:26 221 variation(s) on previous 3 message(s) suppressed by --mute
19700101 00:00:26 I OpenVPN 2.3.0 mips-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Mar 25 2013
19700101 00:00:26 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:16
19700101 00:00:26 W NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
19700101 00:00:26 W WARNING: file '/tmp/openvpncl/client.key' is group or others accessible
19700101 00:00:26 W WARNING: file '/tmp/openvpncl/ta.key' is group or others accessible
19700101 00:00:26 I Control Channel Authentication: using '/tmp/openvpncl/ta.key' as a OpenVPN static key file
19700101 00:00:26 Outgoing Control Channel Authentication: Using 512 bit message hash 'SHA512' for HMAC authentication
19700101 00:00:26 Incoming Control Channel Authentication: Using 512 bit message hash 'SHA512' for HMAC authentication
19700101 00:00:26 LZO compression initialized
19700101 00:00:26 Control Channel MTU parms [ L:1606 D:210 EF:110 EB:0 ET:0 EL:0 ]
19700101 00:00:26 Socket Buffers: R=[172032->131072] S=[172032->131072]
19700101 00:00:26 Data Channel MTU parms [ L:1606 D:1300 EF:106 EB:135 ET:0 EL:0 AF:3/1 ]
19700101 00:00:26 Fragmentation MTU parms [ L:1606 D:1300 EF:105 EB:135 ET:1 EL:0 AF:3/1 ]
19700101 00:00:26 Local Options String: 'V4 dev-type tun link-mtu 1606 tun-mtu 1500 proto UDPv4 comp-lzo mtu-dynamic keydir 1 cipher AES-256-CBC auth SHA512 keysize 256 tls-auth key-method 2 tls-client'
19700101 00:00:26 Expected Remote Options String: 'V4 dev-type tun link-mtu 1606 tun-mtu 1500 proto UDPv4 comp-lzo mtu-dynamic keydir 0 cipher AES-256-CBC auth SHA512 keysize 256 tls-auth key-method 2 tls-server'
19700101 00:00:26 Local Options hash (VER=V4): '73c06b87'
19700101 00:00:26 Expected Remote Options hash (VER=V4): 'ad1c1209'
19700101 00:00:26 I UDPv4 link local: [undef]
19700101 00:00:26 I UDPv4 link remote: [AF_INET]178.162.209.134:1149
19700101 00:01:56 I [UNDEF] Inactivity timeout (--ping-restart) restarting
19700101 00:01:56 TCP/UDP: Closing socket
19700101 00:01:56 I SIGUSR1[soft ping-restart] received process restarting
19700101 00:01:56 Restart pause 2 second(s)
19700101 00:01:58 W NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
19700101 00:01:58 Re-using SSL/TLS context
19700101 00:01:58 LZO compression initialized
19700101 00:01:58 Control Channel MTU parms [ L:1606 D:210 EF:110 EB:0 ET:0 EL:0 ]
19700101 00:01:58 Socket Buffers: R=[172032->131072] S=[172032->131072]
19700101 00:01:58 I TCP/UDP: Preserving recently used remote address: [AF_INET]178.162.209.134:1149
19700101 00:01:58 Data Channel MTU parms [ L:1606 D:1300 EF:106 EB:135 ET:0 EL:0 AF:3/1 ]
19700101 00:01:58 Fragmentation MTU parms [ L:1606 D:1300 EF:105 EB:135 ET:1 EL:0 AF:3/1 ]
19700101 00:01:58 Local Options String: 'V4 dev-type tun link-mtu 1606 tun-mtu 1500 proto UDPv4 comp-lzo mtu-dynamic keydir 1 cipher AES-256-CBC auth SHA512 keysize 256 tls-auth key-method 2 tls-client'
19700101 00:01:58 Expected Remote Options String: 'V4 dev-type tun link-mtu 1606 tun-mtu 1500 proto UDPv4 comp-lzo mtu-dynamic keydir 0 cipher AES-256-CBC auth SHA512 keysize 256 tls-auth key-method 2 tls-server'
19700101 00:01:58 Local Options hash (VER=V4): '73c06b87'
19700101 00:01:58 Expected Remote Options hash (VER=V4): 'ad1c1209'
19700101 00:01:58 I UDPv4 link local: [undef]
19700101 00:01:58 I UDPv4 link remote: [AF_INET]178.162.209.134:1149
19700101 00:03:28 I [UNDEF] Inactivity timeout (--ping-restart) restarting
19700101 00:03:28 TCP/UDP: Closing socket
19700101 00:03:28 I SIGUSR1[soft ping-restart] received process restarting
19700101 00:03:28 Restart pause 2 second(s)
19700101 00:03:30 W NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
19700101 00:03:30 Re-using SSL/TLS context
19700101 00:03:30 LZO compression initialized
19700101 00:03:30 Control Channel MTU parms [ L:1606 D:210 EF:110 EB:0 ET:0 EL:0 ]
19700101 00:03:30 Socket Buffers: R=[172032->131072] S=[172032->131072]
19700101 00:03:30 I TCP/UDP: Preserving recently used remote address: [AF_INET]178.162.209.134:1149
19700101 00:03:30 Data Channel MTU parms [ L:1606 D:1300 EF:106 EB:135 ET:0 EL:0 AF:3/1 ]
19700101 00:03:30 Fragmentation MTU parms [ L:1606 D:1300 EF:105 EB:135 ET:1 EL:0 AF:3/1 ]
19700101 00:03:30 Local Options String: 'V4 dev-type tun link-mtu 1606 tun-mtu 1500 proto UDPv4 comp-lzo mtu-dynamic keydir 1 cipher AES-256-CBC auth SHA512 keysize 256 tls-auth key-method 2 tls-client'
19700101 00:03:30 Expected Remote Options String: 'V4 dev-type tun link-mtu 1606 tun-mtu 1500 proto UDPv4 comp-lzo mtu-dynamic keydir 0 cipher AES-256-CBC auth SHA512 keysize 256 tls-auth key-method 2 tls-server'
19700101 00:03:30 Local Options hash (VER=V4): '73c06b87'
19700101 00:03:30 Expected Remote Options hash (VER=V4): 'ad1c1209'
19700101 00:03:30 I UDPv4 link local: [undef]
19700101 00:03:30 I UDPv4 link remote: [AF_INET]178.162.209.134:1149
19700101 00:03:58 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:16
19700101 00:03:58 D MANAGEMENT: CMD 'state'
19700101 00:03:58 MANAGEMENT: Client disconnected
19700101 00:03:58 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:16
19700101 00:03:58 D MANAGEMENT: CMD 'state'
19700101 00:03:58 MANAGEMENT: Client disconnected
19700101 00:03:58 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:16
19700101 00:03:58 D MANAGEMENT: CMD 'state'
19700101 00:03:58 MANAGEMENT: Client disconnected
19700101 00:03:58 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:16
19700101 00:03:58 D MANAGEMENT: CMD 'log 500'
19700101 00:00:00
 
Wie siehts mit bei einem anderen Server aus?

Code:
19700101 00:01:58 I UDPv4 link remote: [AF_INET]178.162.209.134:1149
19700101 00:03:28 I [UNDEF] Inactivity timeout (--ping-restart) restarting
Hier funktioniert etwas nicht.
 
Unter der IP Port Kombi klappt das bei mir unter OSX ebenso nicht, probiere in der Config zb mal IP 178.162.194.30 mit Port 1149, das klappte bei mir.
 
Ich habe bereits die nächste IP getestet, das Ergebnis war das selbe, ebenfalls habe ich sowohl auf dem dd-wrt Netgear als auch auf der "Unitymedia Fritzbox" den UDP Port freigegeben.

Edit: @JackCarver auch mit deinem IP-Vorschlag hat es nicht funktioniert, ist allerdings auch kein OSX.
 
Last edited:
Das Log von OpenVPN sagt leider zu wenig aus, evtl findet sich ja unter den Linux Logs was brauchbareres. Meist sind die unter /var/log zu finden.

Überprüfe auch mal ob alle nötigen Dateien, wie Zertifikate oder Schlüssel, vorhanden sind und die korrekten Rechte besitzen. In letzterem Punkt gibt es ab und an ebenfalls Probleme. In deinem Log zeigt er diesbezüglich schon mal 2 Warnungen an.
 
@chris2015 aus deinem Beitrag entnehme ich das ein Netgear Router hinter einem Unitymedia Fritzbox Router hängt.
Hast du unter "DD-WRT-> Basic-> Basic Setup-> WAN Setup-> Connection Type-> Automatic Configuration DHCP" ausgewählt?
Haben die Router unterschiedliche IPs?
Kannst du auf die zwei Router mit unterschiedlichen IPs zugreifen?
 
@Gerd Genau.
Nein WAN habe ich nicht, bzw im laufe des Probierens deaktiviert.
Unterschiedliche IP's haben sie und Zugriff so wie alles andere funktioniert wie es soll.
 
Also wenn JackCarver schon sagt das OpenVPN Log zu wenig aussagt, dann könnte das Problem überall liegen (selbst bei der DD-WRT Version).
Du könntest noch die Bilder von der Konfiguration posten, aber ich gehe davon aus das auch dort alles richtig eingestellt ist.
Wenn Du oder andere keine Lösung finden, dann würde ich an deiner Stelle es mit OpenWRT versuchen.
 
@Gerd @JackCarver
Ich habe die Zertifikate ja nicht direkt hinterlegt sondern nur die Schlüssel kopiert, ich nehme an ihr redet von SSH Zugriff auf den Router?

Edit: SSH ist unter Administration/Remote Access deaktiviert und ausgegraut.

Edit2: Ist es egal welche Datei ich verwende? Allein unter Android finden sich ja 4 verschieden Varianten.
 
Last edited:
Schönen guten Tag.

Ich habe jetzt ein WRT1900ACS und dort erfolgreich DD-WRT geflasht.
Dann habe ich ein OpenVPN Server eingerichtet und meine PP Daten dort eingetragen.
Funktioniert alles soweit. Bekomme so 1,3-1,5 MB/s von 1,9 MB/s und wollte deshalb mal zum Testen TCP ausprobieren.
Wenn ich im Router auf Services und VPN gehe und dort den Port und Typ auf TCP ändern funktioniert keine Verbindung mehr.
In welchen Optionen muss ich nun noch Hand anlegen damit ich eine OpenVPN Verbindung über TCP einstellen kann.

Mfg
 
Ich habe die Zertifikate ja nicht direkt hinterlegt sondern nur die Schlüssel kopiert,

Ist ja auch richtig so. Du brauchst dich nur nach der Anleitung im ersten Post zu richten. Was JackCarver vermutlich meinte, das Du die Schlüssel an falsche Stelle kopiert hast.

Edit: Beziehungsweise falsche Schlüssel einfach kopiert.

ich nehme an ihr redet von SSH Zugriff auf den Router?

Das ist auch eine Möglichkeit. Man kann SSH und JFFS2 (bei der richtigen DD-WRT Version) aktivieren und die Zertifikate als Datei ablegen, aber das ist wesentlich komplizierter. Die Konfiguration über Browser (also nach der Anleitung) muss ausreichen.
 
Last edited:
@Feli für TCP braucht man eine andere Konfiguration.

Port-> “1152
Tunnel Protocol“-> “TCP
“Tunnel UDP Fragment“-> (leer lassen)
“Bei Additional Config ein Befehl noch hinzufügen“:

Code:
key-direction 1
 
@Gerd
Wenn ich diese 4 Optionen ändere tut sich bei dem Aufbau von OpenVPN gar nix.
Nehme ich diese Optionen zurück läuft es wieder.
Reboot habe ich durchgeführt.
 
Back
Top