WireGuard è un protocollo di comunicazione e un software open-source che implementa virtual private network cifrate, disegnato per essere di semplice utilizzo, ad alte performance e bassa vulnerabilità.
Aspira ad essere migliore di IPSec e OpenVPN e impiega il protocollo UDP.
RouterOS v7 integra WireGuard. Vi propongo una semplice configurazione per creare connessioni sicure e facili da configurare per utenti Road Warrior.
Configuriamo prima di tutto il server su cui sarà necessario creare l'interfaccia WireGuard e definire la porta di servizio, nel nostro esempio la 13231. Il firewall dovrà essere aggiornato per consentire ai client di connettersi.
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1
/ip firewall filter
add action=accept chain=input dst-port=13231 in-interface-list=WAN\ protocol=udp
Ipotizziamo di voler assegnare la subnet 10.0.0.0/24 a WireGuard. Configuriamo l'indirizzo 10.0.0.1/24 sull'interfaccia wireguard1 del server.
/ip address
add address=10.0.0.1/24 interface=wireguard1 network=10.0.0.0
Per ogni client Road Warrior definiamo un peer WireGuard. Ipotizziamo di voler far navigare in Internet i client tramite la connessione con il server, quindi dovremo impostare anche una regola di NAT per gli IP assegnati ai client.
/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=WAN\
src-address=10.0.0.0/24
WireGuard fa uso di chiavi private e pubbliche, dalla chiave privata è possibile ricavare la chiave pubblica, non viceversa.
Il server deve conoscere la chiave pubblica del client, il client deve conoscere la chiave pubblica del server.
La chiave pubblica del server è facilmente reperibile in /interface/wireguard:
[admin@WG_R1] /interface/wireguard> print
Flags: X - disabled; R - running
0 R name="wireguard1" mtu=1420 listen-port=13231
private-key="cNMCha9CZZIegAq4jlKAsTWYi7baCBlQ22KF1B9m+UM="
public-key="p5SX1UtnQU39c11QrUJ/PwzjXEFDG86KSM5KbWrNoxU="
Abbiamo ora bisogno di generare una coppia di chiavi per il client. Possiamo creare un'altra interfaccia wireguard, copiare le chiavi generate e poi cancellare l'interfaccia.
[admin@WG_R1] > /interface/wireguard
[admin@WG_R1] /interface/wireguard> add
[admin@WG_R1] /interface/wireguard> print
Flags: X - disabled; R - running
0 R name="wg2" mtu=1420 listen-port=24586
private-key="QAmA0WR3kwr5zW4I+MjIkcOZIpHNorU0D/5jyPFd2HQ="
public-key="erG2s4aGJH2C3rF8YyXcoxf/Z94ocEo8SoOI1VopoB4="
Creiamo ora il peer per il client a cui assegneremo l'IP 10.0.0.2/32. Impostiamo la public-key generata nel passo precedente.
/interface wireguard peers
add allowed-address=10.0.0.2/32 comment=Client1/ interface=wireguard1 public-key=/
"[public-key del client]"
Creiamo un QR code per il Client1, sarà sufficiente inquadrarlo per configurare il client!
Aprite il link: https://www.wireguardconfig.com/qrcode e configurate il client personalizzando i parametri:
[Interface]
PrivateKey = QAmA0WR3kwr5zW4I+MjIkcOZIpHNorU0D/5jyPFd2HQ=
Address = 10.0.0.10/32
DNS = 8.8.8.8
[Peer]
PublicKey = p5SX1UtnQU39c11QrUJ/PwzjXEFDG86KSM5KbWrNoxU=
AllowedIPs = 0.0.0.0/0
Endpoint = [IP del server]:13231
La PrivateKey in [Interface] è quella del client, generata creando la falsa interfaccia wireguard, la PublicKey in [Peer] è la chiave pubblica del server, reperibile in /interface/wireguard. In Endpoint è necessario impostare l'IP del server.
Facciamo lo screenshot del QR Code e salviamolo come immagine.
Il client per WireGuard è disponibile per praticamente tutti i sistemi operativi e può essere scaricato al link: https://www.wireguard.com/install/
Sarà sufficiente inquadrare il QR Code per avere la VPN pronta per essere usata!
Sarà sufficiente replicare la configurazione per ogni nuovo client.
Per aumentare la sicurezza è possibile aggiungere una Preshared Key ad ogni Peer.
Comments