Virtuální privátní síť (VPN) je zabezpečené a šifrované spojení mezi dvěma sítěmi a jednotlivými uživateli, které chrání vaše internetové připojení a soukromí online. OpenVPN je bezplatný protokol VPN s otevřeným zdrojovým kódem, který implementuje techniky k vytvoření zabezpečeného point-to-point v směrovaných konfiguracích. Je multiplatformní a kompatibilní se všemi hlavními operačními systémy.
V tomto tutoriálu vám ukážeme, jak nainstalovat a nastavit OpenVPN na serveru Debian 10.
Předpoklady
- Debian 10 VPS (budeme používat náš plán NVMe 2 VPS)
- Přístup k uživatelskému účtu root (nebo přístup k účtu správce s oprávněními root)
Krok 1:Přihlaste se k serveru a aktualizujte balíčky operačního systému serveru
Nejprve se přihlaste ke svému serveru Debian 10 přes SSH jako uživatel root:
ssh root@IP_Address -p Port_number
„IP_Address“ a „Port_number“ budete muset nahradit příslušnou IP adresou vašeho serveru a číslem portu SSH. V případě potřeby navíc nahraďte „root“ uživatelským jménem účtu správce.
Než začnete, musíte se ujistit, že všechny balíčky operačního systému Debian nainstalované na serveru jsou aktuální. Můžete to provést spuštěním následujících příkazů:
apt-get update -y apt-get upgrade -y
Krok 2:Instalace OpenVPN a EasyRSA
Ve výchozím nastavení je OpenVPN součástí výchozího úložiště Debianu. Můžete jej nainstalovat pomocí následujícího příkazu:
apt-get install openvpn -y
Jakmile bude balíček OpenVPN nainstalován, budete si muset stáhnout EasyRSA do vašeho systému.
EasyRSA je nástroj příkazového řádku pro vytváření a správu PKI CA. Umožňuje generovat více typů certifikátů.
Používá se k vytvoření kořenové certifikační autority a vyžádání a podepsání certifikátů pro OpenVPN.
Nejnovější verzi EasyRSA si můžete stáhnout z úložiště Git pomocí následujícího příkazu:
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Po dokončení stahování rozbalte stažený soubor pomocí následujícího příkazu:
tar -xvzf EasyRSA-3.0.8.tgz
Dále zkopírujte extrahovaný adresář do adresáře OpenVPN:
cp -r EasyRSA-3.0.8 /etc/openvpn/easy-rsa
V tomto okamžiku jsou na vašem serveru nainstalovány OpenVPN a EasyRSA.
Krok 3:Vytvoření certifikační autority
Dále budete muset vytvořit certifikační autoritu (CA) pro OpenVPN.
Nejprve změňte adresář na EasyRSA pomocí následujícího příkazu:
cd /etc/openvpn/easy-rsa
Dále budete muset uvnitř tohoto vytvořit soubor vars. Soubor vars je jednoduchý soubor, který Easy-RSA vytvoří pro konfiguraci.
Můžete jej vytvořit pomocí následujícího příkazu:
nano vars
Přidejte následující řádky podle svých potřeb:
set_var EASYRSA "$PWD" set_var EASYRSA_PKI "$EASYRSA/pki" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "USA" set_var EASYRSA_REQ_PROVINCE "Newyork" set_var EASYRSA_REQ_CITY "Newyork" set_var EASYRSA_REQ_ORG "ROSE CERTIFICATE AUTHORITY" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "ROSE 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 "ROSE CERTIFICATE AUTHORITY" set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types" set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-easyrsa.cnf" set_var EASYRSA_DIGEST "sha256"
Po dokončení uložte a zavřete soubor.
Dále spusťte infrastrukturu veřejného klíče 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: /etc/openvpn/easy-rsa/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 budete muset spustit příkaz build-ca k vytvoření souboru ca.crt a ca.key. Můžete jej spustit pomocí následujícího příkazu:
./easyrsa build-ca nopass
Budete požádáni o několik otázek, jak je uvedeno níže:
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/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) 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]:vpnserver 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
Krok 4:Generování certifikátu serveru a souborů klíčů
Dále budete muset pro vygenerování klíče serveru použít příkaz gen-req následovaný společným názvem.
./easyrsa gen-req vpnserver nopass
Měli byste vidět následující výstup:
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/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/easy-rsa-1428.Angtmh/tmp.C9prw4' ----- 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) [vpnserver]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/pki/reqs/vpnserver.req key: /etc/openvpn/easy-rsa/pki/private/vpnserver.key
Dále budete muset podepsat klíč vpnserver pomocí certifikátu CA. Můžete to udělat pomocí následujícího příkazu:
./easyrsa sign-req server vpnserver
Měli byste získat následující výstup:
Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'vpnserver' Certificate is to be certified until Feb 6 14:38:52 2022 GMT (365 days) Write out database with 1 new entries Data Base Updated Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnserver.crt
Dále budete muset vygenerovat silný klíč Diffie-Hellman, který použijete pro výměnu klíčů. Můžete jej vygenerovat pomocí následujícího příkazu:
./easyrsa gen-dh
Krok 5:Zkopírujte všechny soubory certifikátu a klíče
Dále budete muset zkopírovat všechny soubory certifikátů a klíčů do adresáře /etc/openvpn/server/. Můžete zkopírovat pomocí následujícího příkazu:
cp pki/ca.crt /etc/openvpn/server/ cp pki/dh.pem /etc/openvpn/server/ cp pki/private/vpnserver.key /etc/openvpn/server/ cp pki/issued/vpnserver.crt /etc/openvpn/server/
Krok 6:Vytvoření klientského certifikátu a souboru klíče
Dále budete muset vygenerovat soubor certifikátu a klíče pro klientský systém.
Můžete jej vytvořit pomocí následujícího příkazu:
./easyrsa gen-req vpnclient nopass
Měli byste získat následující výstup:
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/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/easy-rsa-1563.TeOf5v/tmp.i4YxLz' ----- 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) [vpnclient]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/pki/reqs/vpnclient.req key: /etc/openvpn/easy-rsa/pki/private/vpnclient.key
Dále podepište klientský klíč následujícím příkazem:
./easyrsa sign-req client vpnclient
Měli byste získat následující výstup:
Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'vpnclient' Certificate is to be certified until Feb 6 14:43:18 2022 GMT (365 days) Write out database with 1 new entries Data Base Updated Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnclient.crt
Dále zkopírujte všechny klientské certifikáty a klíče do adresáře /etc/openvpn/client/.
cp pki/ca.crt /etc/openvpn/client/ cp pki/issued/vpnclient.crt /etc/openvpn/client/ cp pki/private/vpnclient.key /etc/openvpn/client/
Krok 7:Konfigurace serveru OpenVPN
V tomto okamžiku jsou připraveny serverový i klientský certifikát a klíč. Nyní budete muset vytvořit konfigurační soubor OpenVPN a definovat všechny certifikáty a klíče.
nano /etc/openvpn/server.conf
Přidejte následující řádky:
port 1194 proto udp dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/vpnserver.crt key /etc/openvpn/server/vpnserver.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
Uložte a zavřete soubor, poté spusťte službu OpenVPN a povolte její spuštění při restartu systému:
systemctl start openvpn@server systemctl enable openvpn@server
Pokud je vše v pořádku, vytvoří se nové rozhraní. Můžete to zkontrolovat pomocí následujícího příkazu:
ip a show tun0
Měli byste získat následující výstup:
4: tun0: 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::153d:f29:39a2:571a/64 scope link stable-privacy valid_lft forever preferred_lft forever
Krok 8:Povolte přesměrování IP
Přesměrování IP umožňuje vašemu operačnímu systému přijímat příchozí síťové pakety a předávat je do jiné sítě. Můžete jej povolit pomocí následujícího příkazu:
nano /etc/sysctl.conf
Odkomentujte nebo přidejte následující řádek:
net.ipv4.ip_forward = 1
Uložte soubor a aplikujte změny konfigurace pomocí následujícího příkazu:
sysctl -p
Krok 9:Instalace a konfigurace klienta OpenVPN
Dále budete muset nainstalovat klienta OpenVPN na jiný systém a připojit se k serveru OpenVPN.
Nejprve nainstalujte OpenVPN pomocí následujícího příkazu:
apt-get install openvpn -y
Po instalaci zkopírujte všechny klientské certifikáty a klíče ze serveru OpenVPN do klientského počítače. Můžete to udělat pomocí následujícího příkazu:
scp -r root@vpn-server-ip:/etc/openvpn/client .
Dále změňte adresář na client a vytvořte konfigurační soubor klienta:
cd client nano client.ovpn
Přidejte následující řádky:
client dev tun proto udp remote vpn-server-ip 1194 ca ca.crt cert vpnclient.crt key vpnclient.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
Uložte a zavřete soubor a poté se připojte k serveru OpenVPN pomocí následujícího příkazu:
openvpn --config client.ovpn
Po navázání spojení byste měli získat následující výstup:
Sat Feb 6 14:53:50 2021 SENT CONTROL [vpnserver]: 'PUSH_REQUEST' (status=1) Sat Feb 6 14:53:50 2021 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' Sat Feb 6 14:53:50 2021 OPTIONS IMPORT: timers and/or timeouts modified Sat Feb 6 14:53:50 2021 OPTIONS IMPORT: --ifconfig/up options modified Sat Feb 6 14:53:50 2021 OPTIONS IMPORT: route options modified
Rozhraní OpenVPN na klientském počítači můžete ověřit pomocí následujícího příkazu:
ip a show tun0
Měli byste získat následující výstup:
4: tun0: mtu 1500 qdisc pfifo_fast 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::9206:94d7:8fb2:6b21/64 scope link stable-privacy valid_lft forever preferred_lft forever
Samozřejmě nemusíte instalovat OpenVPN, pokud používáte některou z našich služeb Managed OpenVPN Hosting, v takovém případě můžete jednoduše požádat naše zkušené administrátory Linuxu, aby vám to nainstalovali. Jsou k dispozici 24×7 a okamžitě se postarají o váš požadavek.
PS . Pokud se vám tento příspěvek o tom, jak nainstalovat OpenVPN na Ubuntu, líbil, sdílejte jej se svými přáteli na sociálních sítích pomocí tlačítek vlevo nebo jednoduše zanechte odpověď níže. Děkuji.