Torna agli aggiornamenti
UpdatedAug 8, 2026

Setup IPsec VPN — Updated!

Configurazione automatizzata del server VPN IPsec con supporto IPsec/L2TP, Cisco IPsec e IKEv2. Include script di supporto per la gestione di utenti e certificati e genera profili per client iOS, macOS, Android e Windows.

Condividi

English | 简体中文 | 繁體中文 | 日本語 | Русский

Script di installazione automatica per server IPsec VPN

Build Status GitHub Stars Docker Stars Docker Pulls

Configura il tuo server IPsec VPN in pochi minuti, con IPsec/L2TP, Cisco IPsec e IKEv2.

Una VPN IPsec crittografa il traffico di rete, cosicché nessuno tra te e il server VPN possa intercettare i tuoi dati mentre viaggiano via Internet. Questo è particolarmente utile quando si utilizzano reti non sicure, ad esempio in bar, aeroporti o camere d'albergo.

Useremo Libreswan come server IPsec e xl2tpd come provider L2TP.

Caratteristiche:

  • Configurazione del server IPsec VPN completamente automatizzata, nessun input richiesto all'utente
  • Supporta IKEv2 con cipher forti e veloci (es. AES-GCM)
  • Genera profili VPN per la configurazione automatica di dispositivi iOS, macOS e Android
  • Supporta Windows, macOS, iOS, Android, Chrome OS e Linux come client VPN
  • Include script di supporto per gestire utenti e certificati VPN

Disponibile anche:

Avvio rapido

Per prima cosa, prepara il tuo server Linux* con l'installazione di un sistema operativo supportato.

Usa questo comando in una sola riga per configurare un server IPsec VPN:```bash wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh

I tuoi dati di accesso VPN verranno generati casualmente e visualizzati al termine.

> [!TIP]
> Opzionalmente, installa [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://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/docs/images/script-demo.svg"></p>
</details>
<details>
<summary>
Fai clic 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 alternativi per l'installazione:```bash https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh

If you are unable to download, open [vpnsetup.sh](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/vpnsetup.sh), then click the `Raw` button on the right. Press `Ctrl/Cmd+A` to select all, `Ctrl/Cmd+C` to copy, then paste into your favorite editor.

</details>

