Che cosa otteniamo?

Il telefono, da qualunque Wi-Fi o rete mobile, entra nella rete di casa o dell’ufficio come se fosse lì: apri la pagina della telecamera, il NAS, WinBox sul router, e tutto viaggia cifrato. Con WireGuard e RouterOS 7 il grosso lo fa il router: alla fine ti mostra un QR code, lo inquadri con l’app WireGuard e hai finito.

È il “road warrior”: un utente in giro per il mondo che si collega alla base. I minuti sono davvero pochi, ma prima serve una cosa sola: che il router sia raggiungibile da internet.

Schema: telefono con l'app WireGuard collegato via internet e modem al MikroTik, interfaccia wg-casa, e da lì alla LAN 192.168.88.0/24
Il telefono si collega da qualunque rete al MikroTik di casa con WireGuard e da lì raggiunge la LAN.

Passo 1: il router è raggiungibile?

Il telefono deve sapere dove bussare. Due casi:

  • la linea ha un indirizzo pubblico fisso: usi quello;
  • l’indirizzo cambia: attiva IP Cloud e usa il nome fisso che ti dà, come spiegato nell’howto su IP Cloud MikroTik. Negli esempi è hx12345abcd.sn.mynetname.net.

⚠️ Attenzione: se davanti al MikroTik c’è il modem dell’operatore, sul modem va inoltrata la porta UDP 13231 verso il MikroTik. Senza quell’inoltro il telefono bussa al modem, e il modem non apre.

Passo 2: come creo l’interfaccia WireGuard?

/interface wireguard add name=wg-casa listen-port=13231
/ip address add address=10.10.10.1/24 interface=wg-casa comment="VPN telefoni"

La rete della VPN, 10.10.10.0/24, deve essere diversa da tutte quelle che usi già, compresa quella della LAN. Controllala con l’IP calculator del Dojo. Il router crea da solo la sua coppia di chiavi.

Passo 3: come apro il firewall?

Due regole: una fa entrare la VPN da internet, l’altra tratta chi arriva dalla VPN come se fosse in LAN.

/ip firewall filter add chain=input protocol=udp dst-port=13231 in-interface-list=WAN action=accept \
    comment="WireGuard telefoni" place-before=0
/interface list member add list=LAN interface=wg-casa

Con wg-casa nella lista LAN, il telefono collegato può usare il DNS del router e raggiungere WinBox, esattamente come un PC della rete. Se il tuo firewall è quello dell’Hardening di base di un router MikroTik, le liste WAN e LAN ci sono già.

Passo 4: come aggiungo il telefono?

Un peer per ogni telefono. Il trucco che fa risparmiare tempo: private-key=auto fa generare al router anche la chiave del telefono, così poi la configurazione è già completa.

/interface wireguard peers add interface=wg-casa name=telefono-gianni private-key=auto \
    allowed-address=10.10.10.2/32 client-address=10.10.10.2/32 client-dns=10.10.10.1 \
    client-endpoint=hx12345abcd.sn.mynetname.net responder=yes
  • allowed-address e client-address: l’indirizzo del telefono dentro la VPN; ogni telefono ne ha uno diverso (.2, .3…);
  • client-dns: il telefono userà il router come DNS, così risolve anche i nomi della rete di casa;
  • client-endpoint: il nome o l’indirizzo del passo 1, a cui il telefono si collega;
  • responder=yes: il router aspetta che sia il telefono a chiamare, senza provare a cercarlo lui.

Passo 5: come porto la configurazione sul telefono?

Il router la prepara da solo, a partire dai campi client-* del peer:

/interface wireguard peers show-client-config [find name=telefono-gianni]

Il comando mostra il testo della configurazione e il QR code da inquadrare; lo stesso si fa da WinBox, aprendo il peer del telefono in WireGuard → Peers. Il testo è come questo (quello vero del mio laboratorio, senza le chiavi):

