WireGuard da zero: guida completa per configurare il tuo router (OpenWrt, road-warrior e site-to-site)
Questa guida ti porta da zero a VPN funzionante anche se è la prima volta che ci provi. Faremo prima lo scenario road-warrior (telefono/PC → casa) e poi site-to-site (due reti collegate tra loro). Alla fine trovi troubleshooting e ottimizzazioni.
Cos’è WireGuard (in breve)
- VPN moderna, veloce e semplice.
- Ogni peer ha una coppia chiave privata/pubblica.
- Gli accessi si definiscono con AllowedIPs (gli IP/route permessi).
Prerequisiti
- Router con OpenWrt o firmware che supporta WireGuard.
- Port-forward UDP 51820 dal modem verso il router.
- IP pubblico o DDNS configurato.
Se ti serve hardware economico pronto alla VPN: 🛒
cerca “router wireguard wifi 6”.
1) Installazione su OpenWrt
Da LuCI: Sistema → Software → aggiorna elenco → installa luci-app-wireguard
e wireguard-tools
.
opkg update
opkg install luci-app-wireguard wireguard-tools
2) Genera le chiavi del server
umask 077
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
3) Road-warrior (telefono/PC → casa)
3.1 Interfaccia wg0
(server)
uci set network.wg0="interface"
uci set network.wg0.proto="wireguard"
uci set network.wg0.private_key="$(cat /etc/wireguard/server_private.key)"
uci set network.wg0.listen_port="51820"
uci add_list network.wg0.addresses="10.8.0.1/24"
uci commit network && /etc/init.d/network restart
3.2 Firewall
uci add firewall zone
uci set firewall.@zone[-1].name="wgzone"
uci set firewall.@zone[-1].input="ACCEPT"
uci set firewall.@zone[-1].output="ACCEPT"
uci set firewall.@zone[-1].forward="ACCEPT"
uci add_list firewall.@zone[-1].network="wg0"
uci add firewall forwarding; uci set firewall.@forwarding[-1].src="lan"; uci set firewall.@forwarding[-1].dest="wgzone"
uci add firewall forwarding; uci set firewall.@forwarding[-1].src="wgzone"; uci set firewall.@forwarding[-1].dest="lan"
uci add firewall rule
uci set firewall.@rule[-1].name="Allow-WireGuard"
uci set firewall.@rule[-1].src="wan"
uci set firewall.@rule[-1].dest_port="51820"
uci set firewall.@rule[-1].proto="udp"
uci set firewall.@rule[-1].target="ACCEPT"
uci commit firewall && /etc/init.d/firewall restart
3.3 Peer telefono (IP 10.8.0.2)
- Nell’app WireGuard del telefono crea un profilo (ti dà chiave pubblica).
- Sul router aggiungi il peer:
uci add network wg0
uci set network.@wireguard_wg0[-1].public_key="<CHIAVE_PUBBLICA_TELEFONO>"
uci set network.@wireguard_wg0[-1].description="iphone-di-mario"
uci add_list network.@wireguard_wg0[-1].allowed_ips="10.8.0.2/32"
uci commit network && /etc/init.d/network restart
Config lato telefono (esempio):
[Interface]
PrivateKey = <PRIVATA_TELEFONO>
Address = 10.8.0.2/32
DNS = 10.8.0.1
[Peer]
PublicKey = <PUBBLICA_ROUTER>
Endpoint = tuo-ddns.esempio.it:51820
AllowedIPs = 192.168.1.0/24
PersistentKeepalive = 25
Per instradare tutto il traffico nella VPN usa: AllowedIPs = 0.0.0.0/0, ::/0
.
3.4 Test e debug
- Con app attiva raggiungi
http://192.168.1.1
? - Su router
wg show
: i bytes RX/TX del peer crescono? - Problemi tipici: DDNS errato, porta non inoltrata, MTU alta (prova 1420).
4) Site-to-site (A ↔ B)
Esempio: A=LAN 192.168.1.0/24 (wg0=10.9.0.1/24) – B=LAN 192.168.2.0/24 (wg0=10.9.0.2/24).
A:
uci set network.wg0="interface"
uci set network.wg0.proto="wireguard"
uci set network.wg0.private_key="$(cat /etc/wireguard/server_private.key)"
uci set network.wg0.listen_port="51820"
uci add_list network.wg0.addresses="10.9.0.1/24"
uci add network wg0
uci set network.@wireguard_wg0[-1].public_key="<PUBBLICA_B>"
uci add_list network.@wireguard_wg0[-1].allowed_ips="10.9.0.2/32"
uci add_list network.@wireguard_wg0[-1].allowed_ips="192.168.2.0/24"
uci commit network && /etc/init.d/network restart
B:
uci set network.wg0="interface"
uci set network.wg0.proto="wireguard"
uci set network.wg0.private_key="<PRIVATA_B>"
uci add_list network.wg0.addresses="10.9.0.2/24"
uci add network wg0
uci set network.@wireguard_wg0[-1].public_key="<PUBBLICA_A>"
uci set network.@wireguard_wg0[-1].endpoint_host="ddns-a.esempio.it"
uci set network.@wireguard_wg0[-1].endpoint_port="51820"
uci add_list network.@wireguard_wg0[-1].allowed_ips="10.9.0.1/32"
uci add_list network.@wireguard_wg0[-1].allowed_ips="192.168.1.0/24"
uci set network.@wireguard_wg0[-1].persistent_keepalive="25"
uci commit network && /etc/init.d/network restart
5) Ottimizzazioni
- MTU 1420 se NAT multipli o roaming mobile.
- PBR (policy based routing) con
luci-app-pbr
per dev/host selettivi. - DNS locale via 10.8.0.1.