Մեր օրերում 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 link show» հրամանը . այն ձեզ անհրաժեշտ կլինի հաջորդ քայլում։ Մեր անունը «ens3» է ։
Միացրեք ցանցի հասցեների թարգմանությունը ձեր արտաքին ինտերֆեյսում տեղական ցանցի բոլոր հանգույցների համար:
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Նկատի ունեցեք, որ դուք պետք է նշեք ձեր սերվերի ինտերֆեյսի իրական անունը, այն կարող է տարբերվել մերից:
Ըստ լռելյայնի, iptables-ի կողմից ստեղծված բոլոր կանոնները վերագործարկվում են սերվերի վերագործարկումից հետո: Դա կանխելու համար օգտագործեք «iptables-persistent» ծրագիրը: Տեղադրեք հետևյալ փաթեթը՝
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-options» ֆայլում նշված ծառայության անունն է : «*»- ի փոխարեն կարող եք նշել ֆիքսված IP հասցե: Արդյունքում «chap-secrets» ֆայլը պետք է ունենա հետևյալ տեսքը՝
Կարգավորումները կիրառելու համար վերագործարկեք 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
Տեղադրեք բոլոր անհրաժեշտ փաթեթները: Մեզ անհրաժեշտ կլինի «Easy-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/» ֆայլերի սեփականատիրոջը , որպեսզի կարողանաք դրանք բաշխել հաճախորդին։ Մեր դեպքում եկեք «mihail»- ը դարձնենք սեփականատիրոջը։
chown -R mihail:mihail ~/client1
Մուտք գործեք հաճախորդային համակարգիչ և պատճենեք «~/client1/» թղթապանակի պարունակությունը ։ Դա կարող եք անել Putty-ի հետ մատակարարվող «PSCP» ծրագրի օգնությամբ ։
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 հասցեն: