OPNsense: WireGuard VPN
WireGuard Grundlagen: uwe-kernchen.de/phpmyfaq/index.php?solution_id=1380
Beispiel-Daten:
Tunnelnetz: 10.10.10.0/24
Standort A:
- OPNsense-A Version:25.1.1
- IP-Netz: 192.168.10.0/24
- IP Tunnelnetz: 10.10.10.1
1) WireGuard Instance auf OPNsense-A einrichten -> WG-Server
- VPN –> WireGuard –> Instances: “Enable WireGuard” + Apply
- Add Instance
- Name: “wg-server-51820”
- Public/Private-Keypair erzeugen lassen (auf das Zahnradsymbol klicken).
- Listen port: 51820/udp (o.a.)
- Tunnel address: erste IP-Adresse des Transfer-Netzes (Bsp: 10.10.10.1/24)
- Peers: Nothing
- Save.
Jeder WireGuard-Server kann mehrere Clients (Peers) beinhalten. Man benötigt also bei mehreren Clients nur einen WireGuard-Server.
Haben Verbindungen abweichende Ports, muß dafür ein separater Server erstellt werden.
2) WireGuard Peer auf der OPNsense-A einrichten (Peer generator) -> WG-Client
- VPN –> WireGuard –> Peer generator
- Instance <wg-server-51820> aus Punkt 1 wählen
- Endpoint: 170.5.40.3:51820 (Endpoint address:Port von OPNsense A)
- Name: “Handy-1”
- Public/Private-Keypair erzeugen lassen (auf das Zahnradsymbol klicken).
- Address: 10.10.10.2/32 (Tunnel-IP der Nebenstelle)
- Pre-shared key: optional
- Allowed IPs: 192.168.10.0/24 (IP-Netze der eigenen Seite, alles erlaubt: 0.0.0.0/0)
- Keepalive interval: 25
- Config kopieren, QR-Code sichern
- Save + Apply
Diese Konfig kann man nun für einen Client nutzen.
Weitere Clients einrichten: Tunnel-Address hoch zählen, neuen Name vergeben, sonst identisch.
3) Assign und Enable WG-Interface "wg"
(bei Client - Server nicht erforderlich)
- Interface - Assign - WG-Server + Enable
- Interface -> WAN:
- Block private networks: deaktivieren
- Block bogon networks: deaktivieren
4) Firewall
Rule "WireGuard (Group) gilt für alle WireGuard-Instanzen.
- Zugriff von der Gegenstelle zum LAN:
Rule ALLOW, Interface: "wg" (wenn Interface Assigned) oder "WireGuard (Group)",
Source: "WG net" oder “Single host or Network” auswählen und IP-Netz der Gegensteite (192.168.0.0/24) - Zugriff vom LAN auf die Gegenstelle erlauben
Rule ALLOW, Interface: LAN
Source: “Single host or Network” auswählen und lokales IP-Netz (192.168.100.0/24)
Destination: “Single host or Network” auswählen und IP-Netz der Gegenseite (192.168.0.0/24) - Nur für die Server-Seite:
Rule ALLOW, Interface: WAN, Protocol: UDP,
Source: “Single host or Network” auswählen und wenn vorhanden: feste öffentliche IP der Gegenstelle eintragen. Bei dynamischen Adressen “WAN network” auswählen.
Destination: "WAN address" oder “Single host or Network” auswählen und lokales IP-Netz (192.168.100.0/24)
Dest.Port= 51820
“Normalization rule” anlegen
- Firewall –> Settings –> Normalization:” Add Setting
- Interface: WireGuard (Group)
- Direction, Protocol, Source, Destinateion: any
- Description: “Wireguard MSS Clamping Site A”
- Max mss: 1380 oder weniger (“subtract at least 40 bytes from the Wireguard MTU”)
- Save + Apply changes
5) Test
- VPN -> WireGuard -> Status zeigt:
* Wireguard-Server Instance (up)
* WG Peer(s) (zeigt bei Verbindung last Handshake und Traffic)
Standort B: (Beispiel-Daten)
- OPNsense-B 25.1.1
- IP-Netz: 192.168.20.0/24
- IP Tunnelnetz: 10.10.10.2
1) WireGuard Instance auf OPNsense-A einrichten - Server A
siehe Punkt 1) oben
2) WireGuard Instance auf OPNsense-B einrichten - Server B
- VPN –> WireGuard –> Instances: “Enable WireGuard” + Apply
- Add Instance
- Name: “wg-server-b”
- Public/Private-Keypair erzeugen lassen (auf das Zahnradsymbol klicken).
- Listen port: 51820/udp (o.a.)
- Tunnel address: freie IP-Adresse des Transfer-Netzes (Bsp: 10.10.10.2/24)
- Save.
3) WireGuard Peer auf der OPNsense-A einrichten (ohne Peer generator)
(Client für OPNsense B)
- VPN –> WireGuard –> Peers
- Name: “wg-peer-zu-opnsense-b”
- Public Key: Kopiere public key von Instanz der OPNsense-B
- Pre-shared key: optional
- Allowed IPs: 10.10.10.2/32 and 192.168.20.0/24 (Tunnel-Adresse und LAN address range der OPNsense-B) => Routen zur Seite B
- Endpoint address: 10.1.102.252 (Public WAN IP)
- Endpoint port: 51820 (o.a.)
- Instances <wg-server-51820>
- Keepalive interval: 25
- Save + Apply
4) WireGuard Peer auf der OPNsense-B einrichten (ohne Peer generator)
(Client für OPNsense A)
- wie Punkt 3)
- Name: “wg-peer-zu-opnsense-a”
- Public Key: Kopiere public key von Instanz der OPNsense-A
- Allowed IPs: 10.10.10.1/32 and 192.168.10.0/24 => Routen zur Seite A
- Instances <wg-server-b>
5) Assign und Enable WG-Interface "wg"
(wie Punkt 3) oben, auf beiden Seiten)
6) Firewall
(wie Punkt 4) oben, auf beiden Seiten)
7) Test
- VPN -> WireGuard -> Status - wie oben (auf beiden Seiten)
- PING auf Transfernetz und LAN Gegenseite