Dandanes je tehnologija VPN vse bolj priljubljena. Navadni uporabniki uporabljajo VPN za varen dostop do interneta. Pomaga tudi obiti lokalno blokirana spletna mesta in storitve ter zaščititi pred morebitnim zunanjim zlonamernim vedenjem. Ko se povezujete s strežnikom VPN, je med vašim računalnikom in strežnikom varen tunel, do katerega ni mogoče dostopati od zunaj, zato strežnik VPN postane vaša internetna dostopna točka. Na voljo je veliko storitev VPN, tako brezplačnih kot plačljivih, a če vam iz nekega razloga ne delujejo, lahko vedno konfigurirate svoj strežnik VPN.
Za zagon lastnega VPN-ja morate najeti VPS strežnik . Obstaja različna programska oprema, ki vam omogoča ustvarjanje VPN povezave. Razlikujejo se po podprtih operacijskih sistemih in uporabljenih algoritmih. Ogledali si bomo dva neodvisna pristopa za nastavitev VPN strežnika. Prvi temelji na protokolu PPTP, ki že velja za zastarelega in nevarnega, vendar ga je zelo enostavno konfigurirati. Drugi uporablja sodobno in varno programsko opremo OpenVPN, vendar zahteva namestitev odjemalske aplikacije drugega ponudnika in temeljitejši postopek nastavitve.
V našem testnem okolju bomo uporabili virtualni strežnik, ki ga poganja Ubuntu Server 18.04. Na strežniku bo izklopljen požarni zid, ker si njegova konfiguracija zasluži poseben članek. Opisali bomo postopek namestitve v sistemu Windows 10.
Priprava
Ne glede na to, kateri strežnik VPN izberete, bo dostop do interneta nastavljen z integriranimi sredstvi operacijskega sistema. Če želite odpreti dostop do interneta prek vmesnika zunanje storitve, morate omogočiti posredovanje paketov med vmesnikoma in konfigurirati prevajanje omrežnega naslova.
Za vklop posredovanja paketov odprite datoteko »/etc/sysctl.conf« in spremenite vrednost parametra »net.ipv4.ip_forward« v 1.
Če želite uveljaviti spremembe brez ponovnega zagona računalnika, zaženite ukaz
sudo sysctl -p /etc/sysctl.conf
Prevajanje omrežnih naslovov se konfigurira s pomočjo iptables . Najprej preverite ime vašega zunanjega omrežnega vmesnika z ukazom »ip link show« – potrebovali ga boste v naslednjem koraku. Naše ime je »ens3«.
Omogočite prevod omrežnih naslovov na svojem zunanjem vmesniku za vsa vozlišča lokalnega omrežja.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Upoštevajte, da morate določiti pravo ime vmesnika vašega strežnika, lahko se razlikuje od našega.
Privzeto se vsa pravila, ki jih ustvari iptables, po ponovnem zagonu strežnika ponastavijo. Da bi to preprečili, uporabite pripomoček »iptables-persistent« . Namestite naslednji paket:
sudo apt install iptables-persistent
Med namestitvijo se bo na neki točki prikazalo okno za konfiguracijo, ki vam bo predlagalo shranjevanje trenutnih pravil iptables. Ker so pravila že definirana, jih le potrdite in dvakrat kliknite »Da« . Pravila se bodo zdaj po ponovnem zagonu strežnika samodejno uporabila.
PPTP strežnik
Konfiguracija strežnika
Namestite paket:
sudo apt install pptpd
Po končani namestitvi odprite datoteko »/etc/pptpd.conf« v poljubnem urejevalniku besedil in jo uredite takole:
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
Nato uredite datoteko »/etc/ppp/pptpd-options« . Večina parametrov je privzeto nastavljenih.
#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
Na naslednji stopnji boste morali ustvariti zapis za odjemalske povezave. Recimo, da želite dodati uporabnika »vpnuser« z geslom »1« in mu dovoliti dinamično naslavljanje. Odprite datoteko »/etc/ppp/chap-secrets« in na konec datoteke dodajte naslednjo vrstico s parametri uporabnika:
vpnuser pptpd 1 *
Vrednost »pptpd« je ime storitve, ki smo jo določili v datoteki »pptpd-options« . Namesto »*« lahko določite fiksni IP-naslov. Rezultat bi morala biti datoteka »chap-secrets« :
Če želite uporabiti nastavitve, ponastavite storitev pptpd in jo dodajte v samodejno nalaganje.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Konfiguracija strežnika je končana.
Konfiguracija odjemalca
Odprite »Start« - »Nastavitve« - »Omrežje in internet« - »VPN« in kliknite »Dodaj povezavo VPN«.
V odprto okno vnesite parametre povezave in kliknite »Shrani«.
- Ponudnik VPN: »Windows (vgrajeno)«
- Ime povezave: “vpn_connect” (izberete lahko poljubno ime)
- Ime ali naslov strežnika: (navedite zunanji naslov IP strežnika)
- Vrsta VPN: "Samodejno"
- Vrsta podatkov za prijavo: “Uporabniško ime in geslo”
- Uporabniško ime: vpnuser (ime je navedeno v datoteki »chap-secrets« na strežniku)
- geslo: 1 (kot v datoteki »chap-secrets«)
Po shranjevanju parametrov boste v oknu videli novo VPN povezavo. Kliknite povezavo z levo tipko miške in izberite »Poveži se« . V primeru uspešne povezave boste videli stanje »Povezano« .
V Možnostih boste našli interne naslove odjemalca in strežnika. Polje »Ciljni naslov« prikazuje naslov zunanjega strežnika.
Ko je vzpostavljena povezava, notranji IP-naslov strežnika, v našem primeru 172.16.0.1 , postane privzeti prehod za vse odhodne pakete.
S katero koli spletno storitvijo se lahko prepričate, da je zunanji naslov IP računalnika zdaj enak naslovu IP vašega strežnika VPN.
Strežnik OpenVPN
Konfiguracija strežnika
Povečajmo raven dovoljenj trenutnega uporabnika, ker bomo za nadaljnjo konfiguracijo potrebovali korenski dostop.
sudo -s
Namestite vse potrebne pakete. Za upravljanje šifrirnih ključev bomo potrebovali paket »Easy-RSA« .
apt install openvpn easy-rsa iptables-persistent
Dovoli dohodne povezave na vratih 1194 prek protokola UDP in uporabi pravila iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Ustvarite imenik s kopiranimi datotekami iz paketa »Easy-RSA« in se pomaknite vanj.
make-cadir ~/openvpn
cd ~/openvpn
Ustvari infrastrukturo javnih ključev (PKI).
./easyrsa init-pki
Ustvarite korensko potrdilo overitelja potrdil (CA).
./easyrsa build-ca
Med postopkom ustvarjanja boste pozvani, da nastavite in si zapomnite geslo. Prav tako boste morali odgovoriti na vprašanja in vnesti podatke o lastniku ključa. Privzete vrednosti, navedene v oglatih oklepajih, lahko pustite privzete. Za dokončanje vnosa pritisnite »Enter«.
Ustvarite zasebni ključ in zahtevo za potrdilo. Kot argument navedite poljubno ime; v našem primeru je to »vpn-strežnik«.
./easyrsa gen-req vpn-server nopass
Vrednost Common Name pustite privzeto.
Podpišite ustvarjeno zahtevo za strežniško potrdilo.
./easyrsa sign-req server vpn-server
V tem koraku odgovorite z »da«, da potrdite podpis, nato pa vnesite geslo, ki je bilo ustvarjeno med ustvarjanjem korenskega potrdila.
Generirajte Diffie-Hellmanove parametre. Ti parametri se uporabljajo za varno izmenjavo ključev med strežnikom in odjemalcem.
./easyrsa gen-dh
Vse potrebne datoteke so bile ustvarjene. V delovnem imeniku OpenVPN ustvarimo mapo »keys«, kamor bomo shranili ključe, in tja kopirali ustvarjene datoteke.
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
Konfigurirajte NAT z uporabo iptables pravila. Ustvarite datoteko z imenom nat in ga odprite za urejanje v /etc/openvpn/ imenik.
#!/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
Shranite datoteko in jo naredite izvedljivo.
sudo chmod 755 /etc/openvpn/nat
Kopirajte predlogo konfiguracije strežnika.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Odprite datoteko »/etc/openvpn/server.conf« za urejanje, preverite, ali vsebuje naslednje vrstice, in jih po potrebi uredite:
#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
Omogočite posredovanje prometa na strežniku.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Zaženite OpenVPN, da uporabite konfiguracijo.
systemctl restart openvpn@server
Konfiguracija strežnika je končana!
Konfiguracija odjemalca
Pojdite na uradno spletno stran OpenVPN » https://openvpn.net « in pojdite v razdelek »SKUPNOST«.
Pomaknite se navzdol in prenesite namestitveni program za vašo različico operacijskega sistema. V našem primeru je to Windows 11 ARM64.
Namestite aplikacijo in pustite vse parametre privzete.
Na naslednji stopnji boste morali na strežniku pripraviti naslednjo datoteko in jo prenesti v odjemalski računalnik:
- javni in zasebni ključi;
- kopija ključa certifikacijskega centra;
- predloga konfiguracijske datoteke.
Povežite se s strežnikom, povišajte privilegije in se pomaknite do ustvarjenega imenika. "~/openvpn".
sudo -s
cd ~/openvpn
Za odjemalca ustvarite zasebni ključ in zahtevo za potrdilo. Kot argument navedite poljubno ime; v našem primeru je to »odjemalec1«.
./easyrsa gen-req client1 nopass
Vnesite geslo, ki smo ga nastavili pri ustvarjanju korenskega potrdila, in pustite vrednost Common Name privzeto.
Podpišite ustvarjeno zahtevo za odjemalsko potrdilo.
./easyrsa sign-req client client1
V tem koraku odgovorite z »da«, da potrdite podpis, nato pa vnesite geslo, ki je bilo ustvarjeno med ustvarjanjem korenskega potrdila.
Za lažjo uporabo ustvarimo v domačem imeniku mapo z imenom 'client1' in vanjo kopirajmo vse datoteke, namenjene prenosu na odjemalski računalnik.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Kopirajte predlogo konfiguracijske datoteke odjemalca v isti imenik. Med kopiranjem spremenite končnico datoteke v ».ovpn« .
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Spremenite lastnika imenika in vseh datotek »~/client1/« , da jih boste lahko distribuirali odjemalcu. V našem primeru naj bo lastnik »mihail« .
chown -R mihail:mihail ~/client1
Pojdite na odjemalski računalnik in kopirajte vsebino mape »~/client1/« . To lahko storite s pomočjo pripomočka »PSCP« , ki je del programa Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Ključne datoteke »ca.crt« , »client1.crt« in »client1.key« lahko shranite kamor koli želite. V našem primeru so v mapi »c:\Program Files\OpenVPN\keys« , konfiguracijsko datoteko »client.ovpn« pa shranimo v imenik »c:\Program Files\OpenVPN\config«.
Zdaj pa se lotimo konfiguracije odjemalca. V urejevalniku besedil odprite datoteko »c:\Program Files\OpenVPN\config\client.ovpn« in uredite naslednje vrstice:
#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
Ostalo pustite nedotaknjeno.
Shranite datoteko in zaženite odjemalsko aplikacijo »OpenVPN GUI«.
Z desno miškino tipko kliknite ikono aplikacije v opravilni vrstici in izberite »Poveži se« . Če je povezava uspešna, se ikona obarva zeleno.
S katero koli spletno storitvijo se prepričajte, da se je vaš javni naslov IP spremenil in je zdaj enak naslovu IP strežnika.