Deesdae word VPN-tegnologie meer gewild. Gewone gebruikers gebruik VPN om veilig toegang tot die internet te kry. Dit help ook om plaaslik geblokkeerde webwerwe en dienste te omseil en te beskerm teen moontlike eksterne kwaadwillige gedrag. Wanneer jy aan 'n VPN-bediener koppel, is daar 'n veilige tonnel tussen jou rekenaar en die bediener wat nie van buite af toeganklik is nie, dus word die VPN-bediener jou internettoegangspunt. Daar is baie VPN-dienste daar buite, beide gratis en betaalde, maar as hulle om een of ander rede nie vir jou werk nie, kan jy altyd jou eie VPN-bediener opstel.
Om u VPN te bestuur, moet u huur VPS-bediener. Daar is verskillende sagteware waarmee u 'n VPN-verbinding kan skep. Dit verskil van mekaar deur bedryfstelsels wat ondersteun word en algoritmes wat gebruik word. Ons sal kyk na twee onafhanklike benaderings om 'n VPN-bediener op te stel. Die eerste een is gebaseer op PPTP-protokol wat reeds as verouderd en nie veilig beskou word nie, maar is regtig maklik om te konfigureer. Die ander een gebruik moderne en veilige sagteware OpenVPN, maar vereis die installering van 'n derdeparty-kliënttoepassing en 'n meer deeglike opstelproses.
In ons toetsomgewing gaan ons 'n virtuele bediener gebruik wat deur Ubuntu Server 18.04 aangedryf word. 'n Firewall gaan op die bediener afgeskakel word omdat die opstelling daarvan 'n aparte artikel verdien. Ons sal die opstelproses op Windows 10 beskryf.
Voorbereiding
Maak nie saak watter VPN-bediener u kies nie, die internettoegang sal opgestel word deur 'n geïntegreerde middel van die bedryfstelsel. Om internettoegang deur 'n eksterne dienskoppelvlak oop te maak, moet u pakketaanstuur tussen die koppelvlakke toelaat en netwerkadresvertaling opstel.
Maak die lêer oop om pakkie-aanstuur aan te skakel "/etc/sysctl.conf" en verander "net.ipv4.ip_forward" parameter waarde in 1.
Om veranderinge toe te pas sonder om die rekenaar te herlaai, voer die opdrag uit
sudo sysctl -p /etc/sysctl.conf
Netwerkadres vertaling word gekonfigureer deur middel van iptables. Kontroleer eers die naam van u eksterne netwerkkoppelvlak wat die opdrag uitvoer "ip skakel wys" - jy sal dit by die volgende stap nodig hê. Ons naam is "ens3".
Aktiveer netwerkadres vertaling by jou eksterne koppelvlak vir alle plaaslike netwerk nodusse.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Let daarop dat u die regte naam van u bediener se koppelvlak moet spesifiseer, dit kan verskil van ons s'n.
By verstek word alle reëls wat deur iptables geskep is, teruggestel nadat die bediener herbegin het. Om dit te voorkom, gebruik "iptables-aanhoudend" nut. Installeer die volgende pakkie:
sudo apt install iptables-persistent
Op 'n sekere punt tydens die installasieproses sal u 'n konfigurasievenster sien wat sal voorstel dat u huidige iptables-reëls stoor. Aangesien die reëls reeds gedefinieer is, bevestig net en klik "Ja" twee keer. Sedertdien sal die reëls outomaties toegepas word nadat die bediener herbegin het.
PPTP bediener
Bediener konfigurasie
Installeer die pakkie:
sudo apt install pptpd
Nadat die installasie voltooi is, maak die lêer oop "/etc/pptpd.conf" in enige teksredigeerder en wysig dit so:
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
Redigeer daarna die lêer "/etc/ppp/pptpd-opsies". Die meeste van die parameters is by verstek opgestel.
#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
In die volgende stadium sal jy 'n rekord vir kliëntverbindings moet skep. Kom ons sê jy wil 'n gebruiker byvoeg “vpgebruiker” met wagwoord "1" en laat dinamiese aanspreek vir hom toe. Maak die lêer oop "/etc/ppp/chap-secrets" en voeg die volgende reël by met die gebruiker se parameters aan die einde van die lêer:
vpnuser pptpd 1 *
"pptpd" waarde is die naam van die diens wat ons in die lêer gespesifiseer het "pptpd-opsies". In plaas van "*" jy kan 'n vaste IP-adres spesifiseer. In die resultaat, die lêer "chap-geheime" moet so lyk:
Om die instellings toe te pas, herstel die pptpd diens en voeg dit by outolaai.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Bedienerkonfigurasie is voltooi.
Kliënt konfigurasie
Opening "Begin" - “Instellings” - Netwerk en internet - “Skynprivaatnetwerk” en klik op "Voeg 'n VPN-verbinding by"
Voer die verbindingsparameters in die oopgemaakte venster in en klik "Save"
- VPN-verskaffer: "Windows (ingebou)"
- Verbindingsnaam: “vpn_connect” (jy kan enige naam kies)
- Bedienernaam of adres: (spesifiseer die eksterne IP-adres van die bediener)
- VPN-tipe: “Outo”
- Tipe aanmeldinligting: "Gebruikersnaam en wagwoord"
- Gebruikersnaam: vpgebruiker (naam gespesifiseer in die “chap-secrets”-lêer op die bediener)
- wagwoord: 1 (soos in die "chap-secrets" lêer)
Nadat u parameters gestoor het, sal u die nuwe VPN-verbinding in die venster sien. Klik met die linkermuisknop op die verbinding en kies "Verbind". In die geval van 'n suksesvolle verbinding, sal jy sien “Gekoppel” status.
In die Opsies vind u interne adresse van die kliënt en die bediener. Veld "Bestemming adres" vertoon die eksterne bedieneradres.
Wanneer gekoppel, die interne IP-adres van die bediener, 172.16.0.1 in ons geval, word die verstekpoort vir alle uitgaande pakkies.
Deur enige aanlyndiens te gebruik, kan jy seker maak dat die eksterne IP-adres van die rekenaar nou dieselfde is as jou VPN-bediener se IP-adres.
OpenVPN bediener
Bediener konfigurasie
Kom ons bevorder die toestemmingsvlak van die huidige gebruiker, want vir ons verdere konfigurasie sal ons worteltoegang benodig.
sudo -s
Installeer al die nodige pakkies. Ons sal nodig hê "Easy-RSA" pakkie om enkripsiesleutels te bestuur.
apt install openvpn easy-rsa iptables-persistent
Laat inkomende verbindings op poort 1194 toe via UDP-protokol en pas iptables-reëls toe.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Skep 'n gids met gekopieerde lêers van die "Easy-RSA"-pakket en navigeer daarin.
make-cadir ~/openvpn
cd ~/openvpn
Genereer Publieke Sleutel Infrastruktuur (PKI).
./easyrsa init-pki
Genereer die Sertifikaatowerheid (CA) wortelsertifikaat.
./easyrsa build-ca
Tydens die skepproses sal jy gevra word om 'n wagwoord te stel en te onthou. Jy sal ook vrae moet beantwoord en inligting oor die sleuteleienaar moet invoer. Jy kan die standaardwaardes tussen vierkantige hakies laat. Druk "Enter" om die invoer te finaliseer.
Genereer 'n privaat sleutel en 'n sertifikaatversoek. Spesifiseer 'n arbitrêre naam as 'n argument; in ons geval is dit "vpn-bediener".
./easyrsa gen-req vpn-server nopass
Los die algemene naam-waarde as verstek.
Teken die gegenereerde bedienersertifikaatversoek.
./easyrsa sign-req server vpn-server
In hierdie stap, antwoord "ja" om die handtekening te bevestig, en voer dan die wagwoord in wat tydens die generering van die wortelsertifikaat geskep is.
Genereer Diffie-Hellman-parameters. Hierdie parameters word gebruik vir veilige sleuteluitruiling tussen die bediener en die kliënt.
./easyrsa gen-dh
Al die nodige lêers is gegenereer. Kom ons skep 'n "keys"-lêergids in die OpenVPN-werkgids om die sleutels te stoor en die geskepte lêers daarheen te kopieer.
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
Konfigureer NAT met behulp van iptables reëls. Skep 'n lêer met die naam nat en maak dit oop vir redigering in die /etc/openvpn/ gids.
#!/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
Stoor die lêer en maak dit uitvoerbaar.
sudo chmod 755 /etc/openvpn/nat
Kopieer die bedienerkonfigurasiesjabloon.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Maak die lêer oop “/etc/openvpn/server.conf” vir redigering, maak seker dat dit die volgende reëls bevat, en wysig dit indien nodig:
#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
Aktiveer verkeersaanstuur op die bediener.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Begin OpenVPN om die konfigurasie toe te pas.
systemctl restart openvpn@server
Die bedienerkonfigurasie is voltooi!
Kliënt konfigurasie
Gaan na die amptelike webwerf van OpenVPN “https://openvpn.net”, gaan na die "GEMEENSKAP" afdeling.
Blaai af en laai die installeerder vir jou bedryfstelselweergawe af. In ons geval is dit Windows 11 ARM64.
Installeer die toepassing en laat alle parameters by verstek.
In die volgende stadium sal jy die volgende lêer op die bediener moet voorberei en dit na die kliëntrekenaar oordra:
- publieke en private sleutels;
- afskrif van die sertifiseringsentrumsleutel;
- config lêer sjabloon.
Koppel aan die bediener, verhoog voorregte en navigeer na ons geskepte gids "~/openvpn".
sudo -s
cd ~/openvpn
Genereer 'n privaat sleutel en 'n sertifikaatversoek vir die kliënt. Spesifiseer 'n arbitrêre naam as 'n argument; in ons geval is dit "kliënt1".
./easyrsa gen-req client1 nopass
Voer die wagwoord in wat ons gestel het toe ons die wortelsertifikaat geskep het en laat die algemene naam-waarde as verstek.
Teken die gegenereerde kliëntsertifikaatversoek.
./easyrsa sign-req client client1
In hierdie stap, antwoord "ja" om die handtekening te bevestig, en voer dan die wagwoord in wat tydens die generering van die wortelsertifikaat geskep is.
Vir gerief, kom ons skep 'n lêergids met die naam 'client1' in die tuisgids en kopieer alle lêers wat bedoel is vir oordrag na die kliëntrekenaar daarin.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Kopieer die kliënt konfigurasie lêer sjabloon na dieselfde gids. Verander die lêeruitbreiding na ".ovpn" terwyl jy kopieer.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Verander die eienaar van die gids en al die lêers "~/kliënt1/" om dit aan die kliënt te kan versprei. Kom ons maak "mihail" die eienaar in ons geval.
chown -R mihail:mihail ~/client1
Gaan na die kliënt rekenaar en kopieer die inhoud van die "~/kliënt1/" gids. Jy kan dit doen met behulp van "PSCP" nut, dit gaan met Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Jy kan sleutellêers stoor "ca.crt", "kliënt1.crt", "kliënt1.sleutel" waar jy wil. In ons geval is hulle in hierdie gids “c:\Program Files\OpenVPN\keys”, en ons modeer die konfigurasielêer "kliënt.ovpn" in die “c:\Program Files\OpenVPN\config” gids.
Kom ons gaan nou na die opstel van die kliënt. Maak die lêer oop "c:\Program Files\OpenVPN\config\client.ovpn" in 'n teksredigeerder en wysig die volgende reëls:
#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
Laat die res onaangeraak.
Stoor die lêer en begin die kliënttoepassing “OpenVPN GUI”.
Regskliek op die toepassingikoon in die taakbalk en kies "Verbind". As die verbinding suksesvol is, sal die ikoon groen word.
Gebruik enige aanlyn diens om seker te maak jou publieke IP-adres het verander en is nou dieselfde as die bediener se IP-adres.