Startseite Remote Access mit Wireguard unter VyOS
Eintrag
Abbrechen

Remote Access mit Wireguard unter VyOS

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

Netzwerkplan

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.