Mūsdienās VPN tehnoloģija kļūst arvien populārāka. Parastie lietotāji izmanto VPN, lai droši piekļūtu internetam. Tas arī palīdz apiet lokāli bloķētas vietnes un pakalpojumus un aizsargāt pret iespējamu ārēju ļaunprātīgu rīcību. Kad veidojat savienojumu ar VPN serveri, starp datoru un serveri ir drošs tunelis, kuram nevar piekļūt no ārpuses, tāpēc VPN serveris kļūst par jūsu interneta piekļuves punktu. Ir daudz VPN pakalpojumu, gan bezmaksas, gan maksas, taču, ja tie kāda iemesla dēļ jums nedarbojas, vienmēr varat konfigurēt savu VPN serveri.
Lai palaistu savu VPN, jums vajadzētu nomāt VPS serveri . Ir dažādas programmatūras, kas ļauj izveidot VPN savienojumu. Tās atšķiras viena no otras ar atbalstītajām operētājsistēmām un izmantotajiem algoritmiem. Mēs aplūkosim divas neatkarīgas pieejas VPN servera iestatīšanai. Pirmā ir balstīta uz PPTP protokolu, kas jau tiek uzskatīts par novecojušu un nedrošu, taču to ir ļoti viegli konfigurēt. Otra izmanto modernu un drošu programmatūru OpenVPN, taču tai ir nepieciešama trešās puses klienta lietojumprogrammas instalēšana un rūpīgāks iestatīšanas process.
Mūsu testa vidē mēs izmantosim virtuālo serveri, ko nodrošina Ubuntu Server 18.04. Ugunsmūris serverī tiks izslēgts, jo tā konfigurācija ir pelnījusi atsevišķu rakstu. Mēs aprakstīsim iestatīšanas procesu operētājsistēmā Windows 10.
Sagatavošana
Neatkarīgi no tā, kuru VPN serveri izvēlaties, piekļuve internetam tiks iestatīta ar integrētiem operētājsistēmas līdzekļiem. Lai atvērtu piekļuvi internetam, izmantojot ārējo pakalpojumu interfeisu, ir jāatļauj pakešu pārsūtīšana starp saskarnēm un jākonfigurē tīkla adreses tulkošana.
Lai ieslēgtu pakešu pāradresāciju, atveriet failu “/etc/sysctl.conf” un nomainiet parametra “net.ipv4.ip_forward” vērtību uz 1.
Lai lietotu izmaiņas, nepārstartējot datoru, palaidiet komandu
sudo sysctl -p /etc/sysctl.conf
Tīkla adreses tulkošana tiek konfigurēta, izmantojot iptables . Vispirms pārbaudiet ārējā tīkla saskarnes nosaukumu, palaižot komandu “ip link show” — tā būs nepieciešama nākamajā solī. Mūsu nosaukums ir “ens3”.
Iespējojiet tīkla adrešu tulkošanu savā ārējā saskarnē visiem lokālā tīkla mezgliem.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Ņemiet vērā, ka jums ir jānorāda sava servera saskarnes īstais nosaukums, tas var atšķirties no mūsu.
Pēc noklusējuma visi iptables izveidotie noteikumi tiek atiestatīti pēc servera restartēšanas. Lai to novērstu, izmantojiet utilītu “iptables-persistent” . Instalējiet šo paketi:
sudo apt install iptables-persistent
Instalēšanas procesa laikā kādā brīdī jūs redzēsiet konfigurācijas logu, kurā tiks ieteikts saglabāt pašreizējos iptables noteikumus. Tā kā noteikumi jau ir definēti, vienkārši apstipriniet un divreiz noklikšķiniet uz “Jā” . Tagad noteikumi tiks piemēroti automātiski pēc servera restartēšanas.
PPTP serveris
Servera konfigurācija
Instalējiet paketi:
sudo apt install pptpd
Pēc instalēšanas pabeigšanas jebkurā teksta redaktorā atveriet failu “/etc/pptpd.conf” un rediģējiet to šādi:
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
Pēc tam rediģējiet failu “/etc/ppp/pptpd-options” . Lielākā daļa parametru ir iestatīti pēc noklusējuma.
#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
Nākamajā posmā jums būs jāizveido ieraksts klientu savienojumiem. Pieņemsim, ka vēlaties pievienot lietotāju “vpnuser” ar paroli “1” un atļaut viņam dinamisko adresēšanu. Atveriet failu “/etc/ppp/chap-secrets” un faila beigās pievienojiet šādu rindu ar lietotāja parametriem:
vpnuser pptpd 1 *
Vērtība “pptpd” ir pakalpojuma nosaukums, ko norādījām failā “pptpd-options” . Simbola “*” vietā var norādīt fiksētu IP adresi. Rezultātā failam “chap-secrets” vajadzētu izskatīties šādi:
Lai lietotu iestatījumus, atiestatiet pptpd pakalpojumu un pievienojiet to automātiskajai ielādei.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Servera konfigurēšana ir pabeigta.
Klienta konfigurācija
Atveriet “Sākt” - “Iestatījumi” - “Tīkls un internets” - “VPN” un noklikšķiniet uz “Pievienot VPN savienojumu”.
Atvērtajā logā ievadiet savienojuma parametrus un noklikšķiniet uz “Saglabāt”.
- VPN nodrošinātājs: “Windows (iebūvēts)”
- Savienojuma nosaukums: “vpn_connect” (varat izvēlēties jebkuru nosaukumu)
- Servera nosaukums vai adrese: (norādiet servera ārējo IP adresi)
- VPN veids: “Automātiski”
- Pierakstīšanās informācijas veids: “Lietotājvārds un parole”
- Lietotāja vārds: vplietotājs (nosaukums norādīts servera failā "chap-secrets")
- parole: 1 (kā "chap-secrets" failā)
Pēc parametru saglabāšanas logā redzēsiet jauno VPN savienojumu. Ar peles kreiso taustiņu noklikšķiniet uz savienojuma un atlasiet “Savienot” . Veiksmīga savienojuma gadījumā redzēsiet statusu “Savienots” .
Opcijās atradīsiet klienta un servera iekšējās adreses. Laukā “Galamērķa adrese” tiek parādīta ārējā servera adrese.
Pēc savienojuma izveides servera iekšējā IP adrese, mūsu gadījumā 172.16.0.1 , kļūst par noklusējuma vārteju visām izejošajām paketēm.
Izmantojot jebkuru tiešsaistes pakalpojumu, varat pārliecināties, vai datora ārējā IP adrese tagad ir tāda pati kā jūsu VPN servera IP adrese.
OpenVPN serveris
Servera konfigurācija
Veicināsim pašreizējā lietotāja atļauju līmeni, jo turpmākai konfigurācijai mums būs nepieciešama root piekļuve.
sudo -s
Instalējiet visus nepieciešamos paketes. Šifrēšanas atslēgu pārvaldībai mums būs nepieciešams “Easy-RSA” pakete.
apt install openvpn easy-rsa iptables-persistent
Atļaut ienākošos savienojumus 1194. portā, izmantojot UDP protokolu, un lietot iptables noteikumus.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Izveidojiet direktoriju ar kopētiem failiem no pakotnes “Easy-RSA” un atrodiet to.
make-cadir ~/openvpn
cd ~/openvpn
Ģenerēt publiskās atslēgas infrastruktūru (PKI).
./easyrsa init-pki
Ģenerējiet sertifikātu iestādes (CA) saknes sertifikātu.
./easyrsa build-ca
Izveides procesa laikā jums tiks piedāvāts iestatīt un atcerēties paroli. Jums būs jāatbild arī uz jautājumiem un jāievada informācija par atslēgas īpašnieku. Kvadrātveida iekavās varat atstāt noklusējuma vērtības. Lai pabeigtu ievadi, nospiediet taustiņu "Enter".
Ģenerējiet privāto atslēgu un sertifikāta pieprasījumu. Kā argumentu norādiet patvaļīgu nosaukumu; mūsu gadījumā tas ir “vpn-server”.
./easyrsa gen-req vpn-server nopass
Atstājiet kopējā nosaukuma vērtību kā noklusējuma vērtību.
Parakstiet ģenerēto servera sertifikāta pieprasījumu.
./easyrsa sign-req server vpn-server
Šajā solī atbildiet ar "jā", lai apstiprinātu parakstu, pēc tam ievadiet paroli, kas tika izveidota saknes sertifikāta ģenerēšanas laikā.
Ģenerēt Difī-Helmana parametrus. Šie parametri tiek izmantoti drošai atslēgu apmaiņai starp serveri un klientu.
./easyrsa gen-dh
Visi nepieciešamie faili ir ģenerēti. Izveidosim mapi "atslēgas" OpenVPN darba direktorijā, lai saglabātu atslēgas un kopētu tur izveidotos 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
Konfigurējiet NAT, izmantojot iptables noteikumi. Izveidojiet failu ar nosaukumu nat un atveriet to rediģēšanai sadaļā /etc/openvpn/ katalogs.
#!/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
Saglabājiet failu un padariet to izpildāmu.
sudo chmod 755 /etc/openvpn/nat
Kopējiet servera konfigurācijas veidni.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Atveriet rediģēšanai failu “/etc/openvpn/server.conf” , pārliecinieties, vai tajā ir šādas rindas, un rediģējiet tās, ja nepieciešams:
#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
Iespējot datplūsmas pāradresāciju serverī.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Lai lietotu konfigurāciju, palaidiet OpenVPN.
systemctl restart openvpn@server
Servera konfigurēšana ir pabeigta!
Klienta konfigurācija
Dodieties uz oficiālo OpenVPN vietni “ https://openvpn.net ”, dodieties uz sadaļu “KOPIENA”.
Ritiniet uz leju un lejupielādējiet savas operētājsistēmas versijas instalētāju. Mūsu gadījumā tā ir Windows 11 ARM64.
Instalējiet lietojumprogrammu, pēc noklusējuma atstājot visus parametrus.
Nākamajā posmā jums būs jāsagatavo šāds fails serverī un jāpārsūta uz klienta datoru:
- publiskās un privātās atslēgas;
- sertifikācijas centra atslēgas kopija;
- konfigurācijas faila veidne.
Izveidojiet savienojumu ar serveri, paaugstiniet privilēģijas un dodieties uz mūsu izveidoto direktoriju. "~/openvpn".
sudo -s
cd ~/openvpn
Ģenerējiet klientam privāto atslēgu un sertifikāta pieprasījumu. Kā argumentu norādiet patvaļīgu nosaukumu; mūsu gadījumā tas ir “client1”.
./easyrsa gen-req client1 nopass
Ievadiet paroli, ko iestatījām, veidojot saknes sertifikātu, un atstājiet kopējā nosaukuma vērtību kā noklusējuma vērtību.
Parakstiet ģenerēto klienta sertifikāta pieprasījumu.
./easyrsa sign-req client client1
Šajā solī atbildiet ar "jā", lai apstiprinātu parakstu, pēc tam ievadiet paroli, kas tika izveidota saknes sertifikāta ģenerēšanas laikā.
Ērtības labad mājas direktorijā izveidosim mapi ar nosaukumu “client1” un kopēsim tajā visus failus, kas paredzēti pārsūtīšanai uz klienta datoru.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Kopējiet klienta konfigurācijas faila veidni tajā pašā direktorijā. Kopēšanas laikā nomainiet faila paplašinājumu uz “.ovpn” .
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Mainiet direktorijas un visu failu “~/client1/” īpašnieku , lai tos varētu izplatīt klientam. Mūsu gadījumā padarīsim īpašnieku “mihail” .
chown -R mihail:mihail ~/client1
Dodieties uz klienta datoru un nokopējiet mapes “~/client1/” saturu . To var izdarīt, izmantojot Putty komplektācijā iekļauto utilītu “PSCP” .
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Atslēgu failus “ca.crt” , “client1.crt” , “client1.key” var glabāt, kur vien vēlaties. Mūsu gadījumā tie atrodas šajā mapē “c:\Program Files\OpenVPN\keys” , un konfigurācijas failu “client.ovpn” mēs ievietojam direktorijā “c:\Program Files\OpenVPN\config”.
Tagad ķersimies pie klienta konfigurēšanas. Atveriet failu “c:\Program Files\OpenVPN\config\client.ovpn” teksta redaktorā un rediģējiet šādas rindas:
#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
Pārējo atstājiet neskartu.
Saglabājiet failu un palaidiet klienta lietojumprogrammu “OpenVPN GUI”.
Ar peles labo pogu noklikšķiniet uz lietotnes ikonas uzdevumjoslā un izvēlieties “Savienot” . Ja savienojums ir veiksmīgs, ikona kļūs zaļa.
Izmantojiet jebkuru tiešsaistes pakalpojumu, lai pārliecinātos, ka jūsu publiskā IP adrese ir mainījusies un tagad ir tāda pati kā servera IP adrese.