VPN Wireguard Verbindung an MikroTik Router
Der MicroTik-Router als Verbindungs-Empfänger muß eine feste IP haben und der verwendete UDP-Port muss beim Router ankommen.
Wireguard ist OpenSource und für jedes gängige Betriebssystem kostenfrei verfügbar.
(Bsp.LAN: 192.168.200.1)
- Voraussetzung: Internetverbindung und offener UDP-Port
- Wireguard -> Wireguard -> neu: Wireguard-Interface/Servername, MTU (1420), Listen Port: 51820 -frei festlegbar (UDP 49152-65535)
* pro UDP-Port kann nur ein Wireguard-Server angelegt werden
* pro Router genügt ein Wireguard-Server, wenn man nicht verschiedene Ports nutzen möchte - beim Aktivieren wird automatisch ein (unsichtbarer) Private Key und ein (kopierbarer) Public Key erstellt
- IP -> Addresses: neues Wireguard Tunnel-LAN anlegen: Address(Server): 192.168.200.1/24, (Network: 192.168.200.0), Interface: Servername von oben
- IP -> Firewall (UDP-Port erlauben): Input - Protocol:UDP - Dst.Port:51820 - In.Interface (WAN) wählen, Accept
- IP -> Firewall (LAN, Host oder ALL erlauben): Forward - In.Interface: Wireguard-Server, Out.Interface: LAN/Bridge, Accept
- NAT muß für die Wireguard-Verbindung aus sein (srcnat für VPN-Quell- und VPN-Zielnetz, action= accept)
- IP -> Routes: Neue Route zum Wireguard-LAN, Gateway: %wireguard-server, Dst.Address: 192.168.200.0/24
- Test: bei erfolgreicher Verbindung laufen Verbindungs-Bytes hoch
(Bsp: 192.168.200.10)
Für jede Gegenstelle muß ein Peer angelegt werden, dass dem Client eine eigene IP (Allowed IPs) zuweist und den Public-Key der Verbindung enthält.
- Wiregard -> Peers -> neu:
- Interface: Servername von oben,
- Public Key: PK der Gegenseite,
(Alternativ: Wireguard-Tool (unten) erzeugt offline Schlüsselpaar) - Endpoint Port: UDP-Port vom Server der Gegenseite,
- Allowed Addresses: 192.168.200.10/32 (statische Adresse des Clients im Wireguard-LAN)
Bei LAN-LAN müssen hier alle erlaubten Netze rein, die über den Tunnel erreichbar sein sollen, kann auch 0.0.0.0/0 (alle) sein. (Firewall+Route!) - Keepalive: (25s)
- Test: bei erfolgreicher Verbindung laufen Verbindungs-Bytes hoch
(Bsp: 192.168.200.10)
- Wireguard-Client laden
- neue Verbindung - manuell erstellen
- beliebiger Verbindungsname
- Privater Schlüssel (wird automatisch erstellt)
- Öffentl. Schlüssel: Key in Router -> Wireguard Peer -> Public Key kopieren
- Adressen: Client Adresse (192.168.200.10/32)
- Nameserver: ggf. Wireguard-Server/Router (192.168.200.1)
- Öffentl. Schlüssel: PK des Routers aus Wireguard -> Wireguard
- Erlaubte IPs: 0.0.0.0/0 schicke gesamten Traffic in den Tunnel (oder alle zu erreichenden Netze, siehe .conf unten)
- Endpunkt: Einwahlpunkt IP der Gegenseite +Doppelpunkt:Port! 1.2.3.4:51820 (wie oben)
(Bsp.-IPs siehe Skizze)
- Router1: Wireguard-Server einrichten wie oben
- Router2: Wireguard-Server einrichten wie oben
Anmerkung: pro Router genügt ein Wireguard-Server, falls nicht unterschiedliche Ports erforderlich sind - IP-Adresse zu virtuellem Wireguard-Interface hinzu fügen (->IP / Addresses)
- Router 1: Address: 192.168.200.1/24, Network: 192.168.200.0
- Router 2: Address: 192.168.200.2/24, Network: 192.168.200.0
Anmerkung: pro Wireguard-Server sind mehrere Transfer-Netze möglich. Die Auswahl erfolgt über die Route unten. - Router1: Wireguard-Peer einrichten,
- Pub-Key von Router2,
- Endpoint-IP: DSL2, Endpoint-Port: UDP-Port wie oben
- Allowed Address: 192.168.200.2/32 (Tunnel-Ende), 192.168.20.0/24 (Ziel-LAN) - Router2: Wireguard-Peer sinngemäß gleich einrichten
- Route auf Router1: Route Dest. 192.168.20.0/24 (Ziel-LAN) über Gateway 192.168.200.2 (WG-Transfer)
- Route auf Router2: Route Dest. 192.168.10.0/24 (Ziel-LAN) über Gateway 192.168.200.1 (WG-Transfer)
Wenn der Wireguard-Router hinter dem Default Router sitzt (wie oben gezeichnet):
- Default-Router1: Portforwarding UDP (51820) zum Wireguard-Router (192.168.10.15)
- Default-Router1: Statische Route zu Wireguard-LAN (192.168.200.0/24) über Wireguard-Router (192.168.10.15)
- Default-Router1: Statische Route zu entferntem LAN (192.168.20.0/24) über Wireguard-IP (192.168.200.2/32)
- für Router2 sinngemäß gleich
Beispiel der .conf -Datei des Clients (IP: 3):
[Interface]
Address = 192.168.200.3/32
PrivateKey = OMjSCv6e/iXECZwq0ZVL5Ywf/KzZvdsGpYKv1512345=
# DNS = 172.16.7.254
[Peer]
PublicKey = cA+mynt84tVH1gPaUN66E8K0nfzvpsQMohrEbz54321=
Endpoint = router.myfritz.de:51820
AllowedIPs = 192.168.200.0/24, 192.168.40.0/24
# PersistentkeepAlive = 25
- Address: VPN-Adresse des Clients
- PrivateKey: Privat-Key des jeweiligen Clients (im Client sieht man dann den Public-Key)
- DNS falls gewünscht
- PublicKey: Public-Key des Servers
- Endpoint: öffentliche Adresse des VPN-Servers mit Port
- AllowedIPs: alle Adressen, die der Wireguard Server in den Tunnel routet. (also zumindest Wireguard-Server und Serverside-LAN)
Dieses "Cryptokey Routing" bewirkt, dass Wireguard Server und Client das Routing für die jeweils remoten IP Netze automatisch in die Routing Tabelle übernehmen.
AllowedIPs = 0.0.0.0/0 bewirkt, dass der gesamte Traffic durch den Tunnel geht.
Wireguard Online Config Generator:
- Tool erstellt komplette .conf-Datei: https://www.wireguardconfig.com/
- Tool erstellt Schlüsselpaare: https://wg.orz.tools/
Quellen und Links:
- MikroTik Router: https://uwe-kernchen.de/phpmyfaq/index.php?solution_id=1424
- Wireguard VPN einrichten: [TUT] MikroTik - WireGuard VPN einrichten - YouTube