GNU/Linux >> Znalost Linux >  >> Linux

Jak nainstalovat a nakonfigurovat OpenVPN Server na Ubuntu 20.04

OpenVPN je řešení VPN s otevřeným zdrojovým kódem pro podniky, které využívají techniky virtuální privátní sítě k vytváření bezpečných připojení typu point-to-point se zařízeními vzdáleného přístupu. OpenVPN je důvěryhodná technologie, kterou používá mnoho sítí VPN, aby zajistila, že všechna data odesílaná přes internet jsou šifrovaná a soukromá.

Jednoduše řečeno, OpenVPN vám umožňuje připojit se k dalším zařízením v rámci jedné zabezpečené sítě. Je multiplatformní a může to být Windows, Mac, Android, iOS a Linux. OpenVPN nabízí bohatou sadu funkcí včetně:

  • Neomezená šířka pásma
  • Neomezený počet přepínačů serveru
  • Použití více zařízení
  • Žádné úložiště protokolů
  • Volby protokolu
  • Více souběžných připojení

V tomto tutoriálu se naučíme, jak nainstalovat a nakonfigurovat OpenVPN server a klienta na Ubuntu 20.04 VPS.

Předpoklady

  • Nové Ubuntu 20.04 VPS na cloudové platformě Atlantic.net.
  • Na vašem serveru je nakonfigurováno heslo uživatele root.

Krok 1:Vytvořte cloudový server Atlantic.Net

Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte Ubuntu 20.04 s alespoň 1 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.

Jakmile se přihlásíte ke svému serveru Ubuntu 20.04, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.

apt-get update -y

Krok 2:Povolte přesměrování IP

Dále budete muset ve svém systému povolit přesměrování IP, aby OpenVPN mohlo správně směrovat provoz přes VPN.

Přesměrování IP můžete povolit úpravou souboru /etc/sysctl.conf:

nano /etc/sysctl.conf

Odkomentujte následující řádek:

net.ipv4.ip_forward = 1

Po dokončení uložte soubor a poté spusťte následující příkaz pro použití změn:

sysctl -p

Krok 3:Nainstalujte OpenVPN Server

apt-get install openvpn -y

Po dokončení instalace můžete přejít k dalšímu kroku.

Krok 4:Vytvořte certifikační autoritu

Chcete-li nastavit certifikační autoritu a infrastrukturu PKI, budete si muset do systému stáhnout EasyRSA. Můžete si jej stáhnout pomocí následujícího příkazu:

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

Po stažení rozbalte stažený soubor pomocí následujícího příkazu:

tar -xvzf EasyRSA-unix-v3.0.6.tgz

Dále přesuňte extrahovaný adresář do /etc/openvpn/ pomocí následujícího příkazu:

mv EasyRSA-v3.0.6 /etc/openvpn/easy-rsa

Dále změňte adresář na /etc/openvpn/easy-rsa a vytvořte konfigurační soubor EasyRSA:

cd /etc/openvpn/easy-rsa
nano vars

Přidejte následující řádky včetně vaší země, města a preferované e-mailové adresy:

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "INDIA"
set_var EASYRSA_REQ_PROVINCE    "Gujarat"
set_var EASYRSA_REQ_CITY        "Junagadh"
set_var EASYRSA_REQ_ORG         "Atlantic CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL     "[email protected]"
set_var EASYRSA_REQ_OU          "Atlantic EASY CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE      7500
set_var EASYRSA_CERT_EXPIRE     365
set_var EASYRSA_NS_SUPPORT  "no"
set_var EASYRSA_NS_COMMENT            "Atlantic CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

Až budete hotovi, uložte soubor.

Dále spusťte adresář PKI pomocí následujícího příkazu:

./easyrsa init-pki

Měli byste získat následující výstup:

Note: using Easy-RSA configuration from: ./vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki

Dále vytvořte certifikáty CA pomocí následujícího příkazu:

./easyrsa build-ca

Měli byste získat následující výstup:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
Generating RSA private key, 2048 bit long modulus (2 primes)
.....................................................................................................+++++
..................................................+++++
e is 65537 (0x010001)
Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG
139636302492992:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/openvpn/easy-rsa/pki/.rnd
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields, there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
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

Výše uvedený příkaz vygeneruje dva soubory s názvem ca.key a ca.crt. Tyto certifikáty budou použity k podepsání certifikátů vašeho serveru a klientů.

Krok 5:Vytvořte soubory certifikátu serveru

Dále budete muset vygenerovat klíčový pár a žádost o certifikát pro váš server.

