Ինչպես տեղադրել և կարգավորել OpenVPN սերվերը Ubuntu 22.04-ում


Այս էջում

  1. Նախադրյալներ
  2. Քայլ 1 - CA սերվերի կարգավորում

    1. Քայլ 1.1 - Տեղադրեք Easy-RSA-ն
    2. Քայլ 1.2 - Ստեղծեք հանրային բանալիների ենթակառուցվածքի գրացուցակ
    3. Քայլ 1.3 - Ստեղծեք վկայականի մարմին
  3. Քայլ 2 - OpenVPN-ի և Easy-RSA-ի տեղադրում OpenVPN սերվերի վրա
  4. Քայլ 3 - Ստեղծեք PKI OpenVPN սերվերի համար
  5. Քայլ 4 - Ստեղծեք OpenVPN սերվերի վկայականի հարցում և անձնական բանալի
  6. Քայլ 5 - Ստորագրեք OpenVPN սերվերի CSR-ն
  7. Քայլ 6 - Կարգավորեք OpenVPN ծածկագրային նյութը
  8. Քայլ 7 - Ստեղծեք հաճախորդի վկայական և բանալիների զույգ
  9. Քայլ 8 - Կարգավորեք OpenVPN-ը

    1. Վերահղեք ամբողջ երթևեկությունը VPN-ի միջոցով
    2. Փոխեք նավահանգիստը և արձանագրությունը
    3. Մատնանշեք ոչ լռելյայն հավատարմագրերը
  10. Քայլ 9 - Կարգավորեք OpenVPN սերվերի ցանցային կազմաձևումը
  11. Քայլ 10 - Կարգավորել Firewall-ը
  12. Քայլ 11 - Սկսեք OpenVPN
  13. Քայլ 12 - Ստեղծեք հաճախորդի կոնֆիգուրացիա
  14. Քայլ 13 - Տեղադրեք և փորձարկեք հաճախորդի կապը

    1. Միացնել հաճախորդին
  15. Քայլ 14 - Հաճախորդի վկայականների չեղարկում
  16. Եզրակացություն

Վիրտուալ մասնավոր ցանցը (VPN) թույլ է տալիս մուտք գործել ինտերնետ՝ քողարկելով ձեր գտնվելու վայրը՝ թույլ տալով անվտանգ մուտք գործել համացանց անվստահելի ցանցերում և շրջանցել աշխարհագրական սահմանափակումներն ու գրաքննությունը: OpenVPN-ն այս նպատակին հասնելու համար բաց կոդով տրանսպորտային շերտի անվտանգության (TLS) VPN լուծում է:

Մեր ձեռնարկում մենք կտեղադրենք OpenVPN-ը Ubuntu 22.04 սերվերի վրա, կկազմաձևենք այն, որպեսզի այն հասանելի լինի հաճախորդի մեքենայից և կստեղծենք VPN կապ նրանց միջև՝ հաճախորդից ողջ երթևեկությունը OpenVPN սերվերի միջոցով վերահղելու համար:

Նախադրյալներ

    Ubuntu 22.04-ով աշխատող սերվեր, որն աջակցում է և՛ IPv4, և՛ IPv6 միացումներին: Մենք սա կանվանենք որպես OpenVPN սերվեր: Ոչ բարդ Firewall-ը (UFW) միացված է և աշխատում է դրա վրա:

    Ubuntu 22.04-ով աշխատող սերվեր, որն աջակցում է և՛ IPv4, և՛ IPv6 միացումներին: Մենք սա կստեղծենք որպես մասնավոր վկայականի մարմին (CA), որը մենք կանվանենք որպես CA սերվեր:

    Ոչ արմատային օգտվող, որն ունի sudo արտոնություններ ինչպես OpenVPN-ի, այնպես էլ CA սերվերի վրա:

    Հաճախորդի մեքենա OpenVPN սերվերին միանալու համար: Դուք կարող եք օգտագործել ձեր տեղական սարքը որպես հաճախորդի մեքենա: OpenVPN-ն ունի հաճախորդներ Windows-ի, Linux-ի, macOS-ի, Android-ի և iOS-ի համար: Միանալու համար կարող եք օգտագործել դրանցից որևէ մեկը: Ուսուցման համար մենք կօգտագործենք Ubuntu 22.04 հաճախորդի ԱՀ:

    Ամեն ինչ թարմացվում է OpenVPN-ի և CA սերվերի վրա:

    $ sudo apt update && sudo apt upgrade
    

Քայլ 1 - CA սերվերի կարգավորում

Հավաստագրման մարմինը (CA) կազմակերպություն է, որը պատասխանատու է Ինտերնետում ինքնությունը հաստատելու համար թվային վկայագրեր տրամադրելու համար: Այս ձեռնարկում մենք կօգտագործենք ինքնուրույն սերվեր՝ որպես մասնավոր CA սերվեր, որը կվավերացնի OpenVPN սերվերը և հաճախորդի վկայականները: Ձեր CA սերվերը չպետք է գործարկի այլ ծառայություններ, բացառությամբ վկայագրերի ներմուծման, ստորագրման և վավերացման:

Քայլ 1.1 - Տեղադրեք Easy-RSA-ն

Առաջին քայլը easy-rsa սկրիպտների հավաքածուի տեղադրումն է: easy-rsa-ը վկայականների մարմնի կառավարման գործիք է, որն օգտագործվում է մասնավոր բանալի և հանրային արմատային վկայական ստեղծելու համար:

$ sudo apt install easy-rsa

Քայլ 1.2 - Ստեղծեք հանրային բանալիների ենթակառուցվածքի գրացուցակ

Հաջորդ քայլը CA սերվերի վրա կմախքի հանրային բանալին ենթակառուցվածքի (PKI) ստեղծումն է:

$ mkdir ~/easy-rsa

Ստեղծեք խորհրդանշական հղումներ՝ մատնանշելով տեղադրված easy-rsa փաթեթի ֆայլերը:

$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Սահմանափակել մուտքը PKI գրացուցակ:

$ chmod 700 /home/<username>/easy-rsa

Նախաձեռնեք PKI-ն:

$ cd ~/easy-rsa
$ ./easyrsa init-pki

Դուք կստանաք հետևյալ արդյունքը.

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

Քայլ 1.3 - Ստեղծեք վկայականի մարմին

