Tsjintwurdich wurdt VPN-technology populêrder. Gewoane brûkers brûke VPN om feilich tagong te krijen ta it ynternet. It helpt ek om lokaal blokkearre websiden en tsjinsten om te kommen en te beskermjen tsjin mooglik eksterne kweade gedrach. As jo ferbine mei in VPN-tsjinner, is d'r in feilige tunnel tusken jo kompjûter en de server dy't net fan bûten tagonklik wurde kin, sadat de VPN-tsjinner jo ynternet tagongspunt wurdt. D'r binne d'r in protte VPN-tsjinsten, sawol fergees as betelle, mar as se om ien of oare reden net foar jo wurkje, kinne jo jo eigen VPN-tsjinner altyd ynstelle.
Om jo oun VPN út te fieren, moatte jo hiere VPS tsjinner. D'r is ferskate software wêrmei jo in VPN-ferbining kinne meitsje. It ferskilt fan elkoar troch bestjoeringssystemen stipe en algoritmen brûkt. Wy sille twa ûnôfhinklike oanpakken besjen om in VPN-tsjinner yn te stellen. De earste is basearre op PPTP-protokol dat al wurdt beskôge as ferâldere en net feilich, mar is echt maklik te konfigurearjen. De oare brûkt moderne en feilige software OpenVPN, mar fereasket it ynstallearjen fan in kliïntapplikaasje fan tredden en in mear yngeande opsetproses.
Yn ús testomjouwing sille wy in firtuele server brûke oandreaun troch Ubuntu Server 18.04. In brânmuorre sil wurde útskeakele op de tsjinner omdat syn konfiguraasje fertsjinnet in apart artikel. Wy sille it opsetproses beskriuwe Windows 10.
Tarieding
Makket net út hokker VPN-tsjinner jo kieze, de ynternettagong sil ynsteld wurde troch yntegreare middels fan it bestjoeringssysteem. Om ynternettagong te iepenjen fia in eksterne tsjinstynterface moatte jo pakketferstjoering tastean tusken de ynterfaces en de oersetting fan netwurkadres konfigurearje.
Om pakket trochstjoere yn te skeakeljen, iepenje de triem "/etc/sysctl.conf" en feroarje "net.ipv4.ip_forward" parameter wearde yn 1.
Om wizigingen oan te passen sûnder de kompjûter opnij te begjinnen, fier it kommando út
sudo sysctl -p /etc/sysctl.conf
Netwurk adres oersetting wurdt ynsteld troch middel fan iptables. Kontrolearje earst de namme fan jo eksterne netwurkynterface dy't it kommando útfiert "ip link sjen litte" - jo sille it nedich wêze by de folgjende stap. Us namme is "ens3".
Skeakelje netwurkadresoersetting yn op jo eksterne ynterface foar alle lokale netwurkknooppunten.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Tink derom dat jo de echte namme fan 'e ynterface fan jo server moatte opjaan, it kin oars wêze as ús.
Standert wurde alle regels makke troch iptables weromset nei de tsjinner opnij starte. Om dat te foarkommen, brûke "iptables-persistent" nut. Ynstallearje it folgjende pakket:
sudo apt install iptables-persistent
Op in stuit tidens it ynstallaasjeproses sille jo in konfiguraasjefinster sjen dat jo suggerearje dat jo hjoeddeistige iptables-regels bewarje. Sûnt de regels binne al definiearre, gewoan befêstigje en klik "Ja" twaris. Sûnt no wurde de regels automatysk tapast neidat de server opnij starte.
PPTP -tsjinner
Tsjinner konfiguraasje
Ynstallearje it pakket:
sudo apt install pptpd
Nei de ynstallaasje einiget, iepenje it bestân "/etc/pptpd.conf" yn elke tekstbewurker en bewurkje it sa:
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
Dêrnei, bewurkje de triem "/etc/ppp/pptpd-opsjes". De measte parameters binne standert ynsteld.
#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
Op it folgjende poadium moatte jo in rekord meitsje foar klantferbiningen. Litte wy sizze dat jo in brûker taheakje wolle "vpnuser" mei wachtwurd "1" en tastean dynamyske adressering foar him. Iepenje de triem "/etc/ppp/chap-secrets" en foegje de folgjende rigel ta mei de parameters fan de brûker oan it ein fan it bestân:
vpnuser pptpd 1 *
"pptpd" wearde is de namme fan 'e tsjinst dy't wy spesifisearre hawwe yn it bestân "pptpd-opsjes". Yn plak fan "*" jo kinne in fêst IP-adres opjaan. Yn it resultaat, de triem "Kap-geheimen" moat der sa útsjen:
Om de ynstellings ta te passen, reset de pptpd tsjinst en foegje it ta oan autoloading.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Tsjinner konfiguraasje is klear.
Client konfiguraasje
Iepen "Start" - "Ynstellings" - Netwurk & Ynternet - "VPN" en klikke "Foegje in VPN-ferbining ta"
Fier de ferbiningsparameters yn yn it iepene finster en klikje "Rêde"
- VPN-oanbieder: "Windows (ynboud)"
- Ferbiningsnamme: "vpn_connect" (jo kinne elke namme kieze)
- Tsjinnernamme of adres: (spesifisearje it eksterne IP-adres fan 'e tsjinner)
- VPN-type: "Auto"
- Soart oanmeldynfo: "Brûkersnamme en wachtwurd"
- Brûkersnamme: vpnuser (namme spesifisearre yn it bestân "chap-secrets" op 'e tsjinner)
- Wachtwurd: 1 (lykas yn it "chap-secrets"-bestân)
Nei it bewarjen fan parameters sille jo de nije VPN-ferbining yn it finster sjen. Klikje mei lofts op de ferbining en selektearje "Ferbine". Yn it gefal fan in suksesfolle ferbining sille jo sjen "Ferbûn" status.
Yn 'e Opsjes sille jo ynterne adressen fan' e kliïnt en de tsjinner fine. Fjild "Bestimmingsadres" toant it eksterne tsjinneradres.
As ferbûn, it ynterne IP-adres fan de tsjinner, 172.16.0.1 yn ús gefal, wurdt de standert poarte foar alle útgeande pakketten.
Mei elke online tsjinst kinne jo derfoar soargje dat it eksterne IP-adres fan 'e kompjûter no itselde is as it IP-adres fan jo VPN-tsjinner.
OpenVPN-tsjinner
Tsjinner konfiguraasje
Litte wy it tastimmingsnivo fan 'e hjoeddeistige brûker befoarderje, om't wy foar ús fierdere konfiguraasje root-tagong nedich binne.
sudo -s
Ynstallearje alle nedige pakketten. Wy sille nedich "Easy-RSA" pakket om fersiferingskaaien te behearjen.
apt install openvpn easy-rsa iptables-persistent
Lit ynkommende ferbiningen ta op poarte 1194 fia UDP-protokol en tapasse iptables-regels.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Meitsje in map mei kopiearre bestannen fan it pakket "Easy-RSA" en navigearje deryn.
make-cadir ~/openvpn
cd ~/openvpn
Generearje in iepenbiere kaai-ynfrastruktuer (PKI).
./easyrsa init-pki
Generearje it root-sertifikaat fan 'e sertifikaatautoriteit (CA).
./easyrsa build-ca
Tidens it oanmeitsjen wurdt jo frege om in wachtwurd yn te stellen en te ûnthâlden. Jo moatte ek fragen beantwurdzje en ynformaasje ynfiere oer de kaai-eigner. Jo kinne de standertwearden tusken fjouwerkante heakjes litte. Druk op "Enter" om de ynfier te foltôgjen.
Generearje in priveekaai en in sertifikaatfersyk. Jou as argumint in willekeurige namme op; yn ús gefal is it "vpn-server".
./easyrsa gen-req vpn-server nopass
Lit de wearde foar Algemiene namme as standert.
Undertekenje it generearre fersyk foar serversertifikaat.
./easyrsa sign-req server vpn-server
Antwurdzje by dizze stap "ja" om de hântekening te befêstigjen, en fier dan it wachtwurd yn dat makke is tidens it generearjen fan it rootsertifikaat.
Generearje Diffie-Hellman-parameters. Dizze parameters wurde brûkt foar feilige kaai-útwikseling tusken de server en de kliïnt.
./easyrsa gen-dh
Alle nedige bestannen binne generearre. Litte wy in map mei "keys" oanmeitsje yn 'e OpenVPN-wurkmap om de kaaien op te slaan en de oanmakke bestannen dêrhinne te kopiearjen.
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 konfigurearje mei iptables regels. Meitsje in bestân mei de namme nat en iepenje it foar bewurking yn 'e /etc/openvpn/ directory.
#!/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
Bewarje it bestân en meitsje it útfierber.
sudo chmod 755 /etc/openvpn/nat
Kopiearje it sjabloan foar de serverkonfiguraasje.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Iepenje it bestân "/etc/openvpn/server.conf" foar it bewurkjen, soargje derfoar dat it de folgjende rigels befettet, en bewurkje se as it nedich is:
#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
Skeakelje ferkears trochstjoering op 'e tsjinner yn.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Start OpenVPN om de konfiguraasje ta te passen.
systemctl restart openvpn@server
De tsjinner konfiguraasje is klear!
Client konfiguraasje
Gean nei de offisjele webside fan OpenVPN "https://openvpn.net", gean nei de "MISJE" ôfdieling.
Rôlje nei ûnderen en download it ynstallaasjeprogramma foar jo bestjoeringssysteemferzje. Yn ús gefal is it Windows 11 ARM64.
Ynstallearje de applikaasje troch alle parameters standert te litten.
Op it folgjende poadium moatte jo it folgjende bestân op 'e tsjinner tariede en oerdrage nei de kliïntkompjûter:
- iepenbiere en partikuliere kaaien;
- kopy fan de kaai foar sertifisearring sintrum;
- konfiguraasjetriem sjabloan.
Ferbine mei de tsjinner, ferheegje privileezjes en navigearje nei ús oanmakke map "~/openvpn".
sudo -s
cd ~/openvpn
Generearje in priveekaai en in sertifikaatoanfraach foar de kliïnt. Jou as argumint in willekeurige namme op; yn ús gefal is it "client1".
./easyrsa gen-req client1 nopass
Fier it wachtwurd yn dat wy ynsteld hawwe by it oanmeitsjen fan it root-sertifikaat en lit de wearde "Algemiene namme" as standert.
Undertekenje it generearre kliïntsertifikaatfersyk.
./easyrsa sign-req client client1
Antwurdzje by dizze stap "ja" om de hântekening te befêstigjen, en fier dan it wachtwurd yn dat makke is tidens it generearjen fan it rootsertifikaat.
Litte wy foar it gemak in map oanmeitsje mei de namme 'client1' yn 'e thúsmap en alle bestannen dy't bedoeld binne foar oerdracht nei de kliïntkompjûter dêrhinne kopiearje.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Kopiearje it client konfiguraasjetriem sjabloan nei deselde map. Feroarje de triem taheaksel nei ".ovpn" wylst it kopiearjen.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Feroarje de eigner fan 'e map en alle bestannen "~/client1/" om se te fersprieden nei de klant. Litte wy meitsje "mihail" de eigner yn ús gefal.
chown -R mihail:mihail ~/client1
Gean nei de kliïnt kompjûter en kopiearje de ynhâld fan de "~/client1/" folder. Jo kinne dwaan dat mei help fan "PSCP" nut, dat giet mei Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Jo kinne kaai triemmen opslaan "ca.crt", "client1.crt", "client1.key" wêr't jo wolle. Yn ús gefal binne se yn dizze map "c:\Program Files\OpenVPN\keys", en wy modus de konfiguraasjetriem "client.ovpn" yn de "c:\Program Files\OpenVPN\config" directory.
Litte wy no gean nei it konfigurearjen fan de kliïnt. Iepenje de triem "c:\Program Files\OpenVPN\config\client.ovpn" yn in tekstbewurker en bewurkje de folgjende rigels:
#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
Lit de rest ûnoantaaste.
Bewarje it bestân en start de kliïntapplikaasje "OpenVPN GUI".
Rjochts-klikke op it app-ikoantsje yn 'e taakbalke en kies "Ferbine". As de ferbining suksesfol is, sil it ikoan grien wurde.
Brûk elke online tsjinst om te soargjen dat jo iepenbiere IP-adres is feroare en no itselde is as it IP-adres fan de tsjinner.