Spuštěním následujícího příkazu vygenerujte klíč serveru s názvem atlantic-server:

./easyrsa gen-req atlantic-server nopass

Měli byste vidět následující výstup:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
.............................+++++
...+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/atlantic-server.key.IMonKybM0y'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [atlantic-server]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/atlantic-server.req
key: /etc/openvpn/easy-rsa/pki/private/atlantic-server.key

Tím se vygeneruje soukromý klíč a soubor žádosti o certifikát pro server.

Krok 6:Podepište klíč serveru pomocí CA

Dále budete muset podepsat klíč serveru atlantic pomocí certifikátu CA:

Klíč serveru můžete podepsat pomocí následujícího příkazu:

./easyrsa sign-req server atlantic-server

Měli byste vidět následující výstup:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

You are about to sign the following certi
ficate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 365 days:

subject=
commonName                = atlantic-server

Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'atlantic-server'
Certificate is to be certified until Jun 29 11:43:05 2021 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/atlantic-server.crt

Dále ověřte vygenerovaný soubor certifikátu pomocí následujícího příkazu:

openssl verify -CAfile pki/ca.crt pki/issued/atlantic-server.crt

Měli byste získat následující výstup:

pki/issued/atlantic-server.crt: OK

Dále spusťte následující příkaz a vygenerujte silný klíč Diffie-Hellman, který se použije pro výměnu klíčů:

./easyrsa gen-dh

Měli byste získat následující výstup:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
......................+...........................+............................................

DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem

Po vytvoření všech souborů certifikátů je zkopírujte do adresáře /etc/openvpn/server/:

cp pki/ca.crt /etc/openvpn/server/
cp pki/dh.pem /etc/openvpn/server/
cp pki/private/atlantic-server.key /etc/openvpn/server/
cp pki/issued/atlantic-server.crt /etc/openvpn/server/

Krok 7:Vygenerujte klientský certifikát a soubor klíče

Dále budete muset vytvořit soubor klíče a certifikátu pro klienta.

Nejprve spusťte následující příkaz k vytvoření souboru klíče klienta:

./easyrsa gen-req client nopass

Měli byste získat následující výstup:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
...+++++
........+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/client.key.JmBal6cmr8'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [client]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/client.req
key: /etc/openvpn/easy-rsa/pki/private/client.key

Dále podepište klientský klíč pomocí certifikátu CA:

./easyrsa sign-req client client

Měli byste získat následující výstup:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a client certificate for 365 days:

subject=
commonName                = client

Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client'
Certificate is to be certified until Jun 29 11:46:58 2021 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/client.crt

Dále zkopírujte všechny klientské certifikáty a soubory klíčů do adresáře /etc/openvpn/client/:

cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client.crt /etc/openvpn/client/
cp pki/private/client.key /etc/openvpn/client/

Krok 8:Nakonfigurujte OpenVPN Server

V tomto okamžiku jsou všechny certifikáty a soubory klíčů připraveny. Dále vytvořte nový konfigurační soubor OpenVPN v adresáři /etc/openvpn/:

nano /etc/openvpn/server.conf

Ke svému certifikátu a cestě klíče přidejte následující řádky:

port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/atlantic-server.crt
key /etc/openvpn/server/atlantic-server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-
CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-
CBC-SHA256
auth SHA512
auth-nocache
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nogroup
log-append /var/log/openvpn.log
verb 3

Po dokončení uložte soubor, poté spusťte službu OpenVPN a povolte její spuštění po restartu systému pomocí následujícího příkazu:

systemctl start [email protected]
systemctl enable [email protected]

Spuštěním následujícího příkazu ověřte stav služby OpenVPN:

systemctl status [email protected]

Měli byste získat následující výstup:

Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: active (running) since Mon 2020-06-29 11:48:25 UTC; 7s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 2868 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 2353)
Memory: 2.0M
CGroup: /system.slice/system-openvpn.slice/[email protected]
└─2868 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --conf>

Jun 29 11:48:25 vpnserver systemd[1]: Starting OpenVPN connection to server...
Jun 29 11:48:25 vpnserver systemd[1]: Started OpenVPN connection to server.

Jakmile se služba OpenVPN úspěšně spustí, vytvoří nové síťové rozhraní s názvem tun0. Můžete to ověřit pomocí následujícího příkazu:

ip a show tun0

Nové rozhraní tun0 byste měli získat v následujícím výstupu:

4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state 
UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::5f83:99a:30d:eb0/64 scope link stable-privacy
valid_lft forever preferred_lft forever

