top of page
Abstract Lines _edited_edited_edited.jpg

WireGuard Road Warrior

Aggiornamento: 5 feb

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.





1.261 visualizzazioni

Post recenti

Mostra tutti

ConnTrack selettivo

In RouterOS, il Connection Tracking è indispensabile per far funzionare il NAT. Senza questa funzione ad esempio il router non è in grado di ricondurre i pacchetti che tornano in risposta a connession

Comments


bottom of page