[Interface]
ListenPort = 51820
PrivateKey = (la chiave del telefono)
Address = 10.10.10.2/32
DNS = 10.10.10.1
[Peer]
PublicKey = (la chiave del router)
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = hx12345abcd.sn.mynetname.net:13231

Sul telefono installa l’app ufficiale WireGuard, tocca +, scegli la creazione da QR code e inquadra il codice. Dai un nome al tunnel, accendilo, ed è fatta.

⚠️ Attenzione: quel QR code contiene la chiave privata del telefono. Non mandarlo per chat e non lasciarlo in una foto: chi lo ha entra nella tua rete. Mostralo a schermo, fallo inquadrare e chiudi.

Passo 6: come verifico che funzioni?

Con il tunnel acceso, sul router guarda il peer:

/interface wireguard peers print where name=telefono-gianni

last-handshake deve essere di pochi secondi o minuti fa, e rx e tx devono salire. In laboratorio ho collegato un PC Linux “da fuori” con la configurazione generata dal router: ping verso il router (10.10.10.1) e verso un PC della LAN, pagine web aperte attraverso il tunnel e nomi risolti dal DNS del router. Tutto al primo colpo.

Passo 7: e se voglio nel tunnel solo il traffico verso casa?

Di serie la configurazione manda nel tunnel tutto il traffico del telefono (AllowedIPs = 0.0.0.0/0, ::/0): anche la navigazione esce da casa. È quello che vuoi su un Wi-Fi pubblico di cui non ti fidi. Se invece vuoi nel tunnel solo il traffico verso la rete di casa, indica le reti nel peer:

/interface wireguard peers set [find name=telefono-gianni] \
    client-allowed-address=192.168.88.0/24,10.10.10.0/24

Rigenera il QR code e fallo inquadrare di nuovo: ora AllowedIPs contiene solo quelle reti. Il parametro c’è da RouterOS 7.21; tutti i dettagli sono nel manuale MikroTik: WireGuard.

Cosa controllo prima di metterlo in produzione?

  • un peer per persona e per dispositivo: se un telefono si perde, cancelli il suo peer e gli altri continuano a funzionare;
  • il router conserva le chiavi private dei telefoni generate con private-key=auto. L’export le nasconde, ma chi entra nel router può vederle: proteggilo con l’Hardening di base di un router MikroTik;
  • la porta 13231 è l’unica cosa aperta verso internet: WinBox e SSH restano chiusi e li raggiungi dal tunnel.

Provato in laboratorio su PNETLab con CHR RouterOS 7.24.5 (stable) e un client Debian 12 dietro un altro router, con la configurazione generata da show-client-config: handshake, ping al router e alla LAN, navigazione e DNS attraverso il tunnel, split tunnel con client-allowed-address, chiave privata nascosta nell’export. La scansione del QR code con l’app WireGuard del telefono non è stata provata in laboratorio.

Domande frequenti

Come collego il telefono al MikroTik con WireGuard?

Crea un’interfaccia WireGuard e un peer con private-key=auto e i campi client-*, poi genera la configurazione con /interface wireguard peers show-client-config e inquadra il QR code con l’app WireGuard.

Funziona se il router ha l’indirizzo dinamico?

Sì: con IP Cloud il router ha un nome fisso (numero-di-serie.sn.mynetname.net) che segue l’indirizzo; si usa quel nome come client-endpoint.

Perché il telefono non si collega?

Le cause più comuni: la porta UDP 13231 non è accettata nel firewall in input, oppure il modem davanti al MikroTik non la inoltra. Sul router, nel peer, last-handshake vuoto vuol dire che i pacchetti non arrivano.

Come faccio passare nel tunnel solo il traffico verso casa?

Con client-allowed-address nel peer (da RouterOS 7.21), indicando le reti di casa e della VPN; poi si rigenera il QR code.

Il QR code è un dato sensibile?

Sì: contiene la chiave privata del dispositivo. Chi lo possiede può collegarsi alla rete, quindi va mostrato solo a schermo e mai inviato o fotografato.