Նախքան ձեր CA-ի մասնավոր բանալին և վկայականը ստեղծելը, դուք պետք է կազմաձևեք կազմակերպության տեղեկատվությունը դրա համար: Ստեղծեք vars ֆայլ՝ տեղեկատվությունը easy-rsa գրացուցակի ներսում պահելու համար և բացեք այն խմբագրելու համար:

$ cd ~/easy-rsa
$ nano vars

Դրա մեջ տեղադրեք հետևյալ կոդը.

set_var EASYRSA_REQ_COUNTRY    "US"
set_var EASYRSA_REQ_PROVINCE   "NewYork"
set_var EASYRSA_REQ_CITY       "New York City"
set_var EASYRSA_REQ_ORG        "Howtoforge"
set_var EASYRSA_REQ_EMAIL      "[email "
set_var EASYRSA_REQ_OU         "Community"
set_var EASYRSA_ALGO           "ec"
set_var EASYRSA_DIGEST         "sha512"

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Գործարկեք հետևյալ հրամանը՝ ձեր Վկայական մարմնի համար արմատային հանրային և մասնավոր բանալիների զույգ ստեղծելու համար:

$ ./easyrsa build-ca

Ձեզ կառաջարկվի մուտքագրել ձեր բանալիների զույգի անցաբառը: Ընտրեք ուժեղ անցաբառ և նշեք այն ավելի ուշ: Ձեզանից կպահանջվի նաև ընդհանուր անուն (CN) ձեր CA-ի համար: Դուք կարող եք մուտքագրել ցանկացած տող, բայց պարզության համար սեղմեք ENTER՝ լռելյայն անունը ընդունելու համար:

Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
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:
/home/<username>/easy-rsa/pki/ca.crt

Եթե դուք չեք ցանկանում, որ ամեն անգամ ձեր CA-ի հետ շփվելիս ձեզ գաղտնաբառ պահանջեն, փոխարենը կարող եք օգտագործել հետևյալ հրամանը:

$ ./easyrsa build-ca nopass

Սա կստեղծի երկու ֆայլ.

  • ~/easy-rsa/pki/ca.crt CA-ի հանրային վկայականի ֆայլն է: Յուրաքանչյուր օգտագործողի և OpenVPN սերվերի համար անհրաժեշտ կլինի այս ֆայլի պատճենը:
  • ~/easy-rsa/pki/ca.key մասնավոր բանալին է, որն օգտագործվում է CA-ի կողմից OpenVPN սերվերի և հաճախորդի համար վկայագրեր ստորագրելու համար: Եթե հարձակվողը մուտք գործի դեպի ձեր CA և, իր հերթին, ձեր ca.key ֆայլը, ապա ձեզ հարկավոր է ոչնչացնել ձեր CA: Ահա թե ինչու ձեր ca.key ֆայլը պետք է միայն լինի ձեր CA սարքի վրա, և որ իդեալականորեն, ձեր CA մեքենան պետք է անցանց մնա, երբ չստորագրեք վկայականի հարցումները որպես լրացուցիչ անվտանգություն: չափել.

Քայլ 2 - OpenVPN-ի և Easy-RSA-ի տեղադրում OpenVPN սերվերի վրա

Մուտք գործեք ձեր OpenVPN սերվեր և տեղադրեք OpenVPN և Easy-RSA փաթեթները:

$ sudo apt install openvpn easy-rsa

Ստեղծեք ~/easy-rsa գրացուցակը:

$ mkdir ~/easy-rsa

Ստեղծեք խորհրդանշական հղում easy-rsa սկրիպտից, որը մենք տեղադրել ենք այնպես, ինչպես CA սերվերում:

$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Սահմանափակել մուտքը գրացուցակ:

$ chmod 700 ~/easy-rsa

Քայլ 3 - Ստեղծեք PKI OpenVPN սերվերի համար

