Wireguard ist eine Software zum Aufbau von verschlüsselten Verbindungen. Die Software ist ab Linux Kernel 5.6 direkt im Kern eingebaut und erlaubt somit höhere Verarbeitungsgeschwindigkeiten im Vergleich zu IPSec oder OpenVPN.
VyOS Router sind in der Lage, Remote Access VPN über das Wireguard Protokoll zu ermöglichen. Im folgenden Beispiel wird die Topologie vom Site-2-Site Tunnel erweitert.
Topologie

Erweiterung der Konfiguration von WG-R1
Auf WG-R1 wird das Interface wg1 für Remote-Access eingerichtet, der Wireguard Dienst läuft auf Port 2224.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
vyos@wgr1# run generate pki wireguard key-pair install interface wg1
vyos@wgr1# show interfaces wireguard wg1
address 10.40.0.1/24
description Remote-VPN
mtu 1420
peer RemoteVPN {
allowed-ips 0.0.0.0/32
persistent-keepalive 15
public-key NVWMpPecjOMhczxXOj9+bEiPfgvBBx9b9FRgaRNWf3M=
}
port 2224
private-key 2BL+aYPsxkf89lOnDhJqIhAh/qjhS1I98jn6oyFwkFw=
Client Konfiguration erstellen
Mittels folgenden Befehl werden Konfigurationen sowohl für Router als auch für den Client erstellt:
1
generate wireguard client-config remote1 interface wg1 server 172.23.20.11 address 10.40.0.2/24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WireGuard client configuration for interface: wg1
To enable this configuration on a VyOS router you can use the following commands:
=== VyOS (server) configurtation ===
set interfaces wireguard wg1 peer remote1 allowed-ips '10.40.0.2/32'
set interfaces wireguard wg1 peer remote1 public-key 'hF0DUTJd71U8dBn5RiF1RW8LsnH5oHZGbUR+pnmWvXo='
=== RoadWarrior (client) configuration ===
[Interface]
PrivateKey = AC+077T2NP4iJMKzDp70NlOdQzfGIBOBRv2sWt4fW3c=
Address = 10.40.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = NVWMpPecjOMhczxXOj9+bEiPfgvBBx9b9FRgaRNWf3M=
Endpoint = 172.23.20.11:2224
AllowedIPs = 0.0.0.0/0, ::/0
Beide set Befehle müssen auf dem Router noch ausgeführt werden.
Anschließend kann die Konfiguration des Routers bereinigt werden:
1
delete interfaces wireguard wg1 peer RemoteVPN
Diese wurde nur zum initialisieren auf wg1 benötigt.
Die finale Konfiguration sieht folgendermaßen aus:
1
2
3
4
5
6
7
8
9
10
11
yos@wgr1# show interfaces wireguard wg1
address 10.40.0.1/24
description Remote-VPN
mtu 1420
peer remote1 {
allowed-ips 10.40.0.2/32
persistent-keepalive 15
public-key hF0DUTJd71U8dBn5RiF1RW8LsnH5oHZGbUR+pnmWvXo=
}
port 2224
private-key 2BL+aYPsxkf89lOnDhJqIhAh/qjhS1I98jn6oyFwkFw=
Linux Client anpassen
Zum Test wird ein Rechner mit Alpine Linux verwendet.
1
2
apk add wireguard-tools
modprobe wireguard
1
cd /etc/wireguard
vi wg0.conf
1
2
3
4
5
6
7
8
9
10
[Interface]
PrivateKey = AC+077T2NP4iJMKzDp70NlOdQzfGIBOBRv2sWt4fW3c=
Address = 10.40.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = NVWMpPecjOMhczxXOj9+bEiPfgvBBx9b9FRgaRNWf3M=
Endpoint = 172.23.20.11:2224
AllowedIPs = 0.0.0.0/0, ::/0
1
wg-quick up wg0
Der sollte sich der Client eingewählt haben. Jetzt sollte noch der Zugriff auf das LAN hinter dem zweiten Router WG-R2 ermöglicht werden.
Erweiterung der Konfiguration von WG-R2
Der VPN-Pool muss in den erlaubten IPs des Peers eingetragen werden.
1
set interfaces wireguard wg0 peer WG-R1 allowed-ips 10.40.0.0/24
Die Route muss statisch nachgetragen werden.
1
set protocols static route 10.40.0.0/24 interface wg0
Damit kann WG-R2 den Client pingen.
1
2
3
4
5
yos@wgr2# run ping 10.40.0.2
PING 10.40.0.2 (10.40.0.2) 56(84) bytes of data.
64 bytes from 10.40.0.2: icmp_seq=1 ttl=63 time=2.25 ms
64 bytes from 10.40.0.2: icmp_seq=2 ttl=63 time=3.58 ms
64 bytes from 10.40.0.2: icmp_seq=3 ttl=63 time=3.52 ms
Die Konfiguration ist somit abgeschlossen.