OpenVPN unter DD-WRT einrichten

Aus Laub-Home Wiki

DD-WRT bring von Haus aus schon openvpn mit. Ich habe dennoch auf das einrichten in der WEBGUI verzichtet, da ich mit dem Router Site2Site VPNs, Client VPNs wie auch zur Einwahl meiner Clients, also als VPN Server nutzen will. Deshalb hier kurz meine Vorgehensweise:

VPN Server

damit sich Clients in mein Netzwerk einwählen können, hab ich folgende Config verwendet:
/jffs/etc/openvpn/server.conf

dev tun0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
fast-io
proto udp
port 1194
daemon OVPN_ClientVPN
tls-server
ca /jffs/etc/openvpn/ca/cacert.pem
cert /jffs/etc/openvpn/certs/servercert.pem
key /jffs/etc/openvpn/certs/serverkey.pem
dh /jffs/etc/openvpn/ca/dh1024.pem
server 192.168.70.0 255.255.255.0
push "route 192.168.10.0 255.255.255.0"
client-to-client
keepalive 10 60
status-version 1
cipher AES-256-CBC
comp-lzo
max-clients 100
mtu-disc yes
crl-verify /jffs/etc/openvpn/crls/cacrl.pem
persist-key
persist-tun
verb 1

Die dazugehörigen Keys habe ich natürlich auch unter /jffs/etc/openvpn/ abgelegt.
Gestartet wird das ganze via Startup Skript in der WebGui unter Administration --> Diagnose.

/usr/sbin/openvpn --config /jffs/etc/openvpn/server.conf

Die dazugehörigen Firewallrules werden unter Administration --> Diagnose dem Firewall Skript hinzugefügt:

# Öffnet den Port von Außen zum OpenVPN Server
iptables -I INPUT 2 -p udp --dport 1194 -j ACCEPT
# Erlaubt den Traffic vom VPN auf das Interne Netz und umgekehrt
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
# Erlaubt den Traffic vom Router ind VPN
iptables -I INPUT -i tun0 -j ACCEPT

Aktivieren kann man das ganze mittels Router Reboot.

Site2Site VPN

Standort A

/jffs/etc/openvpn/site2site1/site2site1.conf

dev tun1
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
fast-io
proto udp
port 1195
ifconfig 192.168.71.1 192.168.71.2
remote standordB.domain.tld
tls-server
ca /jffs/etc/openvpn/ca/cacert.pem
cert /jffs/etc/openvpn/certs/servercert.pem
key /jffs/etc/openvpn/certs/serverkey.pem
dh /jffs/etc/openvpn/ca/dh1024.pem
route 192.168.12.0 255.255.255.0
keepalive 10 60
cipher DES-EDE3-CBC
verb 1
daemon OVPN_Site2Site1VPN

Auch hier liegen die Keys wieder im selben Ordner wie die Konfigurationsdatei. Startup des ganzen wie beim VPN Server unter Administration --> Diagnose --> Startup Skript:

/usr/sbin/openvpn --config /jffs/etc/openvpn/site2site1/site2site1.conf

und die dazugehörigen Firewall Rules:

# Öffnet den Port von Außen zum OpenVPN Server
iptables -I INPUT 2 -p udp --dport 1195 -j ACCEPT
# Erlaubt den Traffic vom VPN auf das Interne Netz und umgekehrt
iptables -I FORWARD -i br0 -o tun1 -j ACCEPT
iptables -I FORWARD -i tun1 -o br0 -j ACCEPT
# Erlaubt den Traffic vom Router ind VPN
iptables -I INPUT -i tun1 -j ACCEPT

Standort B

/jffs/etc/openvpn/site2site1/site2site1.conf

dev tun0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
fast-io
proto udp
port 1195
ifconfig 192.168.71.2 192.168.71.1
remote standortA.domain.tld
tls-client
pkcs12 /jffs/etc/openvpn/site2site1/site2site1.p12
route 192.168.10.0 255.255.255.0
keepalive 10 60
cipher DES-EDE3-CBC
verb 1
daemon OVPN_Site2Site1

Auch hier liegen die Keys wieder im selben Ordner wie die Konfigurationsdatei. Startup des ganzen wie beim VPN Server unter Administration --> Diagnose --> Startup Skript:

/usr/sbin/openvpn --config /jffs/etc/openvpn/site2site1/site2site1.conf

und die dazugehörigen Firewall Rules:

# Öffnet den Port von Außen zum OpenVPN Server
iptables -I INPUT 2 -p udp --dport 1195 -j ACCEPT
# Erlaubt den Traffic vom VPN auf das Interne Netz und umgekehrt
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
# Erlaubt den Traffic vom Router ind VPN
iptables -I INPUT -i tun0 -j ACCEPT

VPN Client

/jffs/etc/openvpn/client1/client1.conf

client
dev tun3
proto udp
remote server.domain.tld 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /jffs/etc/openvpn/client1/ca.crt
cert /jffs/etc/openvpn/client1/client1.crt
key /jffs/etc/openvpn/client1/client1.key
ns-cert-type server
comp-lzo
verb 1
keepalive 10 60
daemon OVPN_Client1

Die Keys wieder im selben Ordner ablegen und den Startup und die FW Rules einbauen.
Startup:

/usr/sbin/openvpn --config /jffs/etc/openvpn/client1/client1.conf

Firewall Rules:

iptables -t nat -A POSTROUTING -o tun3  -j MASQUERADE

Die MASQUERADE Rule sorgt dafür das alle Clients im Netz auf den entfernten PC zugreifen können.