
OpenVPN je open source Secure Socket Layer (SSL) VPN s bohatými funkcemi. VPN umožňuje bezpečně připojit nedůvěryhodné sítě, jako je WIFI síť v hotelech, na letištích nebo v obchodních centrech. VPN také umožňuje bezpečné připojení k podnikové síti pro přístup ke zdrojům. Tunely jsou zabezpečeny pomocí SSL/TLS autentizace, certifikátů, přihlašovacích údajů.
V tomto tutoriálu vám ukážu, jak nastavit VPN pomocí OpenVPN na Ubuntu 20.04 .
Předpoklady
Budeme používat dva servery Ubuntu běžící na verzi 20.04:
- Server certifikační autority (CA) který ověří požadavek a podepíše certifikáty klientů.
- OpenVPN server, na který nainstalujeme VPN.
Konfigurace serveru CA
Doporučuje se ponechat si samostatný server, který bude sloužit jako vaše CA (certifikační autorita). Je to z bezpečnostních důvodů. Pokračujme v konfiguraci serveru CA.
Nejprve se ujistěte, že je systém aktualizován. Spusťte následující příkaz:
$ sudo apt update
Pro konfigurace serveru certifikačního úřadu budete muset vytvořit uživatele bez oprávnění root.
$ sudo adduser malain
Nyní dejte uživateli oprávnění sudo:
$ sudo usermod -aG sudo malain
Nyní se odhlaste a poté se přihlaste zpět s uživatelem bez oprávnění root.
Nainstalujte EasyRSA na server CA
Easy-rsa je nástroj CLI pro vytváření a správu PKI CA. Easy-RSA bude server CA používat k vygenerování soukromého klíče a veřejného kořenového certifikátu, který bude použit k podepsání požadavků od klientů a serverů, které budou záviset na naší CA.
Chcete-li nainstalovat easy-rsa, stáhněte si nástroj pro správu PKI z githubu pomocí wget:
$ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Poté dekomprimujte soubor tgz:
$ tar xvf EasyRSA-3.0.8.tgz
Chcete-li omezit přístup pouze na uživatele, použijte:
$ chmod 700 EasyRSA-3.0.8
Nyní přesuňte EasyRSA do opt
adresář
$ sudo mv EasyRSA-3.0.8 /opt/
Používáme EasyRSA 3.0.8 verze pro tuto konfiguraci.
Vytvořte CA pomocí EasyRSA
Nejprve musíte vytvořit soubor s názvem vars
k uložení informací o organizaci. K tomu můžeme použít ukázkový soubor dostupný v adresáři EasyRSA-3.0.8.
Chcete-li zobrazit soubory v adresáři EasyRSA, použijte:
$ cd EasyRSA-3.0.8/ && ls -l
Výstup:
-rw-rw-r-- 1 malain malain 1305 Sep 9 2020 COPYING.md
-rw-rw-r-- 1 malain malain 5056 Sep 9 2020 ChangeLog
-rw-rw-r-- 1 malain malain 2049 Sep 9 2020 README.md
-rw-rw-r-- 1 malain malain 3335 Sep 9 2020 README.quickstart.md
drwxrwxr-x 2 malain malain 4096 Sep 9 2020 doc
-rwxrwxr-x 1 malain malain 76946 Sep 9 2020 easyrsa
-rw-rw-r-- 1 malain malain 18093 Sep 9 2020 gpl-2.0.txt
-rw-rw-r-- 1 malain malain 1036 Sep 9 2020 mktemp.txt
-rw-rw-r-- 1 malain malain 4616 Sep 9 2020 openssl-easyrsa.cnf
-rw-rw-r-- 1 malain malain 8925 Sep 9 2020 vars.example
drwxrwxr-x 2 malain malain 4096 Mar 28 14:14 x509-types
Vytvořte kopii souboru vars.example jako vars:
$ cp vars.example vars
Nyní otevřete soubor vars a na konec souboru přidejte informace o organizaci:
$ vim vars
set_var EASYRSA_REQ_COUNTRY "CM"
set_var EASYRSA_REQ_PROVINCE "Littoral"
set_var EASYRSA_REQ_CITY "Douala"
set_var EASYRSA_REQ_ORG "OPEN-SHARE"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "Com"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Nyní inicializujte naše PKI na našem CA serveru, který vytvoří složku pki.
$ ./easyrsa init-pki
Nyní můžeme vygenerovat root public a soukromý pár klíčů pro naši CA. Během procesu budete obvykle požádáni o zadání přístupové fráze pro pár klíčů, kdykoli budete potřebovat podepsat nebo zrušit certifikát. V našem případě použijeme příkaz, abychom nebyli vyzváni k zadání přístupové fráze. Budete také vyzváni, abyste uvedli Běžné jméno (CN), ale výchozí ponecháme stisknutím klávesy Enter.
$ ./easyrsa build-ca nopass
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
read EC key
writing EC key
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:
/opt/EasyRSA-3.0.8/pki/ca.crt
Tím se vytvoří kořenový certifikát pojmenovaný soubor ca.crt v adresáři pki a klíč private ca.key v adresáři pki/private.
$ ls -l pki/
total 52
-rw------- 1 malain malain 749 Mar 28 14:30 ca.crt
drwx------ 2 malain malain 4096 Mar 28 14:29 certs_by_serial
drwx------ 2 malain malain 4096 Mar 28 14:29 ecparams
-rw------- 1 malain malain 0 Mar 28 14:29 index.txt
-rw------- 1 malain malain 0 Mar 28 14:29 index.txt.attr
drwx------ 2 malain malain 4096 Mar 28 14:29 issued
-rw------- 1 malain malain 4616 Mar 28 14:24 openssl-easyrsa.cnf
drwx------ 2 malain malain 4096 Mar 28 14:30 private
drwx------ 5 malain malain 4096 Mar 28 14:29 renewed
drwx------ 2 malain malain 4096 Mar 28 14:24 reqs
drwx------ 5 malain malain 4096 Mar 28 14:29 revoked
-rw------- 1 malain malain 4575 Mar 28 14:24 safessl-easyrsa.cnf
-rw------- 1 malain malain 3 Mar 28 14:29 serial
$ ls -l pki/private/
total 4
-rw------- 1 malain malain 288 Mar 28 14:29 ca.key
Tím je náš CA server připraven.
Instalace a konfigurace serveru Openvpn
Pojďme přeskočit na druhý server a nainstalovat a nakonfigurovat openvpn. Budete také muset na tomto serveru vytvořit uživatele bez oprávnění root a dát mu sudo
privilegia.
Chcete-li instalovat openvpn na ubuntu spusťte následující příkazy:
$ sudo apt update
$ sudo apt install openvpn
Na openvpn serveru bude easyrsa použita k vygenerování žádosti o certifikát, která bude ověřena a podepsána CA Serverem. Při instalaci Easyrsa postupujte podle stejných kroků, jaké jsme použili v poslední části.
$ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Nyní dekomprimujte stažený soubor tgz:
$ tar xvf EasyRSA-3.0.8.tgz
Omezit přístup pouze na uživatele:
$ chmod 700 EasyRSA-3.0.8
Přesuňte EasyRSA-3.0.8 do opt
adresář:
$ sudo mv EasyRSA-3.0.8 /opt/
Vytvořte PKI
Nyní musíme vytvořit PKI které pomohou vyžadovat a spravovat certifikáty TLS pro klienty a další servery, které se připojí k naší VPN.
Vytvořte soubor vars pomocí již dostupného souboru příkladů:
$ cp vars.example vars
Nyní upravte soubor vars přidáním následujících řádků na konec souboru:
$ vim vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Vytvoření složky PKI na serveru openvpn spusťte easyrsa
soubor skriptu:
$ ./easyrsa init-pki
Výstup:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /opt/EasyRSA-3.0.8/pki
Vytvořte žádost o certifikát serveru a soukromý klíč
Nyní vygenerujeme soukromý klíč a žádost o certifikát na serveru OpenVPN. Poté přeneseme soubor žádosti o certifikát na server CA k podpisu za účelem vytvoření požadovaného certifikátu
Když jsme ve stejné složce, můžeme vygenerovat požadavek pomocí nopass
volba. Následující příkaz vytvoří soubor soukromého klíče s názvem openvpn-server.key a soubor žádosti o certifikát s názvem openvpn-server.req.
$ ./easyrsa gen-req openvpn-server nopass
Výstup:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
Generating an EC private key
writing new private key to '/opt/EasyRSA-3.0.8/pki/easy-rsa-4737.CGhQHN/tmp.UGQ9wi'
-----
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) [openvpn-server]:
Keypair and certificate request completed. Your files are:
req: /opt/EasyRSA-3.0.8/pki/reqs/openvpn-server.req
key: /opt/EasyRSA-3.0.8/pki/private/openvpn-server.key
Nyní zkopírujte soubor klíče serveru s názvem openvpn-server.key do adresáře s názvem /etc/openvpn/server.
$ sudo cp /opt/EasyRSA-3.0.8/pki/private/openvpn-server.key /etc/openvpn/server
Poté zkopírujte soubor žádosti o certifikát na server CA :
$ scp /opt/EasyRSA-3.0.8/pki/reqs/openvpn-server.req [email protected]:/tmp
Na serveru CA přejděte do adresáře easyrsa,
$ cd /opt/EasyRSA-3.0.8/
Chcete-li importovat požadavek , spusťte následující příkaz:
$ ./easyrsa import-req /tmp/openvpn-server.req openvpn-server
Výstup:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
The request has been successfully imported with a short name of: openvpn-server
You may now use this name to perform signing operations on this request.
Nyní žádost podepište. Protože podepisujeme požadavek serveru, měli bychom použít direktivu server
před Common Name našeho openvpn serveru. Pokud se jednalo o požadavek klienta, měli bychom použít direktivu client
místo toho.
Chcete-li podepsat žádost :
$ ./easyrsa sign-req server openvpn-server
Výstup:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/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 server certificate for 825 days:
subject=
commonName = openvpn-server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/EasyRSA-3.0.8/pki/easy-rsa-4100.IbygpP/tmp.hJY2T5
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'openvpn-server'
Certificate is to be certified until Jul 1 19:50:36 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /opt/EasyRSA-3.0.8/pki/issued/openvpn-server.crt
Nyní je žádost o certifikát serveru OpenVPN podepsána serverem CA, musíme podepsanou žádost a veřejný certifikát přenést na server OpenVPN.
$ scp pki/{ca.crt,issued/openvpn-server.crt} [email protected]:/tmp
$ sudo cp /tmp/{ca.crt,openvpn-server.crt} /etc/openvpn/server
Nyní vygenerujeme předsdílený klíč tls-crypt, abychom zajistili, že náš server OpenVPN bude schopen vypořádat se s neověřeným provozem, skenováním portů a některými útoky, které mohou spotřebovat mnoho zdrojů serveru.
$ ./easyrsa gen-dh
Výstup:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/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 /opt/EasyRSA-3.0.8/pki/dh.pem
$ openvpn --genkey --secret ta.key
Nyní zkopírujte soubory klíče a pem do adresáře /etc/openvpn/server:
$ sudo cp ta.key pki/dh.pem /etc/openvpn/server
Vygenerujte klientský certifikát a pár klíčů
Budeme muset vytvořit adresář, kde budeme uchovávat certifikáty a klíče klientů. Ujistěte se, že dáváte oprávnění uživateli bez oprávnění root.
$ sudo mkdir -p /opt/client-configs/keys
$ sudo chown franck:franck -R /opt/client-configs
$ sudo chmod 700 -R /opt/client-configs
Vygenerujte požadavek na klientský certifikát:
$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa gen-req my-pc nopass
Výstup:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Generating an EC private key writing new private key to '/opt/EasyRSA-3.0.8/pki/easy-rsa-6961.m7fBMu/tmp.dkqaZI' ----- 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) [my-pc]: Keypair and certificate request completed. Your files are: req: /opt/EasyRSA-3.0.8/pki/reqs/my-pc.req key: /opt/EasyRSA-3.0.8/pki/private/my-pc.key
Nyní zkopírujte klíč klienta do adresáře client-configs:
$ cp pki/private/my-pc.key /opt/client-configs/keys/
Zkopírujte soubor žádosti o certifikát klienta na server CA:
$ scp pki/reqs/my-pc.req [email protected]:/tmp
Na serveru CA importujte CSR:
$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa import-req /tmp/my-pc.req my-pc
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
The request has been successfully imported with a short name of: my-pc
You may now use this name to perform signing operations on this request.
Nyní bychom měli podepsat požadavek pro klienta, zadejte:
$ ./easyrsa sign-req client my-pc
Výstup:
Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/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 825 days:
subject=
commonName = my-pc
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/EasyRSA-3.0.8/pki/easy-rsa-5511.IwDcbS/tmp.doUbCv
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'my-pc'
Certificate is to be certified until Jul 1 21:33:52 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /opt/EasyRSA-3.0.8/pki/issued/my-pc.crt
Zkopírujte klientský certifikát na server openvpn:
$ scp pki/issued/my-pc.crt [email protected]:/tmp
Nyní na serveru openvpn musíme zkopírovat všechny klientské soubory do adresáře klienta, který jsme předtím vytvořili.
$ sudo cp /tmp/my-pc.crt /opt/client-configs/keys/
$ sudo cp /etc/openvpn/server/ca.crt /opt/client-configs/keys/
$ cp /opt/EasyRSA-3.0.8/ta.key /opt/client-configs/keys/
Ujistěte se, že uživatel bez oprávnění root má oprávnění k souborům.
$ sudo chown franck:franck /opt/client-configs/keys/*
Konfigurace služby VPN
Nejprve bychom měli vytvořit kopii šablony, kterou použijeme
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
Poté rozbalte soubor
$ sudo gzip -d /etc/openvpn/server/server.conf.gz
A vstupte do složky
$ cd /etc/openvpn/server
Některé řádky budou nahrazeny tak, aby odpovídaly naší konfiguraci::
- Kryptografické šifry budou nastaveny na
AES-256-CBC
- Algoritmus zprávy HMAC bude
sha256
- Protože používáme také parametr Diffie-Hellman, nastavíme jej na
dh.pem
- Použijeme uživatele nikdo a skupina nogroup spustit openvpn bez oprávnění, jakmile bude spuštěn
- Změny DNS provedeme přesměrování veškerého provozu přes vpn s hodnotami
push redirect-gateway def1 bypass-dhcp
,push dhcp-option DNS 208.67.222.222
,push dhcp-option DNS 208.67.220.220
- Zachováme výchozí port
1194
- Použijeme
udp
protokol - měli bychom uvést klíč
openvpn-server.key
a certifikátopenvpn-server.crt
použít jako pověření
Soubor by tedy měl vypadat následovně:
$ sudo vim /etc/openvpn/server/server.conf
tls-crypt ta.key
cipher AES-256-CBC
auth SHA256
dh dh.pem
user nobody
group nogroup
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
port 1194
proto udp
explicit-exit-notify 1
cert openvpn-server.crt
key openvpn-server.key
Měli byste aktivovat přesměrování IP úpravou hodnoty net.ipv4.ip_forward v /etc/sysctl.conf.
$ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
Aby byly změny provedené v /etc/sysctl.conf účinné, spusťte:
$ sudo sysctl -p
net.ipv4.ip_forward = 1
Nyní musíte povolit OpenVPN přes váš firewall povolením maskování. Chcete-li to provést, musíte identifikovat název rozhraní veřejné sítě:
$ ip route | grep default
default via X.X.X.X dev eth0 proto static
V našem případě je to eth0. Nyní bychom měli přidat pravidla maškarád do konfigurace firewallu, takže přidáme řádek níže na začátek souborů pravidel:
$ sudo vim /etc/ufw/before.rules
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to the public server interface eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
Nyní upravíme ufw tak, aby standardně povolovalo předávané pakety.
$ sudo vim /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
Otevřete port openvpn na bráně firewall:
$ sudo ufw allow '1194/udp'
Chcete-li restartovat službu ufw, zadejte:
$ sudo ufw disable && sudo ufw enable
Chcete-li povolit spuštění služby openvpn při spuštění systému, zadejte:
$ sudo systemctl enable openvpn-server@server
Chcete-li spustit openvpn, zadejte:
$ sudo systemctl start openvpn-server@server
Stav openvpn můžete zkontrolovat pomocí:
$ sudo systemctl status openvpn-server@server
Výstup:
● [email protected] - OpenVPN service for server
Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: active (running) since Sun 2021-03-28 23:30:57 UTC; 8s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 78132 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 1073)
Memory: 1.0M
CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected]
└─78132 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf
Mar 28 23:30:57 localhost systemd[1]: Starting OpenVPN service for server...
Mar 28 23:30:57 localhost systemd[1]: Started OpenVPN service for server.
Chcete-li zkontrolovat rozhraní tunelu, zadejte:
$ ip addr show tun0
Výstup:
3: 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::c3d9:85d1:e2a9:6b2c/64 scope link stable-privacy
valid_lft forever preferred_lft forever
Konfigurace souborů vpn pro klienty
$ sudo mkdir -p /opt/client-configs/files
Nyní bychom měli zkopírovat ukázkový konfigurační soubor
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /opt/client-configs/base.conf
Udělte oprávnění uživateli bez oprávnění root
$ sudo chown franck:franck -R /opt/client-configs/
Upravte soubor base.conf
$ vim /opt/client-configs/base.conf
remote your_server_ip 1194
proto udp
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
#ca ca.crt
#cert client.crt
#key client.key
#tls-auth ta.key 1
cipher AES-256-CBC
auth SHA256
key-direction 1
# For the clients using resolvconf for DNS resolution, uncomment the lines below on the client computer
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf
# Instead for the clients using systemd-resolved for DNS resolution, uncomment the lines below on the client computer
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .
Nyní vytvoříme skript pro generování certifikátů a šifrovaných souborů na klientovi. Skript také vytvoří kopii souboru base.conf a shromáždí všechny klíče a certifikáty vytvořené pro klienty. Pro každého klienta bychom museli před spuštěním skriptu vygenerovat certifikát a klíč
$ vim /opt/client-configs/make_config.sh
#!/bin/bash
# First argument: Client identifier
KEY_DIR=/opt/client-configs/keys
OUTPUT_DIR=/opt/client-configs/files
BASE_CONFIG=/opt/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/${1}.ovpn
Ujistěte se, že skript může spustit pouze uživatel bez oprávnění root.
$ chmod 700 /opt/client-configs/make_config.sh
Nyní můžete vygenerovat soubor připojení klienta na základě klientského klíče a konfigurace certifikátu (my-pc.crt a my-pc.key)
$ cd /opt/client-configs
Nyní spusťte skript následovaný běžným názvem používaným pro klienta, který vytvoří klientský soubor vpn k použití.
$ ./make_config.sh my-pc
Výsledek můžete zkontrolovat:
$ ls -l files/
total 12
-rw-rw-r-- 1 franck franck 8598 Mar 30 11:12 my-pc.ovpn
Připojte klienta k připojení OpenVPN
Nainstalujte openvpn na klienta. Toto bude použito k navázání připojení vpn se serverem
$ sudo apt update && sudo apt install openvpn -y
Nyní zkopírujte soubor klienta OpenVPN, který je na serveru, do vašeho klientského počítače. Na klientském počítači tedy proveďte následující příkaz:
$ rsync -av [email protected]:/opt/client-configs/files/my-pc.ovpn .
Před úpravou klientského konfiguračního souboru OpenVPN musíme zkontrolovat, zda pro rozlišení DNS používáme resolvconf nebo systemd-resolved
$ cat /etc/resolv.conf
OUTPUT:
# This file is managed by man:systemd-resolved(8). Do not edit.
. . .
nameserver 127.0.0.53
options edns0
S hodnotou nameserver 127.0.0.53
, ukazuje, že používáte systemd-resolved. Nainstalujte si tedy balíček, který po připojení pomůže systemd-resolved používat VPN pro překlad DNS.
$ sudo apt install openvpn-systemd-resolved
Nyní můžeme upravit soubor klienta vpn zrušením komentáře řádků potřebných pro systemd-resolved
$ vim my-pc.ovpn
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
U systému používajícího update-resolv-conf odkomentujete řádky
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Nyní se pokusíme připojit k síti VPN pomocí příkazu openvpn do konfiguračního souboru klienta:
$ sudo openvpn --config my-pc.ovpn
Můžete zkontrolovat informace o IP pro rozhraní tunelu
$ ip a
Zobrazí se adresa IP tunelu a můžeme provést ping na server OpenVPN. Díky tomu můžete potvrdit, že jste schopni dosáhnout na váš server, jako byste byli ve stejné privátní síti.
Závěr
Při používání OpenVPN je snadné nastavit připojení VPN. Toto je dobré řešení, když chcete na cloudovém serveru nastavit řešení VPN bez použití jakéhokoli specializovaného řešení, jako je virtuální firewall nebo cokoli jiného. Je to rychlé a bezpečné řešení.