Sempre più persone utilizzano la propria VPN anziché affidarsi a servizi a pagamento preconfigurati: è più economico, garantisce maggiore privacy e offre il pieno controllo del server. Una delle opzioni più efficaci per le regioni con rigide politiche di blocco della rete è AmneziaWG, un protocollo sviluppato dal progetto Amnezia sulla base di WireGuard.
WireGuard classico è veloce e affidabile, ma ha una struttura di pacchetti fissa e un handshake prevedibile, che i sistemi DPI (Deep Packet Inspection) possono identificare e bloccare in modo affidabile. AmneziaWG risolve questo problema: aggiunge pacchetti spazzatura alla normale connessione WireGuard, randomizza le intestazioni e modifica la dimensione dei campi dell'handshake, in modo che la firma caratteristica di WireGuard scompaia e il traffico non si distingua più dal normale traffico UDP.
Stai già utilizzando un tunnel VPN classico e ti stai chiedendo se vale la pena passare a un altro? Confronta questa configurazione con una semplice OpenVPN/PPTP in Configurazione server VPN su Linux: PPTP o OpenVPN? , oppure con WireGuard standard (senza offuscamento) in Come configurare WireGuard VPN sul tuo server.
Questa guida configura manualmente un server AmneziaWG, senza Docker né pannello di controllo web: l'ingombro minimo possibile sul VPS, con configurazione interamente da riga di comando. È l'opzione più leggera e funziona bene su un VPS economico, poiché non richiede interfaccia grafica, database o reverse proxy. Il server di esempio riportato di seguito utilizza un indirizzo IP segnaposto: sostituiscilo con l'indirizzo del tuo VPS ovunque compaia.
Cosa ti servirà: un VPS con Ubuntu 22.04/24.04 o Debian 11/12, accesso root e l'indirizzo IP del tuo VPS. Non è necessario un nome di dominio: AmneziaWG non utilizza certificati, quindi non c'è nulla da rinnovare e nulla che DPI possa segnalare come handshake TLS.
Non hai ancora un server? Consulta la sezione "Come ordinare un server".
Connessione al server
Windows (PuTTY)
Apri PuTTY, inserisci l'indirizzo IP del tuo VPS nel campo Nome host, imposta la porta su 22 ed effettua l'accesso come root utilizzando la password che il tuo provider VPS ti ha inviato via email.
Indirizzo IP del server: il tuo indirizzo IP
Accedi come: root
Password: la tua password
1. Apri PuTTY e inserisci l'indirizzo IP del tuo VPS nel campo Nome host.
2. Impostare la porta su 22.
3. Accedi come root.
4. Utilizzando la password che il tuo fornitore di VPS ti ha inviato via email.
Il risultato dovrebbe essere il seguente:
Per una guida dettagliata sulla connessione tramite PuTTY/SSH, consultare Come connettersi a un server Linux tramite SSH
Linux / macOS (terminale)
ssh root@YOUR_SERVER_IP
Tutti i comandi seguenti vengono eseguiti sul server, nella stessa sessione SSH – questo copre le Sezioni da 2 a 5, oltre ai controlli lato server nella Sezione 9. Le Sezioni da 6 a 8 (installazione e configurazione del client VPN) vengono invece eseguite sul tuo dispositivo Windows/macOS/Linux, poiché è su questo dispositivo che la VPN deve essere eseguita; ciascuna di queste sezioni specifica esplicitamente quali passaggi, se presenti, coinvolgono ancora il server.
Preparazione del server
Aggiorna il sistema
Prima di installare qualsiasi cosa, aggiorna l'elenco dei pacchetti e aggiorna i pacchetti già installati:
apt update -y && apt upgrade -y
Se questo aggiorna il kernel, riavviare prima di compilare il modulo del kernel AmneziaWG nella Sezione 3, altrimenti DKMS potrebbe compilare con gli header del kernel sbagliati e il modulo non verrà caricato. (Per un ripasso su apt e sul funzionamento dei gestori di pacchetti Linux, vedere Gestori di pacchetti Linux .) Verificare con:
cat /var/run/reboot-required
Abilita l'inoltro IP
Questa impostazione consente al server di inoltrare i pacchetti dei client su Internet; senza di essa, il tunnel verrà stabilito ma nessun traffico lo attraverserà.
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
sysctl --system
Il primo comando crea un file di configurazione dedicato; il secondo lo applica senza riavviare il server.
Configurare il firewall (UFW)
Per ulteriori informazioni sulle regole UFW, consultare la sezione "Configurazione del firewall su Linux".
Apri le due porte necessarie: 22/tcp per SSH (salta questa regola e rischi di perdere l'accesso al server) e 42666/udp, la porta su cui AmneziaWG rimarrà in ascolto.
apt install ufw -y
ufw allow 22/tcp
ufw allow 42666/udp
ufw --force enable
ufw status
Entrambe le regole dovrebbero risultare come CONSENTITE nell'output di stato di ufw.
Installazione di AmneziaWG
Debian non supporta direttamente i PPA in stile Ubuntu, quindi il repository deve essere aggiunto manualmente anziché tramite il comando `add-apt-repository`. Il procedimento è lo stesso anche su Ubuntu.
Aggiungere manualmente il repository
echo "deb [arch=amd64] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
Aggiungi la chiave di firma GPG
Utilizza un file keyring deprecato anziché il comando apt-key obsoleto e recupera la chiave di firma reale del PPA (impronta digitale 75C9DD72C799870E310542E24166F2C257290828):
apt install -y gnupg2
gpg --keyserver keyserver.ubuntu.com --recv-keys 57290828
gpg --export 57290828 | tee /usr/share/keyrings/amnezia.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/amnezia.gpg] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
Aggiorna e installa
apt update
apt install -y amneziawg
Verifica il modulo caricato
modprobe amneziawg
lsmod | grep amnezia
Generazione della configurazione del server e del client
Installa le utilità di supporto
Installa la dipendenza qrcode, quindi crea una directory di lavoro dedicata e scarica al suo interno lo script community config-generator:
apt install -y python3-qrcode
mkdir -p ~/awg && cd ~/awg
wget -O awgcfg.py \
https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py
Se python3-qrcode non è disponibile nei repository della tua distribuzione, usa pip3 install qrcode --break-system-packages (questo flag è necessario su Debian 12+/Ubuntu 24.04, che bloccano per impostazione predefinita le installazioni non gestite tramite pip). Non eseguire entrambe le installazioni: scegline una.
Genera la configurazione del server
Crea il file /etc/amnezia/amneziawg/awg0.conf. Puoi lasciare la sottorete interna del tunnel e la porta UDP ai valori predefiniti oppure impostarne di tuoi:
python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf \
-i 10.10.8.1/24 -p 42666
Il flag -i imposta l'indirizzo di rete interno e la maschera del tunnel; -p imposta la porta UDP del server (la stessa aperta al punto 2.3).
Crea il modello client-config
python3 awgcfg.py --create
Questo salva un modello nella stessa cartella da cui vengono create le singole configurazioni client: include già la chiave pubblica del server, il suo indirizzo IP e i parametri di offuscamento (Jc, Jmin, Jmax, S1, S2, H1–H4) che distinguono AmneziaWG dal normale WireGuard.
Aggiungi clienti
Crea una voce per ogni dispositivo: il nome può essere qualsiasi cosa, ad esempio il nome del dispositivo:
python3 awgcfg.py -a "laptop"
python3 awgcfg.py -a "phone"
Genera file client e codici QR
python3 awgcfg.py -c -q
La cartella ~/awg ora conterrà file come laptop.conf e phone.conf, oltre ai corrispondenti codici QR PNG che è possibile scansionare direttamente in un'app per dispositivi mobili.
La cartella ~/awg ora conterrà file come laptop.conf e phone.conf, oltre ai corrispondenti codici QR PNG che è possibile scansionare direttamente in un'app per dispositivi mobili.
Avvio del servizio e abilitazione dell'avvio automatico
Attiva l'interfaccia awg0 e abilita l'avvio automatico all'avvio del sistema:
systemctl enable --now awg-quick@awg0
systemctl restart [email protected]
systemctl status [email protected]
Lo stato dovrebbe risultare attivo (uscito) con l'unità abilitata all'avvio. Se la console sembra bloccarsi visualizzando i log, premere Q per uscire.
Controlla l'elenco dei peer attivi e il traffico per peer con:
awg show
Connessione da Windows
In questa sezione tutto avviene sul tuo PC Windows, non tramite SSH: il client VPN deve essere installato sul dispositivo che utilizzerà effettivamente il tunnel. L'unico passaggio che coinvolge il server è il download tramite scp descritto nella sezione 6.2, e anche questo comando viene digitato sul tuo PC, scaricando un file che il server ha già generato nella sezione 4.
Installa il client
AmneziaWG dispone di un'applicazione dedicata per Windows: la sua interfaccia rispecchia quella del client WireGuard standard, ma è in grado di interpretare i parametri di offuscamento. Scarica il programma di installazione dal repository ufficiale del progetto:
https://github.com/amnezia-vpn/amneziawg-windows-client/releases
Il link qui sopra rimanda alla pagina delle release del client Windows attualmente in uso: scarica da lì l'ultima versione del file .msi/.exe. Si tratta di una pagina da aprire nel browser, non di un comando da incollare nel terminale.
Esegui il programma di installazione e segui la procedura guidata di configurazione; non è necessario modificare le impostazioni predefinite.
Importa la configurazione
Copia il file di configurazione del client dal server al tuo computer: il modo più semplice è usare scp, da eseguire in PowerShell sul tuo computer, non sul server.
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
Nell'app AmneziaWG, fai clic su "Importa tunnel da file", seleziona laptop.conf e attiva l'interruttore accanto al nuovo tunnel.
Connessione da macOS
Sono disponibili due opzioni supportate:
- AmneziaWG (Mac App Store): un client leggero, compatibile con macOS 12 e versioni successive. Cerca "AmneziaWG" nell'App Store, installalo, quindi utilizza "Importa tunnel da file" e seleziona il tuo file .conf: la procedura è la stessa del client per Windows.
- AmneziaVPN (app completa, macOS 14+): scarica il file .pkg da github.com/amnezia-vpn/amnezia-client/releases/latest se preferisci utilizzare l'app Amnezia completa anziché il client leggero AmneziaWG.
Copia prima la configurazione del client, se necessario, come nel passaggio 6.2:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
Connessione da Linux
Su un computer desktop o portatile Linux hai due opzioni:
- Interfaccia grafica: installa il client desktop completo di AmneziaVPN da github.com/amnezia-vpn/amnezia-client/releases, quindi importa il file .conf nello stesso modo in cui lo fai su Windows/macOS.
- Interfaccia a riga di comando (CLI), utilizzando gli stessi strumenti amneziawg-tools usati sul server (awg / awg-quick):
apt install -y amneziawg
cp laptop.conf /etc/amnezia/amneziawg/awg0.conf
awg-quick up awg0
Esegui questo codice per disconnetterti.
awg-quick down awg0
Per attivare automaticamente il tunnel all'accesso, abilitalo come servizio:
systemctl enable --now awg-quick@awg0
Verifica della connessione
Con il tunnel attivo dalla Sezione 6, 7 o 8, torna al tuo dispositivo (non alla sessione SSH) e apri un qualsiasi strumento di verifica dell'indirizzo IP in un browser: l'indirizzo visualizzato dovrebbe corrispondere all'indirizzo IP del tuo VPS. Per verificare dall'interno della sessione SSH, esegui il comando `awg show` sul server e conferma che il peer del client mostri un handshake recente e un traffico diverso da zero.
Riferimento:
|
Settore |
Valore |
|
Indirizzo |
YOUR_TUNNEL_IP (l'indirizzo IP del client all'interno del tunnel, ad esempio 10.10.8.2/32 — assegnato automaticamente quando il client è stato aggiunto al passaggio 4.4) |
|
endpoint |
YOUR_SERVER_IP:42666 (L'indirizzo IP esterno del server e la porta UDP a cui si connette il client.) |
|
DNS |
8.8.8.8 |
|
Jc / Jmin / Jmax |
Numero e dimensione dei pacchetti “spazzatura” inviati prima dell’handshake: possono differire tra server e client senza interrompere la connessione. |
|
S1 / S2 |
dimensione dei campi di riempimento dell'handshake: devono corrispondere byte per byte tra server e ogni client |
|
H1 – H4 |
Le intestazioni del tipo di pacchetto che mascherano il protocollo come traffico ordinario devono corrispondere esattamente ed essere univoche l'una dall'altra. |
Solo S1/S2 e H1–H4 devono essere identici su entrambe le estremità del tunnel; Jc, Jmin e Jmax riguardano esclusivamente il modo in cui ciascun lato gestisce il proprio traffico spazzatura in uscita, quindi i valori del client e del server possono legittimamente differire, come nell'esempio precedente.
Conclusione
Seguendo questa guida, il tuo VPS eseguirà un server AmneziaWG dedicato: un protocollo compatibile con WireGuard con offuscamento del traffico, che rende i sistemi DPI notevolmente più difficili da distinguere dal normale traffico UDP rispetto al WireGuard standard. Il servizio viene eseguito come unità systemd awg-quick@awg0 e sopravvive al riavvio del server senza alcun intervento da parte tua.
I file .conf e i codici QR risultanti nella directory ~/awg funzionano non solo con il client Windows, ma possono anche essere importati nelle app AmneziaWG o Amnezia per Android, iOS, macOS e Linux, nonché nei router Keenetic e OpenWrt.
È possibile aggiungere nuovi client in qualsiasi momento ripetendo i passaggi 4.4–4.5 (python3 awgcfg.py -a "nome", quindi awgcfg.py -c -q) e riavviando l'interfaccia con systemctl restart [email protected].
Ecco alcune abitudini da mantenere anche dopo l'avvio del server:
- Mantieni il sistema aggiornato. Esegui periodicamente i comandi `apt update -y` e `apt upgrade -y` e riavvia il sistema dopo gli aggiornamenti del kernel, in modo che DKMS ricostruisca il modulo amneziawg compatibile con il nuovo kernel.
- Eseguite un backup della directory ~/awg. Contiene la chiave privata di ogni client e la coppia di chiavi del server nel file awg0.conf; perderla significa dover rigenerare le configurazioni per ogni dispositivo.
- Revocare immediatamente i dispositivi smarriti. Rimuovere il blocco [Peer] corrispondente da /etc/amnezia/amneziawg/awg0.conf ed eseguire systemctl restart [email protected].
Se la connessione non si stabilisce, controlla in quest'ordine:
- lo stato del servizio (systemctl status) [email protected])
- le regole del firewall (ufw status — la porta 42666/udp deve essere aperta)
- lo stato del DKMS/modulo se l'interfaccia non si avvia nemmeno (dkms status, lsmod | grep amnezia)
- l'elenco dei peer attivi sul server (awg show)
- che la configurazione del client punti al corretto indirizzo IP del server esterno
Prima di scegliere AmneziaWG, vuoi confrontarlo con altre opzioni. Consulta le guide " Configurazione del server VPN su Linux: PPTP o OpenVPN?" e "Come configurare WireGuard VPN sul tuo server" . Se ti serve solo un semplice proxy anziché un tunnel VPN completo, la configurazione di 3proxy su CentOS/ArchLinux rappresenta un'alternativa più leggera. Per la protezione generale del server una volta che la VPN è attiva, consulta la guida "Utenti Linux: Gestione e Permessi".