Ստեղծեք vars ֆայլ ~/easy-rsa գրացուցակի ներսում` PKI ստեղծելու համար անհրաժեշտ տեղեկատվությունը պահելու և այն խմբագրելու համար բացելու համար:

$ cd ~/easy-rsa
$ nano vars

Դրա մեջ տեղադրեք հետևյալ տողերը.

set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

Քանի որ մենք չենք օգտագործում այս սերվերը որպես CA, սրանք միակ արժեքներն են, որոնք մեզ անհրաժեշտ են: Սա կարգավորում է ձեր OpenVPN և CA սերվերները ECC օգտագործելու համար, ինչը նշանակում է, որ երբ հաճախորդը և սերվերը փորձում են ստեղծել ընդհանուր սիմետրիկ բանալի, նրանք օգտագործում են էլիպսական կորի ալգորիթմները՝ իրենց փոխանակումը կատարելու համար: Դա զգալիորեն ավելի արագ է, քան սովորական Diffie-Hellman-ի օգտագործումը դասական RSA ալգորիթմով, քանի որ թվերը շատ ավելի փոքր են, իսկ հաշվարկներն ավելի արագ:

Հաջորդ քայլը PKI գրացուցակի ստեղծումն է՝ օգտագործելով init-pki տարբերակը: Թեև դուք արդեն գործարկել եք այս հրամանը CA սերվերի վրա որպես նախադրյալների մաս, անհրաժեշտ է այն գործարկել այստեղ, քանի որ ձեր OpenVPN սերվերը և CA սերվերը ունեն առանձին PKI դիրեկտորիաներ:

$ ./easyrsa init-pki

OpenVPN սերվերի PKI-ն օգտագործվում է որպես կենտրոնացված վայր՝ վկայագրի հարցումները և հանրային վկայագրերը պահելու համար:

Քայլ 4 - Ստեղծեք OpenVPN սերվերի վկայականի հարցում և անձնական բանալի

Անցեք OpenVPN սերվերի ~/easy-rsa գրացուցակին:

$ cd ~/easy-rsa

Հաջորդ քայլը ձեր OpenVPN սերվերի վրա անձնական բանալի և Վկայագրի ստորագրման հարցում (CSR) ստեղծելն է: Գործարկեք easy-rsa հրամանը gen-req տարբերակով, որին հաջորդում է ընդհանուր անուն (CN) սերվերի համար: Մեր ձեռնարկի համար մենք կօգտագործենք server որպես CN OpenVPN սերվերի համար: Մենք նաև կօգտագործենք nopass տարբերակը՝ թույլտվության հետ կապված խնդիրներից խուսափելու համար:

$ ./easyrsa gen-req server nopass

Դուք կստանաք հետևյալ արդյունքը.

Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
..........+.....+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*....................+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+..+......+.......+...+..+.+.....+....+..+...+............+.+...+.....+....+...........+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+...+......+.....+....+...........+...+..........+..+.+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*............+.+..+....+..............+.....................+....+......+..............+.+.....+....+............+..+............+....+..+...+.......+.....+....+...+..+.........+.+.........+..+...+.+..............+.+.........+...........+.+.....+.........+...+......+.+......+.....+..........+...+..............+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
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) [server]:

Keypair and certificate request completed. Your files are:
req: /home/<username>/easy-rsa/pki/reqs/server.req
key: /home/<username>/easy-rsa/pki/private/server.key

Սա սերվերի համար ստեղծում է անձնական բանալի և վկայականի հարցման ֆայլ, որը կոչվում է server.req: Պատճենեք սերվերի բանալին /etc/openvpn/server գրացուցակում:

$ sudo cp /home/<username>/easy-rsa/pki/private/server.key /etc/openvpn/server/

Վկայագրի ստորագրման հարցումը (CSR) այժմ պատրաստ է ստորագրման CA-ի կողմից:

Քայլ 5 - Ստորագրեք OpenVPN սերվերի CSR-ն

Հաջորդ քայլը CSR ֆայլը ստորագրելու համար CA սերվերում պատճենելն է: Եթե ձեր սերվերներում միացված է գաղտնաբառի նույնականացումը, կարող եք պարզապես օգտագործել հետևյալ հրամանը՝ ֆայլը պատճենելու համար:

$ scp /home/username/easy-rsa/pki/reqs/server.req username@your_ca_server_ip:/tmp

Եթե չեք ցանկանում օգտագործել գաղտնաբառի իսկությունը, ապա ձեզ հարկավոր է յուրաքանչյուր սերվերի համար ստեղծել SSH բանալի զույգ, այնուհետև ավելացնել OpenVPN սերվերի հանրային SSH բանալին CA մեքենայի authorized_keys ֆայլին և հակառակը:

Եթե դուք չեք ցանկանում անցնել այս ամենի միջով, կարող եք պարզապես պատճենել ֆայլերը: Բացեք ֆայլը OpenVPN սերվերի վրա, պատճենեք դրա բովանդակությունը, այնուհետև ստեղծեք ֆայլը CA սերվերի վրա և տեղադրեք բովանդակությունը:

Կրկին մուտք գործեք CA սերվեր և անցեք ~/easy-rsa գրացուցակ և ներմուծեք CSR ֆայլը:

$ cd ~/easy-rsa
$ ./easyrsa import-req /tmp/server.req server

Դուք կստանաք հետևյալ արդյունքը.

Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

The request has been successfully imported with a short name of: server
You may now use this name to perform signing operations on this request.

Ստորագրեք հարցումը՝ օգտագործելով հետևյալ հրամանը. Քանի որ մենք ստորագրում ենք OpenVPN սերվերի CSR-ն, մենք կօգտագործենք դրա ընդհանուր անունը (CN):

$ ./easyrsa sign-req server server

Ձեզ կառաջարկվի ստուգել, արդյոք հարցումը ստացվել է վստահելի աղբյուրից: Մուտքագրեք այո, ապա սեղմեք ENTER ստեղնը՝ հաստատելու համար:

Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)


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                = server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes

Հաջորդը, ձեզ կառաջարկվի CA-ի մասնավոր բանալու անցաբառը, որը դուք ստեղծել եք ավելի վաղ:

Using configuration from /home/<username>/easy-rsa/pki/easy-rsa-13476.9IC4QC/tmp.lPVwQo
Enter pass phrase for /home/<username>/easy-rsa/pki/private/ca.key:
40975B6A677F0000:error:0700006C:configuration file routines:NCONF_get_string:no value:../crypto/conf/conf_lib.c:315:group=<NULL> name=unique_subject
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until May  8 12:41:46 2025 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/<username>/easy-rsa/pki/issued/server.crt

Ստացված վկայագիրը պարունակում է OpenVPN սերվերի հանրային գաղտնագրման բանալին, ինչպես նաև CA սերվերի ստորագրությունը: Պատճենեք վկայագրերը OpenVPN սերվերին:

$ scp pki/issued/server.crt username@your_vpn_server_ip:/tmp
$ scp pki/ca.crt username@your_vpn_server_ip:/tmp

Ձեր OpenVPN սերվերում պատճենեք ֆայլերը /etc/openvpn/server գրացուցակում:

$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Քայլ 6 - Կարգավորեք OpenVPN ծածկագրային նյութը

Մենք կավելացնենք լրացուցիչ ընդհանուր գաղտնի բանալի, որը սերվերը և բոլոր հաճախորդները կօգտագործեն OpenVPN-ի tls-crypt հրահանգով: Սա ապահովում է, որ OpenVPN սերվերը ի վիճակի է հաղթահարել չվավերացված երթևեկությունը, նավահանգիստների սկանավորումները և ծառայության մերժման հարձակումները: Այն նաև դժվարացնում է OpenVPN ցանցի տրաֆիկի նույնականացումը.

Անցեք ~/easy-rsa գրացուցակին:

$ cd ~/easy-rsa

Ստեղծեք tls-crypt նախնական համօգտագործվող բանալին: Սա կստեղծի ֆայլ, որը կոչվում է ta.key

$ openvpn --genkey secret ta.key

Պատճենեք ta.key /etc/openvpn/server գրացուցակում:

$ sudo cp ta.key /etc/openvpn/server

Քայլ 7 - Ստեղծեք հաճախորդի վկայական և բանալիների զույգ

Ստեղծեք գրացուցակ՝ հաճախորդի վկայականը և հիմնական ֆայլերը պահելու համար:

$ mkdir -p ~/client-configs/keys

Սահմանափակեք գրացուցակի թույլտվությունները՝ այն պաշտպանելու համար:

$ chmod -R 700 ~/client-configs

Հաջորդը, անցեք ~/easy-rsa գրացուցակին:

$ cd ~/easy-rsa

Ստեղծեք հաճախորդի բանալի՝ client1 որպես հաճախորդի ընդհանուր անուն: Հաճախորդի համար կարող եք օգտագործել ցանկացած CN:

$ ./easyrsa gen-req client1 nopass

Ընդհանուր անունը հաստատելու համար սեղմեք ENTER: Դուք կստանաք հետևյալ արդյունքը.

Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
.......+.+.....+.+........+.+...+...+........+....+..+....+.........+....................+......+.......+...+.....+.+.........+...............+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*............+......+.........+......+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+........+...+...................+...........+....+...........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
..........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...........+......+.......+..+..........+.....+.......+.....+....+.....+....+...+.....+...+....+...........+....+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
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) [client1]:

Keypair and certificate request completed. Your files are:
req: /home/username/easy-rsa/pki/reqs/client1.req
key: /home/username/easy-rsa/pki/private/client1.key

Հաջորդը, պատճենեք client1.key ֆայլը ~/client-configs/keys գրացուցակում:

$ cp pki/private/client1.key ~/client-configs/keys/

Տեղափոխեք client1.req ֆայլը CA սերվերին:

$ scp pki/reqs/client1.req username@your_ca_server_ip:/tmp

Կրկին մուտք գործեք CA սերվեր և ներմուծեք սերվերի հարցումը:

$ cd ~/easy-rsa
$ ./easyrsa import-req /tmp/client1.req client1

Դուք կստանաք հետևյալ արդյունքը.

Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

The request has been successfully imported with a short name of: client1
You may now use this name to perform signing operations on this request.

Ստորագրեք հարցումը՝ օգտագործելով հետևյալ հրամանը. Մենք օգտագործում ենք client որպես հարցումի տեսակ:

$ ./easyrsa sign-req client client1

Երբ ձեզ հուշում են, մուտքագրեք այո՝ հաստատելու համար, որ ստորագրեք հարցումը և որ այն ստացվել է վստահելի աղբյուրից:

Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)


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                = client1


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes

Ձեզանից կպահանջվի CA անցաբառը:

Using configuration from /home/<username>/easy-rsa/pki/easy-rsa-13573.uI2Vi8/tmp.q1RnLo
Enter pass phrase for /home/<username>/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:'client1'
Certificate is to be certified until May  8 12:50:23 2025 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/username/easy-rsa/pki/issued/client1.crt

Ստեղծված վկայագիրը հետ փոխանցեք OpenVPN սերվերին:

$ scp pki/issued/client1.crt username@your_server_ip:/tmp

OpenVPN սերվերում պատճենեք հաճախորդի վկայականը ~/client-configs/keys գրացուցակում:

$ cp /tmp/client1.crt ~/client-configs/keys/

Պատճենեք ca.crt և ta.key ֆայլերը ~/client-configs/keys գրացուցակում և սահմանեք համապատասխան թույլտվություններ ձեր ընթացիկ մուտքի համար: - սերվերում:

$ cp ~/easy-rsa/ta.key ~/client-configs/keys/
$ sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
$ sudo chown username.username ~/client-configs/keys/*

Քայլ 8 - Կարգավորեք OpenVPN-ը

Պատճենեք server.conf ֆայլի նմուշը որպես մեկնարկային կետ՝ կարգավորելու OpenVPN-ը:

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/

Բացեք ֆայլը խմբագրման համար:

$ sudo nano /etc/openvpn/server/server.conf

Գտեք ֆայլի HMAC բաժինը՝ փնտրելով tls-auth հրահանգը: Մեկնաբանեք տողը` տողի սկզբում ավելացնելով կիսատ-ստորակետ (;): Ավելացրեք նոր տող դրա տակ, ինչպես ցույց է տրված:

