Knowledgebase Semplici istruzioni per lavorare con il servizio Profitserver
Principale Knowledgebase Guida alla distribuzione del server AmneziaWG

Guida alla distribuzione del server AmneziaWG


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.  

Finestra di configurazione predefinita di PuTTY, prima dell'inserimento dei dettagli di connessione.

2. Impostare la porta su 22. 

La sessione è stata compilata con l'indirizzo IP del VPS e la porta 22, con la sessione salvata "My VPS" selezionata e pronta per essere aperta.

3. Accedi come root. 

Si apre una nuova finestra del terminale PuTTY, che avvia la sessione SSH e richiede il nome utente per l'accesso.

4. Utilizzando la password che il tuo fornitore di VPS ti ha inviato via email.

Dopo aver digitato root, PuTTY richiede la password dell'account.

Il risultato dovrebbe essere il seguente:

Accesso riuscito: il banner del messaggio del giorno di Debian seguito dal prompt della shell di root (root@copywr:~#).

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
Durante l'aggiornamento di sistema, apt upgrade sta scaricando un nuovo pacchetto del kernel (linux-image-6.1.0-52-amd64). Aggiornamento di apt completato: initramfs è stato rigenerato e i servizi interessati sono stati riavviati.

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.

sysctl --system applica tutti i file di configurazione sysctl.d, confermando che net.ipv4.ip_forward = 1 è ora attivo.

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.

Lo stato di Ufw conferma che le porte 22/tcp e 42666/udp sono consentite sia per IPv4 che per IPv6, con il firewall attivo.

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

Aggiungi 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
Output di apt install -y amneziawg: DKMS sta compilando il modulo del kernel amneziawg per il kernel in esecuzione e sta completando l'installazione.

Verifica il modulo caricato

modprobe amneziawg
lsmod | grep amnezia
Eseguire il comando `modprobe amneziawg` seguito da `lsmod`, per confermare che il modulo amneziawg e le sue dipendenze (curve25519, chacha20poly1305, ecc.) siano caricati.

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.

Awgcfg.py è uno script non ufficiale di terze parti (dell'utente GitHub "remittor"), non uno strumento ufficiale del progetto Amnezia. L'URL sopra punta al contenuto grezzo del gist senza un hash di revisione, quindi scarica sempre l'ultima versione caricata dall'autore: un aggiornamento silenzioso (o la cancellazione del gist) potrebbe interrompere la configurazione senza preavviso. Ove possibile, bloccalo a una revisione specifica: apri la cronologia delle revisioni del gist, copia l'hash del commit per la versione che hai testato e usa un URL della forma di questa guida. 

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).

Awgcfg.py --make crea il file /etc/amnezia/amneziawg/awg0.conf e rileva l'interfaccia di rete principale del server (ens3).

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.

Awgcfg.py --crea scrivendo _defclient.config, il modello da cui verranno generate le nuove configurazioni client.

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"
Awgcfg.py -a registra i client "laptop" e "phone", a ciascuno dei quali viene assegnato un proprio indirizzo IP di tunnel (10.10.8.2/32 e 10.10.8.3/32).

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.

Questo script della community presenta una particolarità nota: la sua esecuzione può eliminare altri file .init/state che potresti aver posizionato nella stessa cartella. Mantieni la cartella ~/awg dedicata esclusivamente ai file di AmneziaWG ed esegui un backup delle chiavi del server (la [Interface] PrivateKey in awg0.conf) altrove prima di rigenerare le configurazioni.
Contenuto del file laptop.conf generato: l'indirizzo del client, il DNS, i parametri di offuscamento e la sezione [Peer] che punta al server.

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.

Questo script della community presenta una particolarità nota: la sua esecuzione può eliminare altri file .init/state che potresti aver posizionato nella stessa cartella. Mantieni la cartella ~/awg dedicata esclusivamente ai file di AmneziaWG ed esegui un backup delle chiavi del server (la [Interface] PrivateKey in awg0.conf) altrove prima di rigenerare le configurazioni.

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.

Il comando Systemctl status conferma che il servizio awg-quick@awg0.service è attivo (terminato) e abilitato, con i comandi di configurazione ip/iptables dell'interfaccia presenti nel log.

Controlla l'elenco dei peer attivi e il traffico per peer con:

awg show
Il comando `awg show` elenca i parametri di offuscamento dell'interfaccia awg0 e i due peer configurati (laptop e telefono), ciascuno con il proprio indirizzo IP consentito.

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.

Una finestra vuota di Windows PowerShell sul PC client, pronta per eseguire il comando scp riportato di seguito.
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

Qui tutto avviene sul tuo Mac, non tramite SSH. La riga scp qui sotto viene digitata nel Terminale del Mac, scaricando la configurazione che il server ha già generato nella Sezione 4; non viene eseguita all'interno della tua sessione SSH root sul VPS.

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

Entrambe le opzioni seguenti vengono eseguite sul tuo computer desktop/portatile Linux, ovvero in una sessione SSH separata (o shell locale) su quella macchina, e non nella sessione SSH root sul VPS descritta nella Sezione 1. I comandi sembrano identici a quelli lato server perché viene utilizzato lo stesso pacchetto amneziawg-tools su entrambi i lati, ma eseguendoli qui si installa e si avvia un tunnel client sulla propria macchina, non sul server.

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".

❮ Articolo precedente Configurazione di Hysteria2 e TUIC
Articolo successivo ❯ Guida alla realtà di Xray VLESS: VPS, Windows, Mac, Android, iPhone

Chiedici informazioni su VPS

Siamo sempre pronti a rispondere alle vostre domande a qualsiasi ora del giorno e della notte.