Krok 9:Vytvořte konfigurační soubor klienta

Dále budete muset vytvořit konfigurační soubor klienta OpenVPN s názvem client.ovpn. Tento soubor budete potřebovat k připojení vašeho OpenVPN serveru z klientského systému.

nano /etc/openvpn/client/client.ovpn

Přidejte následující řádky:

client
dev tun
proto udp
remote your-vpn-server-ip 1194
ca ca.crt
cert client.crt
key client.key
cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-
CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-
CBC-SHA256
resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

Až budete hotovi, uložte soubor.

Krok 10:Instalace a konfigurace klienta OpenVPN

Dále budete muset nainstalovat OpenVPN na klientský systém a připojit se k serveru OpenVPN.

Nejprve se přihlaste ke klientskému počítači a nainstalujte balíček OpenVPN pomocí následujícího příkazu:

apt-get install openvpn -y

Dále budete muset zkopírovat konfigurační soubory klienta OpenVPN ze serveru OpenVPN do klientského počítače.

Na klientském počítači spusťte následující příkaz ke stažení všech konfiguračních souborů klienta:

scp -r [email protected]:/etc/openvpn/client .

Po zkopírování všech souborů změňte adresář na klienta a spusťte následující příkaz pro připojení k serveru OpenVPN:

cd client
openvpn --config client.ovpn

Jakmile se připojíte k serveru OpenVPN, měli byste vidět následující výstup:

Jun 29 11:48:27 2020 TCP/UDP: Preserving recently used remote address: 
[AF_INET]69.87.218.145:1194
Jun 29 11:48:27 2020 Socket Buffers: R=[212992->212992] S=[212992->212992]
Jun 29 11:48:27 2020 UDP link local: (not bound)
Jun 29 11:48:27 2020 UDP link remote: [AF_INET]69.87.218.145:1194
Jun 29 11:48:27 2020 TLS: Initial packet from [AF_INET]69.87.218.145:1194, sid=6d27e1cb 
524bd8cd
Jun 29 11:48:27 2020 VERIFY OK: depth=1, CN=Easy-RSA CA
Jun 29 11:48:27 2020 VERIFY OK: depth=0, CN=atlantic-server
Jun 29 11:48:27 2020 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 
2048 bit RSA
Jun 29 11:48:27 2020 [atlantic-server] Peer Connection Initiated with 
[AF_INET]69.87.218.145:1194
Jun 29 11:48:27 2020 SENT CONTROL [atlantic-server]: 'PUSH_REQUEST' (status=1)
Jun 29 11:48:27 2020 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway 
def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology 
net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM'
Jun 29 11:48:27 2020 OPTIONS IMPORT: timers and/or timeouts modified
Jun 29 11:48:27 2020 OPTIONS IMPORT: --ifconfig/up options modified
Jun 29 11:48:27 2020 OPTIONS IMPORT: route options modified

Po úspěšném připojení OpenVPN přidělí vašemu systému IP adresu. Můžete to zkontrolovat pomocí následujícího příkazu:

ip a show tun0

Výstup:

4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state 
UNKNOWN group default qlen 100
link/none
inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::7226:57b1:f101:313b/64 scope link stable-privacy
valid_lft forever preferred_lft forever

Můžete také zkontrolovat protokol serveru OpenVPN a ověřit stav připojení pomocí následujícího příkazu:

tail -f /var/log/openvpn.log

Závěr

Gratulujeme! Úspěšně jste nastavili VPN server s OpenVPN na Ubuntu 20.04 VPS. Nyní můžete bezpečně přistupovat k internetu a chránit svou identitu, polohu a provoz. Další informace naleznete v oficiální dokumentaci OpenVPN.


Linux
  1. Jak nainstalovat a nakonfigurovat OpenVPN Server na Debian 10

  2. Jak nainstalovat a nakonfigurovat server DHCP na Ubuntu 20.04

  3. Jak nainstalovat a nakonfigurovat server Redis v Ubuntu

  1. Jak nainstalovat a nakonfigurovat OpenVPN Access Server

  2. Jak nainstalovat a nakonfigurovat server NFS na Ubuntu 20.04

  3. Jak nainstalovat a nakonfigurovat VNC na Ubuntu 20.04

  1. Jak nainstalovat a nakonfigurovat VNC na Ubuntu 18.04

  2. Jak nainstalovat a nakonfigurovat server NFS na Ubuntu 18.04

  3. Jak nainstalovat a nakonfigurovat DHCP na Ubuntu 18.04