OpenVPN è un software VPN open source che ci consente di creare un tunnel VPN basato su SSL. Immagina di voler connetterti alla tua intranet cooperativa da una posizione remota. Bene, non preoccuparti perché se hai la configurazione del server VPN, questo può essere possibile. Virtual Private Network (VPN) fornisce un tunnel sicuro che estende la rete privata attraverso una rete pubblica, ovvero aiuta a creare una WAN (Wide Area Network) dalle reti locali (LAN) esistenti. Di conseguenza, gli utenti possono inviare in modo sicuro i dati attraverso le reti pubbliche come se fossero collegati direttamente alla propria LAN.
Puoi saperne di più su OpenVPN qui.
Installa e configura il server OpenVPN su Fedora 29/28/CentOS 7
Senza molta teoria, diamo un'occhiata a una procedura passo passo su come installare e configurare OpenVPN Server su Fedora 29/28/CentOS 7.
Aggiorna il tuo server.
dnf update << Fedora yum update << Fedora/CentOS
Installa OpenVPN e Easy-RSA su Fedora 29/28
OpenVPN fornisce un demone VPN robusto e altamente flessibile mentre il pacchetto Easy-RSA viene utilizzato per generare coppie di chiavi SSL utilizzate per proteggere le connessioni VPN. Entrambi i pacchetti OpenVPN e Easy-RSA sono disponibili nei repository Fedora predefiniti. Esegui il comando seguente per installarli.
dnf install openvpn easy-rsa
Installa OpenVPN e Easy-RSA su CentOS 7
OpenVPN non è disponibile nei repository CentOS predefiniti ma è disponibile in EPEL, quindi è necessario installare i repository EPEL prima di poter installare OpenVPN.
Per aggiungere pacchetti extra per Enterprise Linux (EPEL), esegui uno dei seguenti comandi;
yum install epel-release
oppure
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -ivh epel-release-latest-7.noarch.rpm
Installa OpenVPN e Easy-RSA
yum install openvpn easy-rsa
Crea la CA locale e genera le chiavi del server e il file del certificato
Crea una directory in cui archiviare le chiavi del server e i file dei certificati.
mkdir /etc/openvpn/easy-rsa
Copia gli script di generazione di chiavi/certificati installati da Easy-RSA dalla directory predefinita alla directory creata sopra.
cp -air /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa
Vai a /etc/openvpn/easy-rsa
directory e avvia la nuova PKI.
cd /etc/openvpn/easy-rsa ./easyrsa init-pki
Crea il certificato CA. Verrà richiesta la password di crittografia e il nome comune del server.
./easyrsa build-ca
... writing new private key to '/etc/openvpn/easy-rsa/pki/private/ca.key.EajtR0SkLM' Enter PEM pass phrase: PASSWORD Verifying - Enter PEM pass phrase: PASSWORD ----- ... ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:server CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/openvpn/easy-rsa/pki/ca.crt
Come affermato, il certificato CA è archiviato in /etc/openvpn/easy-rsa/pki/ca.crt
.
Genera il file della chiave Diffie-Hellman che può essere utilizzato durante l'handshake TLS con i client in connessione.
./easyrsa gen-dh
Questo genererà la chiave DH e memorizzerà come /etc/openvpn/easy-rsa/pki/dh.pem
.
Genera una chiave e un file di certificato per il server.
./easyrsa build-server-full server nopass
Genera una chiave e un file di certificato per il client.
./easyrsa build-client-full client nopass
Nel caso in cui sia necessario invalidare un certificato precedentemente firmato, generare un certificato di revoca.
./easyrsa gen-crl
Questo memorizza il certificato di revoca in /etc/openvpn/easy-rsa/pki/crl.pem
.
Genera chiave di autenticazione precondivisa TLS/SSL
openvpn --genkey --secret /etc/openvpn/easy-rsa/pki/ta.key
Copia certificati/chiavi generati nella directory di configurazione del server.
cp -rp /etc/openvpn/easy-rsa/pki/{ca.crt,dh.pem,ta.key,issued,private} /etc/openvpn/server/
Configura il server OpenVPN
OpenVPN ha un file di configurazione di esempio all'interno della sua directory di documentazione e quindi, per facilitarci la vita, copieremo l'esempio /usr/share/doc/openvpn{-2.4.6,}/sample/sample-config-files/server.conf
file in /etc/openvpn
per la modifica.
Su Fedora
cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/
Su CentOS 7
cp /usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn/server/
Modifica il server.conf
file come segue;
vim /etc/openvpn/server/server.conf
Modifica il file in modo che assomigli al seguente;
# Which TCP/UDP port should OpenVPN listen on? # Change to match your port and open it in the firewall port 1194 # TCP or UDP server? proto udp # "dev tun" will create a routed IP tunnel dev tun # Change path for certificates ca ca.crt cert issued/server.crt key private/server.key # Diffie hellman exchange key path dh dh.pem # Network topology topology subnet # OpenVPN Network IP. For below, The server will take 10.8.0.1 for itself, # the rest will be made available to clients. server 172.16.0.0 255.255.255.0 # this directive will configure all clients to redirect their default # network gateway through the VPN push "redirect-gateway def1 bypass-dhcp" # DNS servers push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" # For compression compatible with older clients use comp-lzo. comp-lzo # Run VPN with limited privileges user nobody group nobody # Status log file status /var/log/openvpn/openvpn-status.log # TLS/SSL pre-shared authentication key tls-auth ta.key 0 # Make VPN log directory and log file log-append /var/log/openvpn/openvpn.log #Append this line to change authentication algorithm (HMAC) from SHA1 to SHA512 auth SHA512
Crea la directory di registro;
mkdir /var/log/openvpn/
Salva il file di configurazione
Configura percorso
Abilita l'inoltro IP
L'abilitazione dell'inoltro IP garantisce che il traffico dal client venga instradato attraverso l'indirizzo IP del server in modo che l'indirizzo IP del client sia mascherato.
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
Esegui il comando seguente per apportare le modifiche;
sysctl --system
Consenti la porta del servizio OpenVPN attraverso il firewall
firewall-cmd --add-port=1194/udp --permanent
Attiva IP Masquerading
firewall-cmd --add-masquerade --permanent
Inoltra il traffico ricevuto sulla sottorete OpenVPN specificata a un'interfaccia tramite la quale verranno inviati i pacchetti.
Trova l'interfaccia attraverso la quale vengono inviati i pacchetti eseguendo il comando seguente;
ip route get 8.8.8.8 8.8.8.8 via 192.168.43.1 dev enp0s8 src 192.168.43.23
Il nome dell'interfaccia potrebbe essere diverso per il tuo caso. Sostituisci di conseguenza.
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 172.16.0.0/24 -o enp0s8 -j MASQUERADE
Ricarica firewalld per rendere effettive le modifiche.
firewall-cmd --reload
Avvia e imposta OpenVPN start all'avvio.
systemctl start [email protected] systemctl enable [email protected]
Quando il servizio OpenVPN viene eseguito, creerà un'interfaccia di tunneling, tun0;
ip add show tun0 4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 172.16.0.1/24 brd 172.16.0.255 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::1155:c60c:c009:48c9/64 scope link stable-privacy valid_lft forever preferred_lft forever
Al server VPN viene assegnato l'indirizzo IP, 172.16.0.1 mentre al primo client verrà assegnato 172.16.0.2.
Configura client VPN
Affinché il client VPN si connetta al server VPN, è necessaria una copia del certificato CA, della chiave client, del certificato client e della chiave di autenticazione TLS/SSL generati sopra. Quindi, copia questi file sul client di destinazione e posizionali in una directory conveniente.
cd /etc/openvpn/easy-rsa/pki/ scp {ca.crt,issued/client.crt,private/client.key,ta.key} [email protected]:~/
Installa il client OpenVPN
- Se stai usando un server Linux/Unix come client, installa il client OpenVPN usando ad esempio il rispettivo gestore di pacchetti;
apt install openvpn yum install openvpn
- Se ti connetti da un computer Windows, puoi semplicemente scaricare il programma di installazione del client OpenVPN dalla pagina dei download di OpenVPN e installarlo.
Crea il file di configurazione OpenVPN per il client come mostrato di seguito. Ad esempio, ho copiato il certificato e i file chiave nella mia home directory sul client.
[email protected]:/home/amos# ls ca.crt client.crt client.key ta.key
vim client.ovpn
client tls-client pull dev tun proto udp remote 192.168.43.69 1194 resolv-retry infinite nobind dhcp-option DNS 8.8.8.8 user nobody group nogroup persist-key persist-tun key-direction 1 tls-auth ta.key 1 comp-lzo verb 3 ca ca.crt cert client.crt key client.key auth SHA512
Per connetterti al server OpenVPN dal client, esegui uno dei comandi seguenti;
sudo openvpn client.ovpn
o
sudo openvpn --config client.ovpn
Se la connessione riesce, dovresti vedere un Initialization Sequence Completed
.
Mon Dec 31 03:54:39 2018 TUN/TAP device tun0 opened Mon Dec 31 03:54:39 2018 TUN/TAP TX queue length set to 100 Mon Dec 31 03:54:39 2018 do_ifconfig, tt->did_ifconfig_ipv6_setup=0 Mon Dec 31 03:54:39 2018 /sbin/ip link set dev tun0 up mtu 1500 Mon Dec 31 03:54:39 2018 /sbin/ip addr add dev tun0 172.16.0.2/24 broadcast 172.16.0.255 Mon Dec 31 03:54:39 2018 /sbin/ip route add 192.168.43.69/32 dev enp0s8 Mon Dec 31 03:54:39 2018 /sbin/ip route add 0.0.0.0/1 via 172.16.0.1 Mon Dec 31 03:54:39 2018 /sbin/ip route add 128.0.0.0/1 via 172.16.0.1 Mon Dec 31 03:54:39 2018 GID set to nogroup Mon Dec 31 03:54:39 2018 UID set to nobody Mon Dec 31 03:54:39 2018 Initialization Sequence Completed
Se puoi controllare l'interfaccia, dovresti vedere un'interfaccia di tunneling creata.
ip add sh tun0 20: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 172.16.0.2/24 brd 172.16.0.255 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::dc37:c115:60f:6b86/64 scope link flags 800 valid_lft forever preferred_lft forever
Ti sei connesso con successo al tuo server VPN.
Questo è tutto su come installare e configurare il server OpenVPN su Fedora 29/CentOS 7. Il tuo server OpenVPN è completamente operativo. Divertiti.
Esercitazioni correlate
Configura IPSEC VPN utilizzando StrongSwan su Ubuntu 18.04
Configura il client VPN strongSwan su Ubuntu 18.04/CentOS 8
Configura la VPN IPSEC usando StrongSwan su Debian 10