Site-to-Site VPN: Unifi USG <-> Ubitquiti Edge Router

Wie ich in meinem letzten Artikel schon erwähnt habe, werkelt bei meinen Eltern ein EdgeRouter. Aktuell hatte ich für das StS VPN immer einen Debian Server mit OpenVPN als VM laufen – mit dem USG sollte sich das ändern. Also habe ich mich heute mal an die Konfiguration gemacht.

Mein erster Gedanke war: Ab in den Unifi Controller und flux das Remote-Netzwerk anlegen… leider falsch Gedacht. Dort geht das zwar theoretisch, aber eigentlich nur mit IPSec VPN. Die Besonderheit an meinem VPN ist, dass nur eine Site eine IPv4 Adresse hat, daher auch immer von der anderen Site initiiert werden muss.
Trotzdem kann man es aber auf dem USG einrichten, wie erfahrt ihr hier:

Vorbereitungen

Als erstes braucht ihr natürlich die Konfiguration auf der Edge-Router Seite. Das ist realtiv einfach und auch gut von Ubiquiti beschrieben. Also per SSH auf den EdgeRouter verbinden, den Shared Key erstellen und das OpenVPN Interface anlegen:

generate vpn openvpn-key /config/auth/secret

set interfaces openvpn vtun1
set interfaces openvpn vtun1 mode site-to-site
set interfaces openvpn vtun1 local-port 1195
set interfaces openvpn vtun1 remote-port 1195
set interfaces openvpn vtun1 local-address 10.99.99.3
set interfaces openvpn vtun1 remote-address 10.99.99.4
set interfaces openvpn vtun1 shared-secret-key-file /config/auth/secret
set interfaces openvpn vtun1 openvpn-option "--comp-lzo"
set interfaces openvpn vtun1 openvpn-option "--float"
set interfaces openvpn vtun1 openvpn-option "--ping 10"
set interfaces openvpn vtun1 openvpn-option "--ping-restart 20"
set interfaces openvpn vtun1 openvpn-option "--ping-timer-rem"
set interfaces openvpn vtun1 openvpn-option "--persist-tun"
set interfaces openvpn vtun1 openvpn-option "--persist-key"
set interfaces openvpn vtun1 openvpn-option "--user nobody"
set interfaces openvpn vtun1 openvpn-option "--group nogroup"
set protocols static interface-route 192.168.15.0/24 next-hop-interface vtun1
Wichtig ist, dass ihr euch die Datei /config/auth/secret bzw. den Inhalt kopiert.
Anschließend speichern und abmelden
commit
save
exit
Als nächstes müssen wir auf dem Unifi Controller manuelle Konfigurationen des USG erlauben. Dazu per SCP z.B. verbinden und die Datei config.gateway.json in der Site Configuration (/var/lib/unifi/sites/<SiteName>/) anlegen
Der Inhalt der Datei legt fest, wo die OpenVPN Konfiguration für das Interface vtun0 liegt:
{
	"interfaces": {
                "openvpn": {
                        "vtun0": {
                                "config-file": "/config/ovpn/site1-udp-1195.ovpn"
                        }
                }
	}
}

Konfiguration des USG

Nun können wir uns dem USG zuwenden – hier via SSH oder SCP die OpenVPN Config anlegen


# Remote server to connect to. Can be domain name or IP address.
remote site1.mydyn.domain.de

# Protocol and Port - Must be the same on both server and client.
proto udp
port 1195

ifconfig 10.99.99.4 10.99.99.3
secret /config/auth/secret
route 192.168.17.0 255.255.255.0

# Use a persistent key and tunnel interface.
persist-tun
persist-key

# keeping a connection through a NAT router/firewall alive, andfollow the DNS name of the server if it changes its IP address.
#keepalive 10 60
ping-timer-rem
float
ping 10

# Compresssion
comp-lzo

Wichtig ist, dass ihr anschließend das Secret von oben nach /config/auth/secret kopiert.

Das war’s! Nun muss das USG neu provisioniert oder neugestartet werden. Hierzu könnt ihr z.B. eine Portweiterleitung anlegen. Anschließend wird der Tunnel aufgebaut.

Falls es nicht funktioniert, werden die Fehler im Syslog protokolliert:


tail -f /var/log/messages

Aus der Serie…