დღესდღეობით 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 სერვერი
სერვერის კონფიგურაცია
მოდით, ხელი შევუწყოთ მიმდინარე მომხმარებლის ნებართვების დონეს, რადგან ჩვენი შემდგომი კონფიგურაციისთვის დაგვჭირდება root წვდომა.
sudo -s
დააინსტალირეთ ყველა საჭირო პაკეტი. დაშიფვრის გასაღებების სამართავად დაგვჭირდება „Easy-RSA“ პაკეტი.
apt install openvpn easy-rsa iptables-persistent
UDP პროტოკოლის მეშვეობით 1194 პორტზე შემომავალი კავშირების დაშვება და 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
დატოვეთ საერთო სახელის მნიშვნელობა ნაგულისხმევად.
ხელი მოაწერეთ გენერირებულ სერვერის სერტიფიკატის მოთხოვნას.
./easyrsa sign-req server vpn-server
ამ ეტაპზე, ხელმოწერის დასადასტურებლად უპასუხეთ „დიახ“-ს, შემდეგ შეიყვანეთ პაროლი, რომელიც შეიქმნა root სერტიფიკატის გენერირების დროს.
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
კლიენტისთვის შექმენით კერძო გასაღები და სერტიფიკატის მოთხოვნა. არგუმენტის სახით მიუთითეთ თვითნებური სახელი; ჩვენს შემთხვევაში, ეს არის „კლიენტი1“.
./easyrsa gen-req client1 nopass
შეიყვანეთ root სერტიფიკატის შექმნისას დაყენებული პაროლი და ნაგულისხმევად დატოვეთ Common Name მნიშვნელობა.
ხელი მოაწერეთ გენერირებულ კლიენტის სერტიფიკატის მოთხოვნას.
./easyrsa sign-req client client1
ამ ეტაპზე, ხელმოწერის დასადასტურებლად უპასუხეთ „დიახ“-ს, შემდეგ შეიყვანეთ პაროლი, რომელიც შეიქმნა root სერტიფიკატის გენერირების დროს.
მოხერხებულობისთვის, მოდით შევქმნათ საქაღალდე სახელწოდებით '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 მისამართი.