
Configura il tuo server VPN IPsec in pochi minuti, con IPsec/L2TP, Cisco IPsec e IKEv2. Supporta Ubuntu, Debian, CentOS/RHEL, Alpine Linux e Raspberry Pi OS. Include script di configurazione client e di gestione.
Inglese | Cinese semplificato | Cinese tradizionale | Giapponese | Russo
Configura il tuo server VPN IPsec in pochi minuti, con IPsec/L2TP, Cisco IPsec e IKEv2.
Una VPN IPsec crittografa il tuo traffico di rete, in modo che nessuno tra te e il server VPN possa intercettare i tuoi dati mentre viaggiano su Internet. Ciò è particolarmente utile quando si utilizzano reti non sicure, ad esempio nei bar, negli aeroporti o nelle camere d'albergo.
Utilizzeremo Libreswan come server IPsec e xl2tpd come provider L2TP.
Caratteristiche:
Disponibili anche:
Per prima cosa, prepara il tuo server Linux* con un'installazione di un sistema operativo supportato.
Usa questo comando per configurare un server VPN IPsec:```bash wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
I dettagli del login VPN verranno generati casualmente e visualizzati al termine.
> [!TIP]
> Installa opzionalmente [WireGuard](https://github.com/hwdsl2/wireguard-install), [OpenVPN](https://github.com/hwdsl2/openvpn-install) e/o [Headscale](https://github.com/hwdsl2/headscale-install) sullo stesso server.
<details>
<summary>
Guarda lo script in azione (registrazione del terminale).
</summary>
**Nota:** Questa registrazione è solo a scopo dimostrativo. Le credenziali VPN in questa registrazione **NON** sono valide.
<p align="center"><img src="https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/HEAD/docs/images/script-demo.svg"></p>
</details>
<details>
<summary>
Clicca qui se non riesci a scaricare.
</summary>
Puoi anche usare `curl` per scaricare:```bash
curl -fsSL https://get.vpnsetup.net -o vpn.sh && sudo sh vpn.sh
URL di configurazione alternativi:```bash https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh
Se non riesci a scaricare, apri [vpnsetup.sh](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/vpnsetup.sh), quindi clicca sul pulsante `Raw` a destra. Premi `Ctrl/Cmd+A` per selezionare tutto, `Ctrl/Cmd+C` per copiare, poi incolla nel tuo editor preferito.
</details>
È disponibile anche un'[immagine Docker](https://github.com/hwdsl2/docker-ipsec-vpn-server) precompilata. Per altre opzioni e configurazione del client, leggi le sezioni seguenti.
\* Un server cloud, un server virtuale privato (VPS) o un server dedicato.
## Comunità
- 📬 [Iscriviti per aggiornamenti del progetto](https://selfhostedstack.beehiiv.com/subscribe?utm_campaign=vpn) (1–2 email/mese) — ricevi guide gratuite su VPN e deployment AI (PDF)
- 💬 Unisciti alla comunità [r/selfhostedstack](https://www.reddit.com/r/selfhostedstack/) per discussioni
- ⭐ Metti una stella al repository se lo trovi utile — aiuta altri a scoprirlo
## Requisiti
Un server cloud, un server virtuale privato (VPS) o un server dedicato, con installazione di:
- Ubuntu 26.04, 24.04 o 22.04
- Debian 13, 12 o 11
- CentOS Stream 10 o 9
- Rocky Linux o AlmaLinux
- Oracle Linux
<details>
<summary>
Altre distribuzioni Linux supportate.
</summary>
- Raspberry Pi OS (Raspbian)
- Kali Linux
- Alpine Linux
- Red Hat Enterprise Linux (RHEL)
</details>
Questo include anche VM Linux in cloud pubblici, come [DigitalOcean](https://blog.ls20.com/digitalocean), [Vultr](https://blog.ls20.com/vultr), [Linode](https://blog.ls20.com/linode), [OVH](https://www.ovhcloud.com/en/vps/) e [Microsoft Azure](https://azure.microsoft.com). Gli utenti di cloud pubblici possono anche eseguire il deploy utilizzando [user data](https://blog.ls20.com/ipsec-l2tp-vpn-auto-setup-for-ubuntu-12-04-on-amazon-ec2/#vpnsetup).
Distribuzione rapida su:
[](https://cloud.linode.com/stackscripts/37239) [](aws/README.md) [](azure/README.md)
[**» Voglio eseguire il mio VPN ma non ho un server per quello**](https://blog.ls20.com/ipsec-l2tp-vpn-auto-setup-for-ubuntu-12-04-on-amazon-ec2/#gettingavps)
Per server con un firewall esterno (es. [EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)/[GCE](https://cloud.google.com/vpc/docs/firewalls)), apri le porte UDP 500 e 4500 per il VPN.
È disponibile anche un'[immagine Docker](https://github.com/hwdsl2/docker-ipsec-vpn-server) precompilata. Gli utenti avanzati possono installare su un [Raspberry Pi](https://www.raspberrypi.com). [[1]](https://elasticbyte.net/posts/setting-up-a-native-cisco-ipsec-vpn-server-using-a-raspberry-pi/) [[2]](https://www.stewright.me/2018/07/create-a-raspberry-pi-vpn-server-using-l2tpipsec/)
> [!WARNING]
> **NON** eseguire questi script sul tuo PC o Mac! Dovrebbero essere usati solo su un server!
## Installazione
Prima, aggiorna il tuo server con `sudo apt-get update && sudo apt-get dist-upgrade` (Ubuntu/Debian) o `sudo yum update` e riavvia. Opzionale, ma consigliato.
Per installare il VPN, scegli una delle seguenti opzioni:
**Opzione 1:** Lascia che lo script generi credenziali VPN casuali per te (verranno mostrate al termine).```bash
wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
Opzione 2: Modifica lo script e fornisci le tue credenziali VPN.```bash wget https://get.vpnsetup.net -O vpn.sh nano -w vpn.sh [Replace with your own values: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD] sudo sh vpn.sh
> [!NOTE]
> Una PSK IPsec sicura dovrebbe consistere di almeno 20 caratteri casuali.
**Opzione 3:** Definisci le tue credenziali VPN come variabili d'ambiente.```bash
# All values MUST be placed inside 'single quotes'
# DO NOT use these special characters within values: \ " '
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_IPSEC_PSK='your_ipsec_pre_shared_key' \
VPN_USER='your_vpn_username' \
VPN_PASSWORD='your_vpn_password' \
sh vpn.sh
[!TIP] Facoltativamente installa WireGuard, OpenVPN e/o Headscale sullo stesso server. Se il tuo server esegue CentOS Stream, Rocky Linux o AlmaLinux, installa prima OpenVPN/WireGuard, poi installa la VPN IPsec.
Puoi anche usare curl per scaricare. Per esempio:```bash
curl -fL https://get.vpnsetup.net -o vpn.sh
sudo sh vpn.sh
URL di configurazione alternativi:```bash
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh
Se non riesci a scaricare, apri vpnsetup.sh, poi clicca sul pulsante Raw a destra. Premi Ctrl/Cmd+A per selezionare tutto, Ctrl/Cmd+C per copiare, poi incolla nel tuo editor preferito.
Generalmente si raccomanda di utilizzare l'ultima versione 5 di Libreswan, che è la versione predefinita in questo progetto. Tuttavia, se desideri installare la vecchia versione 4 di Libreswan:```bash wget https://get.vpnsetup.net -O vpn.sh sudo VPN_SWAN_VER=4.15 sh vpn.sh
**Nota:** Se Libreswan versione 5 è già installato, potrebbe essere necessario prima [Disinstallare la VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/uninstall.md) prima di installare Libreswan versione 4. In alternativa, scarica lo [script di aggiornamento](#upgrade-libreswan), modificalo per specificare `SWAN_VER=4.15`, quindi esegui lo script.
</details>
## Personalizza le opzioni VPN
### Utilizza server DNS alternativi
Per impostazione predefinita, i client sono configurati per utilizzare [Google Public DNS](https://developers.google.com/speed/public-dns/) quando la VPN è attiva. Durante l'installazione della VPN, puoi facoltativamente specificare server DNS personalizzati per tutte le modalità VPN. Esempio:```bash
sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh
Utilizza VPN_DNS_SRV1 per specificare il server DNS primario e VPN_DNS_SRV2 per specificare il server DNS secondario (opzionale).
Di seguito è riportato un elenco di alcuni popolari provider DNS pubblici per tuo riferimento.
| Provider | DNS primario | DNS secondario | Note |
|---|
| Google Public DNS | 8.8.8.8 | 8.8.4.4 | Predefinito in questo progetto |
| Cloudflare | 1.1.1.1 | 1.0.0.1 | Vedi anche: Cloudflare for families |
| Quad9 | 9.9.9.9 | 149.112.112.112 | Blocca i domini malevoli |
| OpenDNS | 208.67.222.222 | 208.67.220.220 | Blocca i domini di phishing, configurabile. |
| CleanBrowsing | 185.228.168.9 | 185.228.169.9 | Filtri per domini disponibili |
| NextDNS | Variabile | Variabile | Blocco annunci, livello gratuito disponibile. Scopri di più. |
| Control D | Variabile | Variabile | Blocco annunci, configurabile. Scopri di più. |
Se hai bisogno di cambiare i server DNS dopo la configurazione della VPN, consulta Utilizzo avanzato.
[!NOTE] Se IKEv2 è già configurato sul server, le variabili sopra indicate non hanno effetto per la modalità IKEv2. In tal caso, per personalizzare le opzioni IKEv2 come i server DNS, puoi prima rimuovere IKEv2, poi configurarlo di nuovo usando
sudo ikev2.sh.
Durante l'installazione della VPN, gli utenti avanzati possono opzionalmente personalizzare le opzioni IKEv2.
Durante l'installazione della VPN, puoi saltare IKEv2 e installare solo le modalità IPsec/L2TP e IPsec/XAuth ("Cisco IPsec"):```bash sudo VPN_SKIP_IKEV2=yes sh vpn.sh
(Opzionale) Se desideri specificare server DNS personalizzati per i client VPN, definisci `VPN_DNS_SRV1` ed eventualmente `VPN_DNS_SRV2`. Vedi [Utilizzare server DNS alternativi](#use-alternative-dns-servers) per dettagli. Successivamente, esegui lo script helper IKEv2 per configurare IKEv2 in modo interattivo utilizzando opzioni personalizzate:```bash
sudo ikev2.sh
È possibile personalizzare le seguenti opzioni: nome DNS del server VPN, nome e periodo di validità del primo client, server DNS per i client VPN e se proteggere con password i file di configurazione del client.
Nota: La variabile VPN_SKIP_IKEV2 non ha effetto se IKEv2 è già configurato sul server. In tal caso, per personalizzare le opzioni IKEv2, puoi prima rimuovere IKEv2, poi configurarlo di nuovo usando sudo ikev2.sh.
Quando installi la VPN, puoi opzionalmente specificare un nome DNS per l'indirizzo del server IKEv2. Il nome DNS deve essere un nome di dominio completo (FQDN). Esempio:```bash sudo VPN_DNS_NAME='vpn.example.com' sh vpn.sh
Allo stesso modo, puoi specificare un nome per il primo client IKEv2. Il valore predefinito è `vpnclient` se non specificato.```bash
sudo VPN_CLIENT_NAME='your_client_name' sh vpn.sh
Per impostazione predefinita, i client sono impostati per utilizzare Google Public DNS quando la VPN è attiva. È possibile specificare server DNS personalizzati per tutte le modalità VPN. Esempio:```bash sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh
Per impostazione predefinita, non è richiesta alcuna password quando si importa la configurazione del client IKEv2. È possibile scegliere di proteggere i file di configurazione del client utilizzando una password casuale.```bash
sudo VPN_PROTECT_CONFIG=yes sh vpn.sh
| Parametro IKEv1* | Valore predefinito | Personalizza (variabile d'ambiente)** |
|---|---|---|
| Indirizzo server (nome DNS) | - | No, ma puoi connetterti usando un nome DNS |
| Indirizzo server (IP pubblico) | Rilevamento automatico | VPN_PUBLIC_IP |
| Chiave pre-condivisa IPsec | Generazione automatica | VPN_IPSEC_PSK |
| Nome utente VPN | vpnuser | VPN_USER |
| Password VPN | Generazione automatica | VPN_PASSWORD |
| Server DNS per i client | Google Public DNS | VPN_DNS_SRV1, VPN_DNS_SRV2 |
| Salta configurazione IKEv2 | no | VPN_SKIP_IKEV2=yes |
* Questi parametri IKEv1 sono per le modalità IPsec/L2TP e IPsec/XAuth ("Cisco IPsec").
** Definisci queste variabili d'ambiente quando esegui vpn(setup).sh.
* Questi parametri IKEv2 sono per la modalità IKEv2.
** Definisci queste variabili d'ambiente quando esegui vpn(setup).sh, o quando configuri IKEv2 in modalità automatica (sudo ikev2.sh --auto).
*** Possono essere personalizzati durante la configurazione interattiva di IKEv2 (sudo ikev2.sh). Fare riferimento all'opzione 1 sopra.
**** Usa VPN_CLIENT_VALIDITY per specificare il periodo di validità del certificato client in mesi. Deve essere un numero intero compreso tra 1 e 120.
Oltre a questi parametri, gli utenti avanzati possono anche personalizzare le sottoreti VPN durante la configurazione della VPN.
Collega il tuo computer o dispositivo alla VPN. Consulta:
Leggi 📖 Il libro VPN per accedere a contenuti extra.
Goditi la tua VPN personale! ✨🎉🚀✨
Utenti Windows: Per la modalità IPsec/L2TP, è necessaria una modifica una tantum del registro se il server VPN o il client si trovano dietro un NAT (es. router domestico).
Lo stesso account VPN può essere utilizzato da più dispositivi. Tuttavia, a causa di una limitazione di IPsec/L2TP, se desideri connettere più dispositivi dallo stesso NAT (es. router domestico), devi utilizzare la modalità IKEv2 o IPsec/XAuth. Per visualizzare o aggiornare gli account utente VPN, consulta Gestione utenti VPN.
Per server con firewall esterno (es. EC2/GCE), apri le porte UDP 500 e 4500 per la VPN. Utenti Aliyun, vedere #433.
I client sono configurati per utilizzare Google Public DNS quando la VPN è attiva. Se si preferisce un altro provider DNS, consulta Utilizzo avanzato.
L'uso del supporto kernel può migliorare le prestazioni di IPsec/L2TP. È disponibile su tutti i sistemi supportati. Gli utenti Ubuntu devono installare il pacchetto linux-modules-extra-$(uname -r) ed eseguire service xl2tpd restart.
Gli script eseguiranno il backup dei file di configurazione esistenti prima di apportare modifiche, con suffisso .old-data-ora.
Usa questo comando per aggiornare Libreswan (changelog | announce) sul tuo server VPN.```bash wget https://get.vpnsetup.net/upg -O vpnup.sh && sudo sh vpnup.sh
<details>
<summary>
Clicca qui se non riesci a scaricare.
</summary>
Puoi anche usare `curl` per scaricare:```bash
curl -fsSL https://get.vpnsetup.net/upg -o vpnup.sh && sudo sh vpnup.sh
URL di aggiornamento alternativi:```bash https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnupgrade.sh https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnupgrade.sh
Se non riesci a scaricare, apri [vpnupgrade.sh](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/extras/vpnupgrade.sh), poi clicca sul pulsante `Raw` a destra. Premi `Ctrl/Cmd+A` per selezionare tutto, `Ctrl/Cmd+C` per copiare, quindi incolla nel tuo editor preferito.
</details>
La versione supportata più recente di Libreswan è `5.3.1`. Controlla la versione installata: `ipsec --version`.
**Nota:** `xl2tpd` può essere aggiornato usando il gestore pacchetti del tuo sistema, come `apt-get` su Ubuntu/Debian.
## Gestisci utenti VPN
Vedi [Gestisci utenti VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md).
- [Gestisci utenti VPN usando script helper](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md#manage-vpn-users-using-helper-scripts)
- [Visualizza utenti VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md#view-vpn-users)
- [Visualizza o aggiorna il PSK IPsec](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md#view-or-update-the-ipsec-psk)
- [Gestisci manualmente gli utenti VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md#manually-manage-vpn-users)
## Uso avanzato
Vedi [Uso avanzato](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md).
- [Usa server DNS alternativi](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#use-alternative-dns-servers)
- [Cambiamenti del nome DNS e dell'IP del server](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#dns-name-and-server-ip-changes)
- [VPN solo IKEv2](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#ikev2-only-vpn)
- [Abilita la perfect forward secrecy IKEv2](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#enable-ikev2-perfect-forward-secrecy)
- [IP e traffico VPN interni](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#internal-vpn-ips-and-traffic)
- [Specifica l'IP pubblico del server VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#specify-vpn-servers-public-ip)
- [Personalizza le sottoreti VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#customize-vpn-subnets)
- [Supporto IPv6](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#ipv6-support)
- [Port forwarding verso client VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#port-forwarding-to-vpn-clients)
- [Split tunneling](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#split-tunneling)
- [Accedi alla sottorete del server VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#access-vpn-servers-subnet)
- [Accedi ai client VPN dalla sottorete del server](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#access-vpn-clients-from-servers-subnet)
- [Modifica le regole IPTables](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#modify-iptables-rules)
- [Distribuisci il controllo di congestione Google BBR](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#deploy-google-bbr-congestion-control)
## Disinstalla la VPN
Per disinstallare la VPN IPsec, esegui lo [script helper](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/extras/vpnuninstall.sh):
> [!CAUTION]
> Questo script helper rimuoverà la VPN IPsec dal tuo server. Tutta la configurazione VPN verrà **cancellata permanentemente**, e Libreswan e xl2tpd saranno rimossi. Questa operazione **non può essere annullata**!```bash
wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.sh
Puoi anche usare curl per scaricare:```bash
curl -fsSL https://get.vpnsetup.net/unst -o unst.sh && sudo bash unst.sh
URL alternativi degli script:```bash
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnuninstall.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnuninstall.sh
Per maggiori informazioni, vedi Disinstallare la VPN.
Copyright (C) 2014-2026 Lin Song 
Basato sul lavoro di Thomas Sarlandie (Copyright 2012)

Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 3.0 Unported
Attribuzione richiesta: includi il mio nome in qualsiasi opera derivata e fammi sapere come l'hai migliorata!
| Parametro IKEv2* | Valore predefinito | Personalizza (variabile d'ambiente)** | Personalizza (interattivo)*** |
|---|
| Indirizzo server (nome DNS) | - | VPN_DNS_NAME | ✅ |
| Indirizzo server (IP pubblico) | Rilevamento automatico | VPN_PUBLIC_IP | ✅ |
| Nome del primo client | vpnclient | VPN_CLIENT_NAME | ✅ |
| Server DNS per i client | Google Public DNS | VPN_DNS_SRV1, VPN_DNS_SRV2 | ✅ |
| Proteggi file di configurazione del client | no | VPN_PROTECT_CONFIG=yes | ✅ |
| Abilita/Disabilita MOBIKE | Abilita se supportato | ❌ | ✅ |
| Validità certificato client | 10 anni (120 mesi) | VPN_CLIENT_VALIDITY**** | ✅ |
| Validità certificato CA e server | 10 anni (120 mesi) | ❌ | ❌ |
| Nome certificato CA | IKEv2 VPN CA | ❌ | ❌ |
| Dimensione chiave certificato | 3072 bit | ❌ | ❌ |