;tls-auth ta.key 0 # This file is secret
tls-crypt ta.key

Հաջորդը, փոխեք գաղտնագրային ծածկագրի արժեքը՝ փնտրելով cipher տողերը: Նախնական արժեքը դրված է AES-256-CBC: Մեկնաբանեք լռելյայն արժեքը և ավելացրեք ևս մեկ տող AES-256-GCM ծածկագրմամբ, որն առաջարկում է կոդավորման ավելի լավ մակարդակ և կատարողականություն, ինչպես ցույց է տրված:

;cipher AES-256-CBC
cipher AES-256-GCM

Հենց ներքևում ավելացրեք auth հրահանգը՝ HMAC հաղորդագրության ամփոփման ալգորիթմն ընտրելու համար:

auth SHA256

Քանի որ մենք օգտագործում ենք էլիպսական կորի գաղտնագրությունը, մենք պետք է անջատենք Diffie-Hellman ծածկագրումը: Մեկնաբանեք dh dh2048.pem տողը և դրա տակ ավելացրեք dh none:

;dh dh2048.pem
dh none

OpenVPN-ն պետք է գործարկվի առանց արտոնությունների, երբ այն սկսվի: Դա միացնելու համար գտեք և ապամեկնաբանեք user nobody և group nobody տողերը և փոխեք դրանք, ինչպես ցույց է տրված:

user nobody
group nogroup

Ubuntu-ն ունի nogroup խումբ և ոչ nobody, որը հասանելի է CentOS բաշխման վրա:

Վերահղեք ամբողջ երթևեկությունը VPN-ի միջոցով

Վերոնշյալ կարգավորումները ստեղծում են VPN կապ հաճախորդի և սերվերի միջև, բայց որևէ կապ չի ստիպի օգտագործել թունելը: Դա անելու համար սկսեք գտնել push «redirect-gateway def1 bypass-dhcp» տողը: Այս տողը հաճախորդին ասում է վերահղել իր ողջ տրաֆիկը OpenVPN սերվերի միջոցով: Անջատեք գիծը՝ ֆունկցիոնալությունը միացնելու համար:

push "redirect-gateway def1 bypass-dhcp"

Այս տողի տակ գտեք dhcp-option բաժինը: Հեռացրեք երկու տողերի սկզբից կիսատ-կետը: Սա պատվիրատուին ասում է օգտագործել OpenDNS լուծիչները:

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Փոխեք նավահանգիստը և արձանագրությունը

OpenVPN-ն օգտագործում է պորտ 1194-ը և UDP արձանագրությունը՝ լռելյայնորեն՝ հաճախորդի կապերն ընդունելու համար: Դուք կարող եք փոխել նավահանգիստը՝ կախված ձեր կարիքներից: Եթե դուք չեք հոսթինգում վեբ բովանդակություն ձեր OpenVPN սերվերում, կարող եք օգտագործել պորտ 443.

