
Configura il tuo server OpenVPN su Debian, Ubuntu, Fedora, CentOS, Arch Linux e altro ancora.
Installatore OpenVPN per Debian, Ubuntu, Fedora, openSUSE, CentOS, Amazon Linux, Arch Linux, Oracle Linux, Rocky Linux e AlmaLinux.
Questo script ti permetterà di configurare e gestire il tuo server VPN sicuro in pochi secondi.
Questo script è pensato per essere eseguito sul tuo server, che sia un VPS, un server dedicato o anche un computer a casa.
Una volta configurato, potrai generare file di configurazione client per ogni dispositivo che desideri connettere.
Ogni client potrà instradare il proprio traffico internet attraverso il server, completamente crittografato.```mermaid graph LR A[Phone] -->|Encrypted| VPN B[Laptop] -->|Encrypted| VPN C[Computer] -->|Encrypted| VPN
VPN[OpenVPN Server]
VPN --> I[Internet]
## Perché OpenVPN?
OpenVPN era lo standard de facto per le VPN open-source quando questo script è stato creato. WireGuard è arrivato dopo ed è più semplice e veloce per la maggior parte dei casi d'uso. Dai un'occhiata a [wireguard-install](https://github.com/angristan/wireguard-install).
Detto questo, OpenVPN ha ancora senso quando hai bisogno di:
- **Supporto TCP**: funziona in ambienti restrittivi dove UDP è bloccato (reti aziendali, aeroporti, hotel, ecc.)
- **Chiavi private protette da password**: le configurazioni WireGuard memorizzano la chiave privata in testo semplice
- **Compatibilità legacy**: esistono client per praticamente ogni piattaforma, inclusi sistemi più vecchi
## Caratteristiche
- Installa e configura un server OpenVPN pronto all'uso
- Interfaccia CLI per automazione e scripting (modalità non interattiva con output JSON)
- Rinnovo dei certificati sia per il client che per il server
- Elenca e monitora i client connessi
- Disconnessione immediata del client alla revoca del certificato (tramite interfaccia di gestione)
- Utilizza i [repository ufficiali OpenVPN](https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos) quando possibile per le ultime versioni stabili
- Regole del firewall e forwarding gestiti senza problemi (supporto nativo per firewalld e nftables, fallback iptables)
- Sottoreti VPN configurabili (IPv4: default `10.8.0.0/24`, IPv6: default `fd42:42:42:42::/112`)
- MTU del tunnel configurabile (default: `1500`)
- Se necessario, lo script può rimuovere pulitamente OpenVPN, inclusa la configurazione e le regole del firewall
- Impostazioni di crittografia personalizzabili, impostazioni predefinite migliorate (vedi [Sicurezza e Crittografia](#security-and-encryption) sotto)
- Utilizza le ultime funzionalità di OpenVPN quando disponibili (vedi [Sicurezza e Crittografia](#security-and-encryption) sotto)
- Varietà di resolver DNS da inviare ai client
- Scelta di utilizzare un resolver self-hosted con Unbound (supporta installazioni Unbound già esistenti)
- Scelta tra TCP e UDP
- Supporto flessibile IPv4/IPv6:
- Endpoint server IPv4 o IPv6 (come i client si connettono)
- Client solo IPv4, solo IPv6 o dual-stack (indirizzamento VPN e accesso a Internet)
- Tutte le combinazioni supportate: 4→4, 4→4/6, 4→6, 6→4, 6→6, 6→4/6
- Prevenzione automatica delle perdite: blocca il protocollo indesiderato in modalità single-stack
- Modalità non privilegiata: esegue come `nobody`/`nogroup`
- Blocca le perdite DNS su Windows 10
- Nome del certificato del server randomizzato
- Scelta di proteggere i client con una password (crittografia della chiave privata)
- Opzione per permettere a più dispositivi di utilizzare lo stesso profilo client simultaneamente (disabilita indirizzi IP persistenti)
- **Autenticazione tramite impronta digitale del peer** (OpenVPN 2.6+): Autenticazione semplificata simile a WireGuard senza una CA
- Molte altre piccole cose!
## Compatibilità
Lo script supporta queste distribuzioni Linux:
| | Supporto |
| ------------------- | ------- |
| AlmaLinux >= 8 | ✅ 🤖 |
| Amazon Linux 2023 | ✅ 🤖 |
| Arch Linux | ✅ 🤖 |
| CentOS Stream >= 8 | ✅ 🤖 |
| Debian >= 11 | ✅ 🤖 |
| Fedora >= 40 | ✅ 🤖 |
| openSUSE Leap >= 16 | ✅ 🤖 |
| openSUSE Tumbleweed | ✅ 🤖 |
| Oracle Linux >= 8 | ✅ 🤖 |
| Rocky Linux >= 8 | ✅ 🤖 |
| Ubuntu >= 18.04 | ✅ 🤖 |
Da notare:
- Lo script è regolarmente testato solo sulle distribuzioni contrassegnate con 🤖.
- È testato solo su architettura `amd64`.
- Lo script richiede `systemd`.
### Fornitori consigliati
- [Vultr](https://umami.stanislas.cloud/q/1HH9Thp8i): Località in tutto il mondo, supporto IPv6, a partire da \$2.5/mese
- [Hetzner](https://umami.stanislas.cloud/q/HdzaOJWq7): Località in tutto il mondo, IPv6, 20 TB di traffico, a partire da €3.59/mese
- [Digital Ocean](https://umami.stanislas.cloud/q/sEVh1l79B): Località in tutto il mondo, supporto IPv6, a partire da \$4/mese
## Utilizzo
Per prima cosa, scarica lo script sul tuo server e rendilo eseguibile:```bash
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
Devi eseguire lo script come root e avere il modulo TUN abilitato.
Il modo più semplice per iniziare è il menu interattivo:```bash ./openvpn-install.sh interactive
Questo ti guiderà attraverso l'installazione e la gestione dei client.
Nella tua home directory, avrai file `.ovpn`. Questi sono i file di configurazione del client. Scaricali dal tuo server (usando `scp` per esempio) e connettiti utilizzando il tuo client OpenVPN preferito.
Se hai domande, consulta prima le [FAQ](#faq). E se hai bisogno di aiuto, puoi aprire una [discussione](https://github.com/angristan/openvpn-install/discussions). Per favore, cerca prima tra gli issue e le discussioni esistenti.
### Modalità CLI
> [!WARNING]
> La compatibilità delle API non è garantita. Potrebbero verificarsi modifiche sostanziali tra le versioni. Se si utilizza questo script in modo programmatico (ad esempio, in automazione o CI/CD), bloccare un commit specifico anziché utilizzare il branch master.
Per automazione e scripting, usa l'interfaccia CLI:```bash
# Install with defaults
./openvpn-install.sh install
# Add a client
./openvpn-install.sh client add alice
# List clients
./openvpn-install.sh client list
# Revoke a client (immediately disconnects if connected)
./openvpn-install.sh client revoke alice
openvpn-install [options]
Commands: install Install and configure OpenVPN server uninstall Remove OpenVPN server client Manage client certificates server Server management interactive Launch interactive menu
Global Options: --verbose Show detailed output --log Log file path (default: openvpn-install.log) --no-log Disable file logging --no-color Disable colored output -h, --help Show help
Esegui `./openvpn-install.sh <command> --help` per le opzioni specifiche del comando.
#### Gestione client```bash
# Add a new client
./openvpn-install.sh client add alice
# Add a password-protected client
./openvpn-install.sh client add bob --password
# Revoke a client
./openvpn-install.sh client revoke alice
# Renew a client certificate
./openvpn-install.sh client renew bob --cert-days 365
Elenca tutti i clienti:```text $ ./openvpn-install.sh client list ══ Client Certificates ══ [INFO] Found 3 client certificate(s)
Name Status Expiry Remaining
alice Valid 2035-01-15 3650 days bob Valid 2035-01-15 3650 days charlie Revoked 2035-01-15 unknown
Output JSON per scripting: