Šiais laikais VPN technologija tampa vis populiaresnė. Paprasti vartotojai naudoja VPN saugiai prieigai prie interneto. Tai taip pat padeda apeiti vietoje blokuojamas svetaines ir paslaugas bei apsisaugoti nuo galimo išorinio kenkėjiško elgesio. Kai jungiatės prie VPN serverio, tarp jūsų kompiuterio ir serverio yra saugus tunelis, kurio negalima pasiekti iš išorės, todėl VPN serveris tampa jūsų interneto prieigos tašku. Yra daug VPN paslaugų, tiek nemokamų, tiek mokamų, bet jei dėl kokių nors priežasčių jos jums netinka, visada galite sukonfigūruoti savo VPN serverį.
Norėdami paleisti savo VPN, turėtumėte išsinuomoti VPS serverį. Yra skirtinga programinė įranga, leidžianti sukurti VPN ryšį. Ji skiriasi viena nuo kitos palaikomomis operacinėmis sistemomis ir naudojamais algoritmais. Apžvelgsime du nepriklausomus VPN serverio nustatymo būdus. Pirmasis yra pagrįstas PPTP protokolu, kuris jau laikomas pasenusiu ir nesaugiu, tačiau jį tikrai lengva konfigūruoti. Kitame naudojama moderni ir saugi programinė įranga OpenVPN, tačiau reikia įdiegti trečiosios šalies kliento programą ir atlikti kruopštesnį sąrankos procesą.
Bandomojoje aplinkoje naudosime virtualų serverį, maitinamą Ubuntu Server 18.04. Užkarda bus išjungta serveryje, nes jos konfigūracija nusipelno atskiro straipsnio. Aprašysime sąrankos procesą „Windows 10“.
Rengimas
Nesvarbu, kokį VPN serverį pasirinksite, prieiga prie interneto bus sukurta integruotomis operacinės sistemos priemonėmis. Norėdami atidaryti prieigą prie interneto per išorinę paslaugų sąsają, turite leisti paketų persiuntimą tarp sąsajų ir sukonfigūruoti tinklo adresų vertimą.
Norėdami įjungti paketų persiuntimą, atidarykite failą „/etc/sysctl.conf“ ir pasikeisti „net.ipv4.ip_forward“ parametro vertė į 1.
Norėdami pritaikyti pakeitimus neperkraunant kompiuterio, paleiskite komandą
sudo sysctl -p /etc/sysctl.conf
Tinklo adresų vertimas sukonfigūruojamas naudojant iptables. Pirmiausia patikrinkite išorinės tinklo sąsajos, kurioje vykdoma komanda, pavadinimą „IP nuorodų šou“ – jums to prireiks kitame žingsnyje. Mūsų vardas yra „ens3“.
Įgalinkite tinklo adresų vertimą savo išorinėje sąsajoje visuose vietinio tinklo mazguose.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Atminkite, kad turite nurodyti tikrąjį savo serverio sąsajos pavadinimą, jis gali skirtis nuo mūsų.
Pagal numatytuosius nustatymus visos iptables sukurtos taisyklės nustatomos iš naujo po serverio paleidimo iš naujo. Norėdami to išvengti, naudokite „iptables-persistent“ naudingumas. Įdiekite šį paketą:
sudo apt install iptables-persistent
Tam tikru metu diegimo proceso metu pamatysite konfigūracijos langą, kuriame bus pasiūlyta išsaugoti esamas iptables taisykles. Kadangi taisyklės jau apibrėžtos, tiesiog patvirtinkite ir spustelėkite "Taip" du kartus. Nuo šiol taisyklės bus taikomos automatiškai po serverio paleidimo iš naujo.
PPTP serveris
Serverio konfigūracija
Įdiekite paketą:
sudo apt install pptpd
Baigę diegti atidarykite failą „/etc/pptpd.conf“ bet kuriame teksto rengyklėje ir redaguokite taip:
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
Po to redaguokite failą „/etc/ppp/pptpd-options“. Dauguma parametrų yra nustatyti pagal numatytuosius nustatymus.
#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
Kitame etape turėsite sukurti klientų ryšių įrašą. Tarkime, kad norite pridėti vartotoją „vpvartotojas“ su slaptažodžiu "1" ir leisti jam dinamišką adresą. Atidarykite failą „/etc/ppp/chap-secrets“ ir failo pabaigoje pridėkite šią eilutę su vartotojo parametrais:
vpnuser pptpd 1 *
"pptpd" reikšmė yra paslaugos, kurią nurodėme faile, pavadinimas „pptpd-parinktys“. Vietoj „*“ galite nurodyti fiksuotą IP adresą. Rezultate failas „Slaptos paslaptys“ turėtų atrodyti taip:
Norėdami pritaikyti nustatymus, iš naujo nustatykite pptpd paslaugą ir pridėkite ją prie automatinio įkėlimo.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Serverio konfigūracija baigta.
Kliento konfigūracija
Atviras „Pradėti“ - "Nustatymai" - Tinklas ir internetas - „VPN“ ir spauskite „Pridėti VPN ryšį“
Atsidariusiame lange įveskite ryšio parametrus ir spustelėkite "Sutaupyti"
- VPN teikėjas: „Windows (įmontuotas)“
- Ryšio pavadinimas: „vpn_connect“ (galite pasirinkti bet kokį pavadinimą)
- Serverio pavadinimas arba adresas: (nurodyti išorinį serverio IP adresą)
- VPN tipas: „Auto“
- Prisijungimo informacijos tipas: „Vartotojo vardas ir slaptažodis“
- Vartotojo vardas: vpvartotojas (vardas nurodytas „chap-secrets“ faile serveryje)
- Slaptažodis: 1 (kaip „chap-secrets“ faile)
Išsaugoję parametrus, lange pamatysite naują VPN ryšį. Kairiuoju pelės mygtuku spustelėkite ryšį ir pasirinkite "Connect". Sėkmingo ryšio atveju pamatysite „Prisijungta“ statusu.
Parinktyse rasite vidinius kliento ir serverio adresus. Laukas „Paskirties adresas“ rodo išorinio serverio adresą.
Prisijungus, vidinis serverio IP adresas, 172.16.0.1 mūsų atveju tampa numatytuoju visų siunčiamų paketų šliuzu.
Naudodami bet kurią internetinę paslaugą galite įsitikinti, kad išorinis kompiuterio IP adresas dabar yra toks pat kaip jūsų VPN serverio IP adresas.
OpenVPN serveris
Serverio konfigūracija
Padidinkime dabartinio vartotojo teisių lygį, nes tolesnei konfigūracijai mums reikės root prieigos.
sudo -s
Įdiekite visus reikiamus paketus. Mums reikės „Easy-RSA“ paketą šifravimo raktams valdyti.
apt install openvpn easy-rsa iptables-persistent
Leisti įeinančius ryšius 1194 prievadu per UDP protokolą ir taikyti „iptables“ taisykles.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Sukurkite katalogą su nukopijuotais failais iš „Easy-RSA“ paketo ir eikite į jį.
make-cadir ~/openvpn
cd ~/openvpn
Sukurti viešojo rakto infrastruktūrą (PKI).
./easyrsa init-pki
Sugeneruokite sertifikatų tarnybos (CA) šakninį sertifikatą.
./easyrsa build-ca
Kūrimo proceso metu jūsų bus paprašyta nustatyti ir atsiminti slaptažodį. Taip pat turėsite atsakyti į klausimus ir įvesti informaciją apie rakto savininką. Galite palikti numatytąsias reikšmes, pateiktas laužtiniuose skliaustuose. Paspauskite „Enter“, kad užbaigtumėte įvestį.
Sugeneruokite privatųjį raktą ir sertifikato užklausą. Kaip argumentą nurodykite bet kokį pavadinimą; mūsų atveju tai yra „vpn-server“.
./easyrsa gen-req vpn-server nopass
Palikite „Common Name“ reikšmę kaip numatytąją.
Pasirašykite sugeneruotą serverio sertifikato užklausą.
./easyrsa sign-req server vpn-server
Šiame žingsnyje atsakykite „taip“, kad patvirtintumėte parašą, tada įveskite slaptažodį, kuris buvo sukurtas generuojant šakninį sertifikatą.
Generuoti Difio-Helmano parametrus. Šie parametrai naudojami saugiam raktų mainams tarp serverio ir kliento.
./easyrsa gen-dh
Visi reikalingi failai sugeneruoti. Sukurkime „keys“ aplanką „OpenVPN“ darbo kataloge, kuriame bus saugomi raktai, ir nukopijuokime ten sukurtus failus.
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 konfigūravimas naudojant iptables taisyklės. Sukurkite failą pavadinimu nat ir atidarykite jį redagavimui programoje /etc/openvpn/ katalogas.
#!/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
Išsaugokite failą ir paverskite jį vykdomuoju.
sudo chmod 755 /etc/openvpn/nat
Nukopijuokite serverio konfigūracijos šabloną.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Atidarykite failą „/etc/openvpn/server.conf“ norėdami redaguoti, įsitikinkite, kad jame yra šios eilutės, ir redaguokite jas, jei reikia:
#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
Įgalinti srauto peradresavimą serveryje.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Paleiskite „OpenVPN“, kad pritaikytumėte konfigūraciją.
systemctl restart openvpn@server
Serverio konfigūracija baigta!
Kliento konfigūracija
Eikite į oficialią „OpenVPN“ svetainę “https://openvpn.net“, eikite į „BENDRUOMENĖ“ skyrius.
Slinkite žemyn ir atsisiųskite savo operacinės sistemos versijos diegimo programą. Mūsų atveju tai yra „Windows 11 ARM64“.
Įdiekite programą palikdami visus parametrus pagal numatytuosius nustatymus.
Kitame etape turėsite paruošti šį failą serveryje ir perkelti juos į kliento kompiuterį:
- viešieji ir privatieji raktai;
- sertifikavimo centro rakto kopija;
- konfigūracijos failo šabloną.
Prisijunkite prie serverio, padidinkite teises ir eikite į mūsų sukurtą katalogą "~/openvpn".
sudo -s
cd ~/openvpn
Sukurkite klientui privatųjį raktą ir sertifikato užklausą. Kaip argumentą nurodykite bet kokį pavadinimą; mūsų atveju tai yra „klientas1“.
./easyrsa gen-req client1 nopass
Įveskite slaptažodį, kurį nustatėme kurdami šakninį sertifikatą, ir palikite „Common Name“ reikšmę kaip numatytąją.
Pasirašykite sugeneruotą kliento sertifikato užklausą.
./easyrsa sign-req client client1
Šiame žingsnyje atsakykite „taip“, kad patvirtintumėte parašą, tada įveskite slaptažodį, kuris buvo sukurtas generuojant šakninį sertifikatą.
Patogumui sukurkime aplanką pavadinimu „client1“ pagrindiniame kataloge ir nukopijuokime į jį visus failus, skirtus perkelti į kliento kompiuterį.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Nukopijuokite kliento konfigūracijos failo šabloną į tą patį katalogą. Pakeiskite failo plėtinį į ".ovpn" kopijuojant.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Pakeiskite katalogo ir visų failų savininką "~/client1/" kad būtų galima juos paskirstyti klientui. Pagaminkime "Mihailas" mūsų atveju savininkas.
chown -R mihail:mihail ~/client1
Eikite į kliento kompiuterį ir nukopijuokite turinį "~/client1/" aplanką. Tai galite padaryti su pagalba "PSCP" naudingumas, kuris tinka Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Galite saugoti pagrindinius failus „ca.crt“, „client1.crt“, „klientas1.raktas“ kur tik nori. Mūsų atveju jie yra šiame aplanke „c:\Program Files\OpenVPN\keys“, ir mes sureguliuojame konfigūracijos failą „client.ovpn“ į „c:\Program Files\OpenVPN\config“ katalogas.
Dabar pereikime prie kliento konfigūravimo. Atidarykite failą „c:\Program Files\OpenVPN\config\client.ovpn“ teksto rengyklėje ir redaguokite šias eilutes:
#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
Likusią dalį palikite nepaliestą.
Išsaugokite failą ir paleiskite kliento programą „OpenVPN GUI“.
Dešiniuoju pelės mygtuku spustelėkite programos piktogramą užduočių juostoje ir pasirinkite "Connect". Jei ryšys sėkmingas, piktograma taps žalia.
Naudokite bet kurią internetinę paslaugą, kad įsitikintumėte, jog jūsų viešasis IP adresas pasikeitė ir dabar yra toks pat kaip serverio IP adresas.