Գտեք port 1194 տողը և փոխեք դրա արժեքը:

# Optional!
port 443

Գտեք proto udp տողը և մեկնաբանեք այն՝ դրա դիմաց ավելացնելով կիսատ-ստորակետ: Եվ անջատեք proto tcp տողը` հեռացնելով կիսատ-կետը, ինչպես ցույց է տրված:

proto tcp
;proto udp

Քանի որ մենք օգտագործում ենք TCP արձանագրությունը, մենք պետք է փոխենք explicit-exit-notify հրահանգի արժեքը 1-ից 0, քանի որ սա հրահանգը օգտագործվում է միայն UDP-ի կողմից:

explicit-exit-notify 0

Մատնանշեք ոչ լռելյայն հավատարմագրերը

Եթե ավելի վաղ ./easy-rsa gen-req server հրամանի ժամանակ ընտրել եք այլ անուն, ապա պետք է փոփոխեք cert և ստեղնը: տողեր, որպեսզի դրանք մատնանշեն համապատասխան .crt և .key ֆայլերը: Քանի որ մենք օգտագործում ենք լռելյայն server անունը, կանխադրված արժեքը ճիշտ է:

cert server.crt
key server.key

Ավարտելուց հետո պահեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշվի:

Քայլ 9 - Կարգավորեք OpenVPN սերվերի ցանցային կազմաձևումը

Հաջորդ քայլը սերվերի ցանցային կոնֆիգուրացիան կարգավորելն է, որպեսզի OpenVPN-ն թույլատրի երթևեկությունը ճիշտ ուղղորդել: Առաջին բանը, որ մենք պետք է կարգավորենք, Port forwarding-ն է:

Բացեք /etc/sysctl.conf ֆայլը խմբագրման համար:

$ sudo nano /etc/sysctl.conf

Ֆայլի ներքևում ավելացրեք հետևյալ տողը.

net.ipv4.ip_forward = 1

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Ֆայլը կարդալու և ընթացիկ նստաշրջանի նոր արժեքները բեռնելու համար օգտագործեք հետևյալ հրամանը.

$ sudo sysctl -p
net.ipv4.ip_forward = 1

Այս կոնֆիգուրացիան ձեր հաճախորդից կուղղորդի ամբողջ վեբ տրաֆիկը ձեր սերվերի IP հասցեի միջոցով, և ձեր հաճախորդի հանրային IP հասցեն արդյունավետորեն կթաքցվի:

Քայլ 10 - Կարգավորել Firewall-ը

OpenVPN-ին firewall-ի միջոցով թույլատրելու համար դուք պետք է միացնեք դիմակահանդեսը, iptables հայեցակարգը, որն ապահովում է դինամիկ ցանցային հասցեների թարգմանություն (NAT)՝ հաճախորդների կապերը ճիշտ ուղղորդելու համար:

Նախքան firewall-ի կազմաձևման ֆայլը բացել՝ դիմակահանդեսի կանոնները ավելացնելու համար, նախ գտեք ձեր մեքենայի հանրային ցանցային ինտերֆեյսը հետևյալ հրամանի միջոցով:

$ ip route list default

Դուք կստանաք նմանատիպ արդյունք:

default via 64.225.64.1 dev eth0 proto static

Սա մեզ ասում է, որ ինտերֆեյսի անունը eth0 է: Բացեք /etc/ufw/before.rules ֆայլը խմբագրման համար:

$ sudo nano /etc/ufw/before.rules

Այս կանոնները կարդացվում և տեղադրվում են նախքան UFW-ի սովորական կանոնների բեռնումը: Ֆայլի սկզբում ավելացրեք հետևյալ տողերը, ինչպես ցույց է տրված:

#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#
 
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
 
# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ պահանջվում է:

Հաջորդը, մենք պետք է կարգավորենք UFW-ն, որպեսզի թույլատրի փոխանցված փաթեթները լռելյայն: Բացեք /etc/default/ufw ֆայլը խմբագրման համար:

$ sudo nano /etc/default/ufw

Գտեք DEFAULT_FORWARD_POLICY հրահանգը և փոխեք դրա արժեքը DROP-ից ACCEPT:

DEFAULT_FORWARD_POLICY="ACCEPT"

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ պահանջվում է:

Եվ վերջապես, բացեք նավահանգիստը 443, որը դուք ավելի վաղ կարգավորել եք OpenVPN սերվերի համար:

$ sudo ufw allow 443/tcp

Անջատեք և միացրեք firewall-ը նոր կոնֆիգուրացիան կիրառելու համար:

$ sudo ufw disable
$ sudo ufw enable

Քայլ 11 - Սկսեք OpenVPN

Միացրեք OpenVPN ծառայությունը, որը սկսվում է բեռնման պահին:

$ sudo systemctl -f enable [email 

Սկսեք OpenVPN ծառայությունը:

$ sudo systemctl start [email 

Ստուգեք ծառայության կարգավիճակը:

$ sudo systemctl status [email 

Դուք կստանաք նմանատիպ արդյունք:

? [email  - OpenVPN service for server
     Loaded: loaded (/lib/systemd/system/[email ; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2023-02-03 13:40:28 UTC; 32s ago
       Docs: man:openvpn(8)
             https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
             https://community.openvpn.net/openvpn/wiki/HOWTO
   Main PID: 15492 (openvpn)
     Status: "Initialization Sequence Completed"
      Tasks: 1 (limit: 1116)
     Memory: 1.8M
        CPU: 29ms
     CGroup: /system.slice/system-openvpn\x2dserver.slice/[email 
             ??15492 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf

Feb 03 13:40:28 vpnserver openvpn[15492]: Listening for incoming TCP connection on [AF_INET][undef]:443
Feb 03 13:40:28 vpnserver openvpn[15492]: TCPv4_SERVER link local (bound): [AF_INET][undef]:443
Feb 03 13:40:28 vpnserver openvpn[15492]: TCPv4_SERVER link remote: [AF_UNSPEC]
Feb 03 13:40:28 vpnserver openvpn[15492]: GID set to nogroup
Feb 03 13:40:28 vpnserver openvpn[15492]: UID set to nobody
Feb 03 13:40:28 vpnserver openvpn[15492]: MULTI: multi_init called, r=256 v=256
Feb 03 13:40:28 vpnserver openvpn[15492]: IFCONFIG POOL IPv4: base=10.8.0.4 size=62
Feb 03 13:40:28 vpnserver openvpn[15492]: IFCONFIG POOL LIST
Feb 03 13:40:28 vpnserver openvpn[15492]: MULTI: TCP INIT maxclients=1024 maxevents=1028
Feb 03 13:40:28 vpnserver openvpn[15492]: Initialization Sequence Completed

Քայլ 12 - Ստեղծեք հաճախորդի կոնֆիգուրացիա

Նախքան հաճախորդի փորձարկումը, մենք պետք է ստեղծենք կազմաձևման ֆայլեր այն հաճախորդի համար, որը մենք կօգտագործենք: Ստեղծեք տեղեկատու՝ հաճախորդի կազմաձևման ֆայլերը պահելու համար:

$ mkdir -p ~/client-configs/files

Պատճենեք հաճախորդի կազմաձևման ֆայլը գրացուցակում:

$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Բացեք կազմաձևման ֆայլը խմբագրման համար:

$ nano ~/client-configs/base.conf

Գտեք հեռակա հրահանգը և դրեք այն, որպեսզի այն մատնանշի ձեր OpenVPN սերվերի հանրային IP հասցեն: Նաև փոխեք նավահանգիստը, որպեսզի համապատասխանի նախկինում ընտրված նավահանգիստին:

. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 443
. . .

Սահմանեք ավելի վաղ ընտրած արձանագրությունը:

proto tcp

Ապամեկնաբանեք user և group հրահանգները՝ հեռացնելով դրանց դիմացի կիսատակետը: Նաև փոխեք group հրահանգի արժեքը nogroup:

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Գտեք ca, cert և key հրահանգները և մեկնաբանեք դրանք՝ դրանց դիմաց դնելով կիսատ-կետ: Դա պայմանավորված է նրանով, որ մենք կավելացնենք հավաստագրերը և բանալիները հաճախորդի կազմաձևման ֆայլում:

# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
;ca ca.crt
;cert client.crt
;key client.key

Մեկնաբանեք tls-auth հրահանգը, քանի որ մենք կավելացնենք ta.key ուղղակիորեն հաճախորդի կազմաձևման ֆայլում:

# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1

Համեմատեք cipher և auth կարգավորումները, որոնք դուք դրել եք `/etc/openvpn/server/server.conf ֆայլում:

