Ինչպես տեղադրել և կարգավորել OpenVPN սերվերը Ubuntu 22.04-ում
Այս էջում
- Նախադրյալներ
Քայլ 1 - CA սերվերի կարգավորում
- Քայլ 1.1 - Տեղադրեք Easy-RSA-ն
- Քայլ 1.2 - Ստեղծեք հանրային բանալիների ենթակառուցվածքի գրացուցակ
- Քայլ 1.3 - Ստեղծեք վկայականի մարմին
Քայլ 8 - Կարգավորեք OpenVPN-ը
Քայլ 13 - Տեղադրեք և փորձարկեք հաճախորդի կապը
Վիրտուալ մասնավոր ցանցը (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 հաճախորդը սերվերին: Եթե ունեք հարցեր, տեղադրեք դրանք ստորև ներկայացված մեկնաբանություններում: