So ich habe ein weiteres Router-Projekt verwirklicht.
Hier war das Ziel von mehreren Clientroutern eine VPN-Verbindung zu einem Server-Router auf zu bauen.
Als Anleitung habe ich mich an
http://wiki.openwrt.org/inbox/vpn.howto und
http://wiki.openwrt.org/doc/howto/vpn.c ... penvpn.tun gehalten.
Zum Einsatz kam das neue CC als RC1. Gleich hier hatte ich bei meinem C5 ein Problem, dass nicht alle WLAN-Netze genutzt werden konnten. Lösung: kmod-ath10k nachinstallieren. Aktuell ist von CC die RC2 (aber Achtung dort fehlt die Weboberfläche LUCI). Wer hier eine Neuinstallation macht steht anschließend vor dem Problem sich nicht Anmelden zu könnnen, da der Root-Account kein Passwort hat funktioniert auch die SSH-Anmeldung nicht. Hier hilft dann nur der FailSafe-Boot mit anschließendem Telnet-Login weiter um das Passwort zu setzen...
Das eigentliche VPN ging dann recht zügig:
VPN und SSL Packete nachinstallieren, CA-erstellen, Server-key und für jeden Client einen Key erstellen. Die VPN-config anpassen und fertig.
Im Detail sind dies für den Server:
[*] /etc/easy-rsa/vars ändern
Code: Alles auswählen
export KEY_COUNTRY="DE"
export KEY_PROVINCE="Hessen"
export KEY_CITY="Frankfurt am Main"
export KEY_ORG="Firma X"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="IT-Abteilung"
[*] clean-all (optional ausführen um Verzeichnis /etc/easy-rsa/keys komplett zu leeren [rm -rf *])
[*] Zertifikate erstellen mit build-ca und build-dh
[*] Serverkey erstellen mit build-key-server server
[*] Die Datei /etc/openvpn/server.ovpn mit folgendem Inhalt
Code: Alles auswählen
mode server
tls-server
### network options
port 1194
proto udp
dev tun
### Certificate and key files
ca /etc/easy-rsa/keys/ca.crt
cert /etc/easy-rsa/keys/server.crt
key /etc/easy-rsa/keys/server.key
dh /etc/easy-rsa/keys/dh2048.pem
crl-verify /etc/easy-rsa/keys/crl.pem
tls-auth /etc/easy-rsa/keys/ta.key 0
client-to-client
server 10.0.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 192.168.1.1" # Change this to your router's LAN IP Address
push "route 192.168.1.0 255.255.255.0" # Change this to your network
push "route 192.168.11.0 255.255.255.0" # internes netz
topology subnet
max-clients 35
### (optional) compression (Can be slow)
comp-lzo
persist-key
persist-tun
verb 3
keepalive 10 120
#log-append /tmp/openvpn.log
[*] In der Datei /etc/network einfügen:
Code: Alles auswählen
config interface 'VPN'
option ifname 'tun0'
option _orig_ifname 'tun0'
option _orig_bridge 'false'
option proto 'none'
[*] In der Datei /etc/firewall einfügen:
Code: Alles auswählen
config rule
option target 'ACCEPT'
option name 'VPN'
option src 'wan'
option proto 'udp'
option dest_port '1194'
config zone
option input 'ACCEPT'
option output 'ACCEPT'
option name 'vpn'
option network 'VPN'
option forward 'ACCEPT'
config forwarding
option dest 'Intern'
option src 'vpn'
config forwarding
option dest 'lan'
option src 'vpn'
config forwarding
option dest 'wan'
option src 'vpn'
config forwarding
option dest 'vpn'
option src 'lan'
Für jedes VPN-Clientsystem sind folgende Änderungen nötig:
[*] auf dem VPN-Server build-key [client-name] ausführen
[*] UPLOAD der Dateien ca.crt, client.crt, client.key, ta.key und dh2048.pem vom Server zum Client
[*] Auf dem Client die Datei client.ovpn in /etc/openvpn mit dem folgenden Inhalt erstellen:
Code: Alles auswählen
client
tls-client
tls-auth ta.key 1
dev tun
proto udp
remote 555.555.555.555 1194 # Change to your router's External IP
resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
dh dh2048.pem
comp-lzo
persist-tun
persist-key
verb 3
#log /tmp/openvpn.log
mute 10
ns-cert-type server
[*] in /etc/config/openvpn einfügen:
Code: Alles auswählen
config openvpn 'custom_client'
option config '/etc/openvpn/client.ovpn'
option enabled '1'
[*] in /etc/config/network einfügen:
Code: Alles auswählen
config interface 'vpn'
option ifname 'tun0'
option defaultroute '0'
option peerdns '0'
option proto 'none'
config route
option interface 'vpn'
option target '192.168.11.0'
option netmask '255.255.255.0'
option gateway '10.0.0.1'
[*] n /etc/config/firewall einfügen:
Code: Alles auswählen
config zone
option input 'ACCEPT'
option output 'ACCEPT'
option name 'VPN'
option forward 'ACCEPT'
option network 'vpn'
option masq '1'
config forwarding
option dest 'lan'
option src 'VPN'
config forwarding
option dest 'VPN'
option src 'lan'
Als kleines Bonbon habe ich beim VPN-Server alle 3 Projekte kombiniert, also WLAN, USB-Stick als Bootmedium und VPN ...
Ein Problem, dass sich insbesondere bei Routern an modernen VDSL oder Kabel Anschlüssen schnell ergeben kann ist, dass die SoC/CPU Rechenleistung nicht ausreicht um die zur Verfügung stehende Internetbandbreite vollständig auszunutzen. Bei den von mir genutzten VPN-Clients (TP-LInk Archer C7 = 1x 750Mhz) ergab sich eine maximal nutzbare Bandbreite von Rund 25Mbit/s.