cipher AES-256-GCM
auth SHA256

Ավելացրեք key-direction հրահանգը և դրեք այն 1, որպեսզի VPN-ը ճիշտ գործի:

key-direction 1

Հաջորդը, ավելացրեք մի քանի մեկնաբանված տողեր՝ VPN-հաճախորդների կողմից DNS-ի լուծման տարբեր մեթոդների մշակման համար: Ավելացրեք հետևյալ տողերի շարքը հաճախորդների համար, որոնք չեն օգտագործում systemd-resolved, այլ ապավինում են resolvconf օգտակարին DNS-ի կառավարման համար:

; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf

Ավելացրեք հետևյալ տողերի հավաքածուն հաճախորդների համար, որոնք օգտագործում են systemd-resolved DNS լուծման համար:

; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ պահանջվում է:

Ստեղծեք սկրիպտ՝ բազային կոնֆիգուրացիան համապատասխան վկայականով, բանալիով և գաղտնագրման ֆայլերով կազմելու համար, այնուհետև պատճենեք ստեղծված կազմաձևման ֆայլը ~/client-configs/files գրացուցակում:

Ստեղծեք և բացեք make_config.sh ֆայլը ~/client-configs գրացուցակում:

$ nano ~/client-configs/make_config.sh

Դրա մեջ տեղադրեք հետևյալ կոդը.

#!/bin/bash
 
# First argument: Client identifier
 
KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/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-crypt>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-crypt>') \
    > ${OUTPUT_DIR}/${1}.ovpn

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Դարձրեք ֆայլը գործարկելի և սահմանափակեք դրա թույլտվությունները:

$ chmod 700 ~/client-configs/make_config.sh

Այս սկրիպտը պատճենում է base.conf ֆայլը, հավաքում է բոլոր վկայականներն ու հիմնական ֆայլերը, հանում դրանց բովանդակությունը, միացնում դրանք հիմնական կազմաձևման ֆայլին և արտահանում այդ ամենը` նոր հաճախորդի կազմաձևման ֆայլ ստեղծելու համար: . Ամեն անգամ, երբ դուք ավելացնում եք նոր հաճախորդ, դուք պետք է ստեղծեք նոր բանալիներ և վկայագրեր դրա համար, այնուհետև գործարկեք այս սկրիպտը՝ հաճախորդի կազմաձևման ֆայլ ստեղծելու համար:

Մենք արդեն ստեղծել ենք հաճախորդի վկայականը և հիմնական ֆայլերը քայլ 7-ում: Եկեք ստեղծենք նույնի համար կազմաձևման ֆայլը:

Անցեք ~/client-configs գրացուցակին:

$ cd ~/client-configs

Գործարկեք սկրիպտը՝ հաճախորդի կազմաձևման ֆայլը ստեղծելու համար:

$ ./make_config.sh client1

Սա կստեղծի client1.ovpn անունով ֆայլ: Փոխեք պարամետրը, եթե ցանկանում եք այլ ֆայլի անուն: Ստուգեք գրացուցակի բովանդակությունը:

$ ls ~/client-configs/files
client1.ovpn

Սա այն կազմաձևման ֆայլն է, որը դուք պետք է փոխանցեք հաճախորդին, որն այնուհետև կօգտագործվի OpenVPN սերվերին միանալու համար: Ֆայլը հաճախորդին փոխանցելու համար կարող եք օգտագործել ցանկացած SFTP արձանագրություն/ծրագիր:

Քայլ 13 - Տեղադրեք և փորձարկեք հաճախորդի կապը

Մեր ձեռնարկի համար մենք օգտագործում ենք Ubuntu 22.04 հաճախորդի մեքենա: Տեղադրեք OpenVPN-ը հետևյալ հրամանի միջոցով.

$ sudo apt install openvpn

Ստուգեք, արդյոք ձեր համակարգը օգտագործում է systemd-resolved DNS հարցումները կառավարելու համար՝ գործարկելով հետևյալ հրամանը:

$ cat /etc/resolv.conf

Դուք կստանաք նմանատիպ արդյունք:

Output
# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
. . .

nameserver 127.0.0.53
options edns0 trust-ad
search .

Եթե համակարգը օգտագործում է systemd-resolved, ապա վերը նշված IP հասցեն կլինի 127.0.0.53: Նաև ֆայլի վերևի մեկնաբանությունը կհաստատի նույնը: Եթե IP հասցեն այլ բան է, քան 127.0.0.53, ապա համակարգը չի օգտագործում systemd-resolved, և դուք պետք է հետևեք ավելի ուշ նշված քայլերին:

systemd-resolved ունեցող հաճախորդների համար

Տեղադրեք openvpn-systemd-resolved փաթեթը, որն ապահովում է սկրիպտներ, որոնք ստիպում են systemd-resolved օգտագործել VPN սերվերը DNS-ի համար:

$ sudo apt install openvpn-systemd-resolved

Բացեք Հաճախորդի կազմաձևման ֆայլը խմբագրման համար:

$ nano client1.ovpn

Ապամեկնաբանեք ֆայլի հետևյալ տողերը՝ հեռացնելով դրանց դիմացի կիսագնդակը:

script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

update-resolv-conf ունեցող հաճախորդների համար

Նախ, հաստատեք, որ ձեր բաշխումն օգտագործում է update-resolv-conf:

$ ls /etc/openvpn
client server update-resolv-conf

Եթե ձեր համակարգը պարունակում է update-resolv-conf ֆայլը, ապա բացեք Հաճախորդի կազմաձևման ֆայլը խմբագրման համար:

$ nano client1.ovpn

Ապամեկնաբանեք ֆայլի հետևյալ տողերը՝ հեռացնելով դրանց դիմացի կիսագնդակը:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Եթե դուք օգտագործում եք CentOS-ի վրա հիմնված բաշխում, փոխեք group հրահանգը nogroup-ից nobody:

group nobody

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ պահանջվում է:

Միացնել հաճախորդին

Գործարկեք հետևյալ հրամանը՝ հաճախորդը VPN սերվերին միացնելու համար:

$ sudo openvpn --config client1.ovpn

Դուք պետք է ստանաք նմանատիպ արդյունք:

2023-02-06 15:18:37 OpenVPN 2.5.5 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 14 2022
2023-02-06 15:18:37 library versions: OpenSSL 3.0.2 15 Mar 2022, LZO 2.10
2023-02-06 15:18:37 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
2023-02-06 15:18:37 Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2023-02-06 15:18:37 Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2023-02-06 15:18:37 Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2023-02-06 15:18:37 Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2023-02-06 15:18:37 TCP/UDP: Preserving recently used remote address: [AF_INET]64.225.66.226:443
2023-02-06 15:18:37 Socket Buffers: R=[131072->131072] S=[16384->16384]
2023-02-06 15:18:37 Attempting to establish TCP connection with [AF_INET]64.225.66.226:443 [nonblock]
2023-02-06 15:18:38 TCP connection established with [AF_INET]64.225.66.226:443
2023-02-06 15:18:38 TCP_CLIENT link local: (not bound)
2023-02-06 15:18:38 TCP_CLIENT link remote: [AF_INET]64.225.66.226:443
2023-02-06 15:18:38 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
2023-02-06 15:18:38 TLS: Initial packet from [AF_INET]64.225.66.226:443, sid=b6459c4e 0e23d362
2023-02-06 15:18:38 VERIFY OK: depth=1, CN=Easy-RSA CA
2023-02-06 15:18:38 VERIFY KU OK
2023-02-06 15:18:38 Validating certificate extended key usage
2023-02-06 15:18:38 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
2023-02-06 15:18:38 VERIFY EKU OK
2023-02-06 15:18:38 VERIFY OK: depth=0, CN=server
2023-02-06 15:18:38 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 2048 bit RSA, signature: RSA-SHA256
2023-02-06 15:18:38 [server] Peer Connection Initiated with [AF_INET]64.225.66.226:443
2023-02-06 15:18:39 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
2023-02-06 15:18:39 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM'
2023-02-06 15:18:39 OPTIONS IMPORT: timers and/or timeouts modified
2023-02-06 15:18:39 OPTIONS IMPORT: --ifconfig/up options modified
2023-02-06 15:18:39 OPTIONS IMPORT: route options modified
2023-02-06 15:18:39 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
2023-02-06 15:18:39 OPTIONS IMPORT: peer-id set
2023-02-06 15:18:39 OPTIONS IMPORT: adjusting link_mtu to 1626
2023-02-06 15:18:39 OPTIONS IMPORT: data channel crypto options modified
2023-02-06 15:18:39 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2023-02-06 15:18:39 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2023-02-06 15:18:39 net_route_v4_best_gw query: dst 0.0.0.0
2023-02-06 15:18:39 net_route_v4_best_gw result: via 10.0.2.2 dev enp0s3
2023-02-06 15:18:39 ROUTE_GATEWAY 10.0.2.2/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:84:e2:0b
2023-02-06 15:18:39 TUN/TAP device tun0 opened
2023-02-06 15:18:39 net_iface_mtu_set: mtu 1500 for tun0
2023-02-06 15:18:39 net_iface_up: set tun0 up
2023-02-06 15:18:39 net_addr_ptp_v4_add: 10.8.0.6 peer 10.8.0.5 dev tun0
2023-02-06 15:18:39 /etc/openvpn/update-systemd-resolved tun0 1500 1626 10.8.0.6 10.8.0.5 init
<14>Feb  6 15:18:39 update-systemd-resolved: Link 'tun0' coming up
<14>Feb  6 15:18:39 update-systemd-resolved: Adding DNS Routed Domain .
<14>Feb  6 15:18:39 update-systemd-resolved: Adding IPv4 DNS Server 208.67.222.222
<14>Feb  6 15:18:39 update-systemd-resolved: Adding IPv4 DNS Server 208.67.220.220
<14>Feb  6 15:18:39 update-systemd-resolved: SetLinkDNS(5 2 2 4 208 67 222 222 2 4 208 67 220 220)
<14>Feb  6 15:18:39 update-systemd-resolved: SetLinkDomains(5 1 . true)
2023-02-06 15:18:39 net_route_v4_add: 64.225.66.226/32 via 10.0.2.2 dev [NULL] table 0 metric -1
2023-02-06 15:18:39 net_route_v4_add: 0.0.0.0/1 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-02-06 15:18:39 net_route_v4_add: 128.0.0.0/1 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-02-06 15:18:39 net_route_v4_add: 10.8.0.1/32 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-02-06 15:18:39 GID set to nogroup
2023-02-06 15:18:39 UID set to nobody
2023-02-06 15:18:39 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
2023-02-06 15:18:39 Initialization Sequence Completed

Բացեք մեկ այլ տերմինալ՝ DNS-ի կարգավորումները ստուգելու համար:

$ systemd-resolve --status tun0

Դուք կստանաք հետևյալ ելքը, որտեղ կարող եք տեսնել DNS սերվերները, որոնք մենք նախկինում կարգավորել ենք: Սա ապահովում է, որ VPN-ը ճիշտ է աշխատում:

Link 4 (tun0)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 208.67.222.222
       DNS Servers: 208.67.222.222 208.67.220.220
        DNS Domain: ~.

Դուք կարող եք լրացուցիչ հաստատել կապը՝ այցելելով https://whatismyip.com URL-ը ձեր բրաուզերում և կտեսնեք ձեր IP հասցեն և ձեր OpenVPN սերվերի գտնվելու վայրը:

Դուք կարող եք նաև լրացուցիչ ստուգումներ կատարել՝ կատարելով ստանդարտ թեստ https://www.dnsleaktest.com/ կայքում:

Դուք կարող եք տեսնել OpenDNS հոստերի անունները, որոնք մենք կարգավորել ենք նախկինում, և սերվերի գտնվելու վայրը համընկնում է OpenVPN սերվերի գտնվելու վայրի հետ:

Վերոնշյալ հրամանը գործարկում է OpenVPN-ն առաջին պլանում, ինչը նշանակում է, որ տերմինալը կարգելափակվի: Կապը փակելու համար հարկավոր է սեղմել Ctrl + C: Այնուամենայնիվ, դուք կարող եք գործարկել OpenVPN-ը նաև հետին պլանում. Դա անելու համար օգտագործեք հետևյալ հրամանը.

sudo openvpn --config client1.ovpn --daemon

Կապն անջատելու համար գտեք գործընթացի ID-ն:

$ ps aux | grep openvpn

Դուք կստանաք նմանատիպ արդյունք:

nobody      4357  0.3  0.0  13468  8432 ?        Ss   15:35   0:00 openvpn --config client1.ovpn --daemon
username    4406  0.0  0.0  17732  2432 pts/0    S+   15:35   0:00 grep --color=auto openvpn

Ինչպես տեսնում եք, OpenVPN գործընթացին համապատասխան գործընթացի ID-ն 4357 է: Անջատեք VPN կապը՝ օգտագործելով հետևյալ հրամանը՝ գործընթացը սպանելու համար.

$ sudo kill -9 4357

OpenVPN-ն առաջարկում է GUI հաճախորդներ Windows-ի, macOS-ի, Android-ի և iOS-ի համար, որտեղ կարող եք ներմուծել հաճախորդի կազմաձևման ֆայլը՝ միանալու համար:

Քայլ 14 - Հաճախորդի վկայականների չեղարկում

Եթե ցանկանում եք չեղարկել հաճախորդի վկայականը՝ մուտքը կանխելու համար, կարող եք դա անել՝ մուտք գործելով CA սերվեր:

Անցեք ~/easy-rsa գրացուցակին:

$ cd ~/easy-rsa

Գործարկեք սկրիպտը revoke տարբերակով, որին հաջորդում է հաճախորդի անունը:

$ ./easyrsa revoke client1

Ձեզ կառաջարկվի, եթե ցանկանում եք չեղարկել վկայականը:

Please confirm you wish to revoke the certificate with the following subject:

subject=
    commonName                = client1


Type the word 'yes' to continue, or any other input to abort.
  Continue with revocation: yes
. . .
Revoking Certificate 8348B3F146A765581946040D5C4D590A
. . .

Սա չեղարկում է վկայագիրը CA սերվերի վրա: Այնուամենայնիվ, OpenVPN սերվերը միջոց չունի չեղյալ համարելու կարգավիճակը ստուգելու համար: Դրա համար մենք պետք է ստեղծենք Վկայագրի չեղյալ հայտարարման ցուցակ (CRL) և այն փոխանցենք OpenVPN սերվերին։

Ստեղծեք CRL-ը:

$ ./easyrsa gen-crl

Ձեզանից կպահանջվի նշել ձեր CA անցաբառը: Վերոնշյալ հրամանը ստեղծում է crl.pem ֆայլ:

Պատճենեք այս ֆայլը OpenVPN սերվերին:

$ scp ~/easy-rsa/pki/crl.pem username@your_server_ip:/tmp

Կրկին մուտք գործեք OpenVPN սերվեր և պատճենեք CRL ֆայլը /etc/openvpn/server գրացուցակում:

$ sudo cp /tmp/crl.pem /etc/openvpn/server/

Բացեք OpenVPN սերվերի կազմաձևման ֆայլը խմբագրման համար:

$ sudo nano /etc/openvpn/server/server.conf

Ֆայլի ներքևում ավելացրեք հետևյալ տողը. Սա հրահանգում է OpenVPN սերվերին ստուգել չեղյալ համարելու ցանկը հաճախորդների համար, որոնք սահմանափակվել են:

crl-verify crl.pem

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ պահանջվում է:

Փոփոխությունները կիրառելու համար վերագործարկեք OpenVPN սերվերը:

sudo systemctl restart [email 

Հաճախորդն այլևս չի կարող միանալ OpenVPN սերվերին:

Եզրակացություն

Սա ավարտում է մեր ձեռնարկը Ubuntu 22.04 սերվերի վրա OpenVPN սերվերի տեղադրման և կազմաձևման վերաբերյալ: Մենք նաև միացրել ենք OpenVPN Linux հաճախորդը սերվերին: Եթե ունեք հարցեր, տեղադրեք դրանք ստորև ներկայացված մեկնաբանություններում: