GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit OpenVPN na Ubuntu 20.04

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át openvpn-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í.


Ubuntu
  1. Jak nastavit virtuální hostitele Apache na Ubuntu 18.04

  2. Ubuntu – Jak nastavit statickou IP v Ubuntu?

  3. Jak nastavit službu?

  1. Jak nainstalovat Redis na Ubuntu 20.04 / 18.04

  2. Jak nastavit DNS Nameserver na Ubuntu 20.04

  3. Jak nastavit server OpenVPN na Ubuntu 20.04

  1. Jak nastavit klíče SSH na Ubuntu 18.04

  2. Jak nastavit server OpenVPN na Ubuntu 18.04

  3. Jak nastavit nebo změnit časové pásmo na Ubuntu 18.04