A pre-built [Docker image](https://github.com/hwdsl2/docker-ipsec-vpn-server) is also available. For other options and client setup, read the sections below.

\* A cloud server, virtual private server (VPS) or dedicated server.

## Community

- 📬 [Subscribe for project updates](https://selfhostedstack.beehiiv.com/subscribe?utm_campaign=vpn) (1–2 emails/month) — get free VPN and AI deployment guides (PDF)
- 💬 Join the [r/selfhostedstack](https://www.reddit.com/r/selfhostedstack/) community for discussions
- ⭐ Star the repository if you find it useful — it helps others discover it

## Requirements

A cloud server, virtual private server (VPS) or dedicated server, with an install of:

- Ubuntu 26.04, 24.04 or 22.04
- Debian 13, 12 or 11
- CentOS Stream 10 or 9
- Rocky Linux or AlmaLinux
- Oracle Linux

<details>
<summary>
Other supported Linux distributions.
</summary>

- Raspberry Pi OS (Raspbian)
- Kali Linux
- Alpine Linux
- Red Hat Enterprise Linux (RHEL)
</details>

This also includes Linux VMs in public clouds, such as [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/) and [Microsoft Azure](https://azure.microsoft.com). Public cloud users can also deploy using [user data](https://blog.ls20.com/ipsec-l2tp-vpn-auto-setup-for-ubuntu-12-04-on-amazon-ec2/#vpnsetup).

Quick deploy to:

[![Deploy to Linode](https://assets.kitploit.com/production/public/readmes/647/14c2143c20d7c521b606f90a0cf1610d8bd96b3f6516f422d8ca848b879bb6fc.png)](https://cloud.linode.com/stackscripts/37239) &nbsp;[![Deploy to Azure](https://assets.kitploit.com/production/public/readmes/647/79c45f89c80fa35c65259790605f75fe6b65db10aacefa870a55784152a9d31e.png)](azure/README.md)

[**&raquo; I want to run my own VPN but don't have a server for that**](https://blog.ls20.com/ipsec-l2tp-vpn-auto-setup-for-ubuntu-12-04-on-amazon-ec2/#gettingavps)

For servers with an external firewall (e.g. [EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)/[GCE](https://cloud.google.com/vpc/docs/firewalls)), open UDP ports 500 and 4500 for the VPN.

A pre-built [Docker image](https://github.com/hwdsl2/docker-ipsec-vpn-server) is also available. Advanced users can install on a [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]
> **DO NOT** run these scripts on your PC or Mac! They should only be used on a server!

## Installation

First, update your server with `sudo apt-get update && sudo apt-get dist-upgrade` (Ubuntu/Debian) or `sudo yum update` and reboot. This is optional, but recommended.

To install the VPN, please choose one of the following options:

**Option 1:** Have the script generate random VPN credentials for you (will be displayed when finished).```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 essere composta da 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.

Fai clic qui se non riesci a scaricare.

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 il file, apri vpnsetup.sh, quindi fai clic sul pulsante Raw a destra. Premi Ctrl/Cmd+A per selezionare tutto, Ctrl/Cmd+C per copiare, quindi incolla nel tuo editor preferito.

Voglio installare la vecchia versione 4 di Libreswan.

In generale si consiglia di utilizzare l'ultima versione 5 di Libreswan, che è la versione predefinita in questo progetto. Tuttavia, se vuoi installare la meno recente 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://gitlab.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

### Usa 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 uno o più 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

Usa VPN_DNS_SRV1 per specificare il server DNS primario e VPN_DNS_SRV2 per specificare il server DNS secondario (facoltativo).

Di seguito è riportato un elenco di alcuni popolari provider DNS pubblici per riferimento.

ProviderDNS primarioDNS secondarioNote
Google Public DNS8.8.8.88.8.4.4Predefinito in questo progetto
Cloudflare1.1.1.11.0.0.1Vedi anche: Cloudflare for families
Quad99.9.9.9149.112.112.112Blocca i domini dannosi
OpenDNS208.67.222.222208.67.220.220Blocca i domini di phishing, configurabile.
CleanBrowsing185.228.168.9185.228.169.9Filtri di dominio disponibili
NextDNSVariaVariaBlocco pubblicità, piano gratuito disponibile. Scopri di più.
Control DVariaVariaBlocco pubblicità, configurabile. Scopri di più.

Se devi cambiare i server DNS dopo la configurazione della VPN, consulta Utilizzo avanzato.

[!NOTE] Se IKEv2 è già configurato sul server, le variabili sopra non hanno effetto per la modalità IKEv2. In tal caso, per personalizzare le opzioni IKEv2 come i server DNS, puoi prima rimuovere IKEv2, quindi configurarlo di nuovo usando sudo ikev2.sh.

Personalizza le opzioni IKEv2

Durante l'installazione della VPN, gli utenti avanzati possono opzionalmente personalizzare le opzioni IKEv2.

Opzione 1: salta IKEv2 durante la configurazione della VPN, quindi configura IKEv2 usando opzioni personalizzate.

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` e facoltativamente `VPN_DNS_SRV2`. Vedi [Utilizzare server DNS alternativi](#use-alternative-dns-servers) per i dettagli.

Successivamente, esegui lo script di supporto IKEv2 per configurare IKEv2 in modalità interattiva usando opzioni personalizzate:```bash
sudo ikev2.sh

Puoi 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 dei 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, quindi configurarlo nuovamente usando sudo ikev2.sh.

Opzione 2: Personalizzare le opzioni IKEv2 utilizzando le variabili d'ambiente.

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

Analogamente, 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 configurati 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 client IKEv2. Puoi scegliere di proteggere i file di configurazione client utilizzando una password casuale.```bash
sudo VPN_PROTECT_CONFIG=yes sh vpn.sh
Per riferimento: elenco dei parametri IKEv1 e IKEv2.
Parametro IKEv1*Valore predefinitoPersonalizza (variabile d'ambiente)**
Indirizzo del server (nome DNS)-No, ma puoi connetterti usando un nome DNS
Indirizzo del server (IP pubblico)Rilevamento automaticoVPN_PUBLIC_IP
Chiave pre-condivisa IPsecGenerazione automaticaVPN_IPSEC_PSK
Nome utente VPNvpnuserVPN_USER
Password VPNGenerazione automaticaVPN_PASSWORD
Server DNS per i clientGoogle Public DNSVPN_DNS_SRV1, VPN_DNS_SRV2
Salta configurazione IKEv2noVPN_SKIP_IKEV2=yes

* Questi parametri IKEv1 sono per le modalità IPsec/L2TP e IPsec/XAuth ("Cisco IPsec").
** Definire queste variabili d'ambiente quando si esegue vpn(setup).sh.

Parametro IKEv2*Valore predefinitoPersonalizza (variabile d'ambiente)**Personalizza (interattivo)***
Indirizzo del server (nome DNS)-VPN_DNS_NAME
Indirizzo del server (IP pubblico)Rilevamento automaticoVPN_PUBLIC_IP
Nome del primo clientvpnclientVPN_CLIENT_NAME
Server DNS per i clientGoogle Public DNSVPN_DNS_SRV1, VPN_DNS_SRV2
Proteggi file di configurazione clientnoVPN_PROTECT_CONFIG=yes
Abilita/Disabilita MOBIKEAbilita se supportato
Validità certificato client10 anni (120 mesi)VPN_CLIENT_VALIDITY****
Validità certificato CA e server10 anni (120 mesi)
Nome certificato CAIKEv2 VPN CA
Dimensione chiave del certificato3072 bit

* Questi parametri IKEv2 sono per la modalità IKEv2.
** Definire queste variabili d'ambiente quando si esegue vpn(setup).sh, oppure quando si configura 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.
**** Utilizzare 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.

Prossimi passi

Leggi questo in altre lingue: English, 简体中文, 繁體中文, 日本語, Русский.

Configura il tuo computer o dispositivo per utilizzare la VPN. Fare riferimento a:

Configurare i client VPN IKEv2 (consigliato)

Configurare i client VPN IPsec/L2TP

Configurare i client VPN IPsec/XAuth ("Cisco IPsec")

Leggi 📖 VPN book per accedere a contenuti extra.

Goditi la tua VPN personale! ✨🎉🚀✨

Note importanti

Utenti Windows: Per la modalità IPsec/L2TP, è necessaria una modifica del registro una tantum se il server o il client VPN si trova dietro NAT (es. router domestico).

Lo stesso account VPN può essere utilizzato da più dispositivi. Tuttavia, a causa di una limitazione di IPsec/L2TP, se si desidera connettere più dispositivi dallo stesso NAT (es. router domestico), è necessario utilizzare la modalità IKEv2 o IPsec/XAuth. Per visualizzare o aggiornare gli account utente VPN, vedere Gestire gli utenti VPN.

Per i server con firewall esterno (es. EC2/GCE), aprire le porte UDP 500 e 4500 per la VPN. Gli utenti Aliyun, vedere #433.

I client sono configurati per utilizzare Google Public DNS quando la VPN è attiva. Se si preferisce un altro provider DNS, vedere Utilizzo avanzato.

L'uso del supporto kernel potrebbe migliorare le prestazioni di IPsec/L2TP. È disponibile su tutti i sistemi operativi 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-date-time.

Aggiornare Libreswan

Usa questo one-liner per aggiornare Libreswan (changelog | annunci) sul tuo server VPN.```bash wget https://get.vpnsetup.net/upg -O vpnup.sh && sudo sh vpnup.sh

<details>
<summary>
Fai clic 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 il file, apri [vpnupgrade.sh](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/extras/vpnupgrade.sh), poi fai clic sul pulsante `Raw` a destra. Premi `Ctrl/Cmd+A` per selezionare tutto, `Ctrl/Cmd+C` per copiare, quindi incolla nel tuo editor preferito.
</details>

L'ultima versione supportata di Libreswan è `5.3.2`. Controlla la versione installata: `ipsec --version`.

**Nota:** `xl2tpd` può essere aggiornato utilizzando il gestore pacchetti del tuo sistema, ad esempio `apt-get` su Ubuntu/Debian.

## Gestire gli utenti VPN

Vedi [Gestire gli utenti VPN](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/manage-users.md).

- [Gestire gli utenti VPN tramite gli script di supporto](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/manage-users.md)
- [Visualizzare gli utenti VPN](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/manage-users.md)
- [Visualizzare o aggiornare il PSK IPsec](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/manage-users.md)
- [Gestire manualmente gli utenti VPN](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/manage-users.md)

## Utilizzo avanzato

Vedi [Utilizzo avanzato](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md).

- [Usare server DNS alternativi](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Modifiche al nome DNS e all'IP del server](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [VPN solo IKEv2](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Abilitare la segretezza perfetta in avanti per IKEv2](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [IP e traffico interni della VPN](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Specificare l'IP pubblico del server VPN](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Personalizzare le sottoreti VPN](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Supporto IPv6](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Inoltro delle porte ai client VPN](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Split tunneling](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Accedere alla sottorete del server VPN](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Accedere ai client VPN dalla sottorete del server](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Modificare le regole IPTables](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)
- [Implementare il controllo della congestione Google BBR](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/docs/advanced-usage.md)

## Disinstallare la VPN

Per disinstallare IPsec VPN, esegui lo [script di supporto](https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/blob/master/extras/vpnuninstall.sh):

> [!CAUTION]
> Questo script di supporto rimuoverà IPsec VPN dal tuo server. Tutta la configurazione VPN verrà **eliminata definitivamente**, e Libreswan e xl2tpd verranno rimossi. Questo **non può essere annullato**!```bash
wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.sh
Clicca qui se non riesci a scaricare.

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, consulta Disinstallare la VPN.

Feedback e Domande

Licenza

Copyright (C) 2014-2026 Lin Song View my profile on LinkedIn
Basato su il lavoro di Thomas Sarlandie (Copyright 2012)

Creative Commons License
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!

Categorie