Մեր օրերում VPN տեխնոլոգիան ավելի տարածված է դառնում։ Սովորական օգտվողներն օգտագործում են VPN՝ անվտանգ ինտերնետ մուտք գործելու համար: Այն նաև օգնում է շրջանցել տեղական արգելափակված կայքերն ու ծառայությունները և պաշտպանել հնարավոր արտաքին վնասակար վարքագծից: Երբ դուք միանում եք VPN սերվերին, ձեր համակարգչի և սերվերի միջև կա անվտանգ թունել, որը հնարավոր չէ մուտք գործել դրսից, ուստի VPN սերվերը դառնում է ձեր ինտերնետ մուտքի կետը: Այնտեղ կան բազմաթիվ VPN ծառայություններ՝ և՛ անվճար, և՛ վճարովի, բայց եթե դրանք ինչ-ինչ պատճառներով ձեզ մոտ չեն աշխատում, դուք միշտ կարող եք կարգավորել ձեր սեփական VPN սերվերը:
Ձեր VPN-ը գործարկելու համար դուք պետք է վարձել VPS սերվեր. Կան տարբեր ծրագրեր, որոնք թույլ են տալիս ստեղծել VPN կապ: Այն տարբերվում է միմյանցից աջակցվող օպերացիոն համակարգերով և օգտագործվող ալգորիթմներով: Մենք կանդրադառնանք VPN սերվեր ստեղծելու երկու անկախ մոտեցումներին: Առաջինը հիմնված է PPTP արձանագրության վրա, որն արդեն համարվում է հնացած և ոչ անվտանգ, բայց իսկապես հեշտ է կարգավորել: Մյուսն օգտագործում է ժամանակակից և անվտանգ OpenVPN ծրագրակազմ, բայց պահանջում է երրորդ կողմի հաճախորդի հավելվածի տեղադրում և ավելի մանրակրկիտ տեղադրման գործընթաց:
Մեր թեստային միջավայրում մենք պատրաստվում ենք օգտագործել վիրտուալ սերվեր, որը սնուցվում է Ubuntu Server 18.04-ով: Սերվերի վրա firewall-ը կանջատվի, քանի որ դրա կազմաձևումն արժանի է առանձին հոդվածի: Մենք նկարագրելու ենք Windows 10-ի տեղադրման գործընթացը:
Պատրաստում
Անկախ նրանից, թե որ VPN սերվեր եք ընտրում, ինտերնետ հասանելիությունը կստեղծվի օպերացիոն համակարգի ինտեգրված միջոցներով: Արտաքին ծառայության ինտերֆեյսի միջոցով ինտերնետ հասանելիությունը բացելու համար դուք պետք է թույլատրեք փաթեթների վերահասցեավորում միջերեսների միջև և կարգավորեք ցանցի հասցեների թարգմանությունը:
Փաթեթների վերահասցեավորումը միացնելու համար բացեք ֆայլը «/etc/sysctl.conf» եւ փոխել «net.ipv4.ip_forward» պարամետրի արժեքը մեջ 1.
Փոփոխությունները առանց համակարգիչը վերագործարկելու համար գործարկեք հրամանը
sudo sysctl -p /etc/sysctl.conf
Ցանցի հասցեների թարգմանությունը կազմաձևվում է միջոցով iptables. Նախ ստուգեք ձեր արտաքին ցանցի ինտերֆեյսի անունը, որն աշխատում է հրամանով «IP կապի ցուցադրում» - այն ձեզ պետք կգա հաջորդ քայլին: Մեր անունն է «ens3».
Միացրեք ցանցի հասցեների թարգմանությունը ձեր արտաքին ինտերֆեյսում տեղական ցանցի բոլոր հանգույցների համար:
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Նկատի ունեցեք, որ դուք պետք է նշեք ձեր սերվերի ինտերֆեյսի իրական անունը, այն կարող է տարբերվել մերից:
Լռելյայնորեն, iptables-ի կողմից ստեղծված բոլոր կանոնները վերակայվում են սերվերի վերագործարկումից հետո: Դա կանխելու համար օգտագործեք «iptables- մշտական» օգտակար. Տեղադրեք հետևյալ փաթեթը.
sudo apt install iptables-persistent
Տեղադրման գործընթացի ինչ-որ պահի դուք կտեսնեք կազմաձևման պատուհան, որը կառաջարկի ձեզ պահպանել iptables-ի ընթացիկ կանոնները: Քանի որ կանոններն արդեն սահմանված են, պարզապես հաստատեք և սեղմեք «Այո» երկու անգամ։ Քանի որ այժմ կանոնները կկիրառվեն ավտոմատ կերպով սերվերի վերագործարկումից հետո:
PPTP սերվեր
Սերվերի կազմաձևում
Տեղադրեք փաթեթը.
sudo apt install pptpd
Տեղադրման ավարտից հետո բացեք ֆայլը «/etc/pptpd.conf» ցանկացած տեքստային խմբագրիչում և խմբագրեք այն այսպես.
option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses
Դրանից հետո խմբագրեք ֆայլը «/etc/ppp/pptpd-options». Պարամետրերի մեծ մասը կարգավորվում է լռելյայն:
#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
Հաջորդ փուլում դուք պետք է գրանցվեք հաճախորդների կապերի համար: Ենթադրենք՝ ցանկանում եք օգտատեր ավելացնել «vpnuser» գաղտնաբառով «1» և թույլ տվեք դինամիկ հասցեագրել նրա համար: Բացեք ֆայլը «/etc/ppp/chap-secrets» և ֆայլի վերջում ավելացրեք հետևյալ տողը օգտագործողի պարամետրերով.
vpnuser pptpd 1 *
«pptpd» արժեքը այն ծառայության անունն է, որը մենք նշել ենք ֆայլում «pptpd-ընտրանքներ». Փոխարեն «*» դուք կարող եք նշել ֆիքսված IP հասցե: Արդյունքում ֆայլը «Գաղտնիքներ» պետք է այսպիսի տեսք ունենա.
Պարամետրերը կիրառելու համար վերակայեք pptpd ծառայություն և ավելացրեք այն ավտոմատ բեռնման մեջ:
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Սերվերի կազմաձևումն ավարտված է:
Հաճախորդի կազմաձևում
բաց «Սկսել» - "Կարգավորումներ" - Ցանց և ինտերնետ - «VPN» եւ սեղմեք «Ավելացնել VPN կապ»
Բացված պատուհանում մուտքագրեք կապի պարամետրերը և սեղմեք «Փրկել»
- VPN մատակարար. «Windows (ներկառուցված)»
- Միացման անունը՝ «vpn_connect» (կարող եք ընտրել ցանկացած անուն)
- Սերվերի անունը կամ հասցեն. (նշեք սերվերի արտաքին IP հասցեն)
- VPN տեսակը՝ «Ավտոմատ»
- Մուտքի տեղեկատվության տեսակը՝ «Օգտվողի անուն և գաղտնաբառ»
- Օգտագործողի անունը: vpnuser (անունը նշված է սերվերի «chap-secrets» ֆայլում)
- Գաղտնաբառ: 1 (ինչպես «chap-secrets» ֆայլում)
Պարամետրերը պահպանելուց հետո պատուհանում կտեսնեք նոր VPN կապը: Ձախ սեղմեք կապի վրա և ընտրեք «Միացեք». Հաջող կապի դեպքում կտեսնեք «Միացված» կարգավիճակ:
Ընտրանքներում դուք կգտնեք հաճախորդի և սերվերի ներքին հասցեները: Դաշտ «Նպատակակետի հասցեն» ցուցադրում է արտաքին սերվերի հասցեն:
Երբ միացված է, սերվերի ներքին IP հասցեն, 172.16.0.1 մեր դեպքում այն դառնում է լռելյայն դարպաս բոլոր ելքային փաթեթների համար:
Օգտագործելով ցանկացած առցանց ծառայություն՝ կարող եք համոզվել, որ համակարգչի արտաքին IP հասցեն այժմ նույնն է, ինչ ձեր VPN սերվերի IP հասցեն:
OpenVPN սերվեր
Սերվերի կազմաձևում
Եկեք խթանենք ընթացիկ օգտագործողի թույլտվությունների մակարդակը, քանի որ մեր հետագա կազմաձևման համար մեզ անհրաժեշտ կլինի արմատային մուտք:
sudo -s
Տեղադրեք բոլոր անհրաժեշտ փաթեթները: Մեզ պետք կգա «Հեշտ-RSA» փաթեթ՝ գաղտնագրման բանալիները կառավարելու համար:
apt install openvpn easy-rsa iptables-persistent
Թույլատրել մուտքային միացումները 1194 պորտի վրա UDP արձանագրության միջոցով և կիրառել iptables կանոնները։
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Ստեղծեք «Easy-RSA» փաթեթից պատճենված ֆայլերով գրացուցակ և մտեք դրա մեջ։
make-cadir ~/openvpn
cd ~/openvpn
Ստեղծեք հանրային բանալիի ենթակառուցվածք (PKI):
./easyrsa init-pki
Ստեղծեք վկայականի մարմնի (CA) արմատային վկայականը։
./easyrsa build-ca
Ստեղծման գործընթացի ընթացքում ձեզ կառաջարկվի սահմանել և հիշել գաղտնաբառ: Դուք նաև պետք է պատասխանեք հարցերին և մուտքագրեք բանալու սեփականատիրոջ մասին տեղեկություններ: Կարող եք թողնել քառակուսի փակագծերում տրված լռելյայն արժեքները: Սեղմեք «Enter»՝ մուտքագրումն ավարտելու համար:
Ստեղծեք մասնավոր բանալի և վկայագրի հարցում: Որպես արգումենտ նշեք կամայական անուն. մեր դեպքում դա «vpn-server» է:
./easyrsa gen-req vpn-server nopass
Թողեք Common Name արժեքը որպես լռելյայն։
Ստորագրեք ստեղծված սերվերի վկայականի հարցումը։
./easyrsa sign-req server vpn-server
Այս քայլում պատասխանեք «այո»՝ ստորագրությունը հաստատելու համար, այնուհետև մուտքագրեք արմատային վկայականի ստեղծման ժամանակ ստեղծված գաղտնաբառը։
Ստեղծեք Diffie-Hellman պարամետրեր: Այս պարամետրերը օգտագործվում են սերվերի և հաճախորդի միջև բանալիների անվտանգ փոխանակման համար:
./easyrsa gen-dh
Բոլոր անհրաժեշտ ֆայլերը ստեղծվել են։ Եկեք OpenVPN-ի աշխատանքային գրացուցակում ստեղծենք «keys» թղթապանակ՝ բանալիները պահելու և ստեղծված ֆայլերը այնտեղ պատճենելու համար։
mkdir /etc/openvpn/keys
sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys
Կարգավորեք NAT-ը՝ օգտագործելով iptables կանոններ։ Ստեղծեք ֆայլ՝ անունով nat և բացեք այն խմբագրման համար /etc/openvpn/ Հայաստան.
#!/bin/sh
# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP
# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP
sudo netfilter-persistent save
Պահպանեք ֆայլը և դարձրեք այն կատարվող։
sudo chmod 755 /etc/openvpn/nat
Պատճենեք սերվերի կարգավորման ձևանմուշը։
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Բացեք ֆայլը «/etc/openvpn/server.conf» խմբագրելու համար համոզվեք, որ այն պարունակում է հետևյալ տողերը և անհրաժեշտության դեպքում խմբագրեք դրանք.
#Port, protocol, and interface
port 1194
proto udp
dev tun
#Path to the encryption keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
dh /etc/openvpn/keys/dh.pem
#SHA256 Hashing Algorithm
auth SHA256
#Switching off additional encryption
#tls-auth ta.key 0
#Network parameters
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.
keepalive 10 120
#Set up AES-256 encryption for the tunnel.
cipher AES-256-GCM
#Demoting the service OpenVPN after launch
user nobody
group nogroup
#Switching on parameters saving after reboot
persist-key
persist-tun
#Set log verbosity
verb 3
#Redirecting logs
log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.
up /etc/openvpn/nat
Միացնել երթևեկության վերահասցեավորումը սերվերի վրա։
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Գործարկեք OpenVPN-ը՝ կարգավորումը կիրառելու համար։
systemctl restart openvpn@server
Սերվերի կազմաձևումն ավարտված է:
Հաճախորդի կազմաձևում
Գնացեք OpenVPN-ի պաշտոնական կայք»https://openvpn.net», գնալ դեպի «ՀԱՄԱՅՆՔ» բաժնում:
Գլորեք ներքև և ներբեռնեք ձեր օպերացիոն համակարգի տարբերակի համար նախատեսված տեղադրիչը։ Մեր դեպքում դա Windows 11 ARM64 է։
Տեղադրեք հավելվածը լռելյայն թողնելով բոլոր պարամետրերը:
Հաջորդ փուլում դուք պետք է պատրաստեք հետևյալ ֆայլը սերվերի վրա և փոխանցեք դրանք հաճախորդի համակարգչին.
- հանրային և մասնավոր բանալիներ;
- հավաստագրման կենտրոնի բանալին;
- կազմաձևման ֆայլի ձևանմուշ:
Միացեք սերվերին, բարձրացրեք արտոնությունները և անցեք մեր ստեղծված գրացուցակին "~/openvpn".
sudo -s
cd ~/openvpn
Ստեղծեք հաճախորդի համար մասնավոր բանալի և վկայագրի հարցում: Որպես արգումենտ նշեք կամայական անուն. մեր դեպքում դա «client1» է:
./easyrsa gen-req client1 nopass
Մուտքագրեք արմատային վկայականը ստեղծելիս մեր կողմից սահմանված գաղտնաբառը և թողեք Common Name արժեքը որպես լռելյայն։
Ստորագրեք ստեղծված հաճախորդի վկայականի հարցումը։
./easyrsa sign-req client client1
Այս քայլում պատասխանեք «այո»՝ ստորագրությունը հաստատելու համար, այնուհետև մուտքագրեք արմատային վկայականի ստեղծման ժամանակ ստեղծված գաղտնաբառը։
Հարմարության համար, եկեք ստեղծենք «client1» անունով թղթապանակ գլխավոր գրացուցակում և այնտեղ պատճենենք հաճախորդի համակարգիչ փոխանցելու համար նախատեսված բոլոր ֆայլերը։
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Պատճենեք հաճախորդի կազմաձևման ֆայլի ձևանմուշը նույն գրացուցակում: Փոխեք ֆայլի ընդլայնումը «.ovpn» պատճենելիս։
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Փոխեք գրացուցակի և բոլոր ֆայլերի սեփականատիրոջը «~/client1/» որպեսզի կարողանանք դրանք բաժանել հաճախորդին: Եկեք պատրաստենք «Միխայիլ» սեփականատերը մեր դեպքում.
chown -R mihail:mihail ~/client1
Գնացեք հաճախորդի համակարգիչ և պատճենեք դրա բովանդակությունը «~/client1/» թղթապանակ. Դուք կարող եք դա անել օգնությամբ «PSCP» օգտակար, որը գնում է Putty-ի հետ:
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Դուք կարող եք պահել հիմնական ֆայլերը «ca.crt», «client1.crt», «client1.key» որտեղ ուզում ես: Մեր դեպքում դրանք այս թղթապանակում են «c:\Program Files\OpenVPN\keys», և մենք ռեժիմում ենք կոնֆիգուրացիայի ֆայլը «client.ovpn» մեջ «c:\Program Files\OpenVPN\config» Հայաստան.
Այժմ եկեք անցնենք հաճախորդի կազմաձևմանը: Բացեք ֆայլը «c:\Program Files\OpenVPN\config\client.ovpn» տեքստային խմբագրիչում և խմբագրեք հետևյալ տողերը.
#announce that this is the client
client
#interface and protocol just like on the server
dev tun
proto udp
#IP address of the server and port
remote ip_address 1194
#saving parameters after reload
persist-key
persist-tun
#key paths
ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”
cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”
key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification
remote-cert-tls server
#disable extra encryption
#tls-auth ta.key 1
cipher AES-256-CBC
auth-nocache
verb 3
Մնացածը թողեք անձեռնմխելի:
Պահպանեք ֆայլը և գործարկեք հաճախորդի հավելվածը «OpenVPN GUI».
Աջ սեղմեք ծրագրի պատկերակի վրա առաջադրանքների տողում և ընտրեք «Միացեք». Եթե կապը հաջող լինի, պատկերակը կդառնա կանաչ:
Օգտագործեք ցանկացած առցանց ծառայություն՝ համոզվելու համար, որ ձեր հանրային IP հասցեն փոխվել է և այժմ նույնն է, ինչ սերվերի IP հասցեն: