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 oun VPN, jums tas jādara īrēt VPS serveri. Ir dažādas programmatūras, kas ļauj izveidot VPN savienojumu. Tas atšķiras viens no otra ar atbalstītajām operētājsistēmām un izmantotajiem algoritmiem. Mēs apskatīsim divas neatkarīgas pieejas VPN servera iestatīšanai. Pirmā ir balstīta uz PPTP protokolu, kas jau tiek uzskatīts par novecojušu un nav drošu, bet ir patiešām viegli konfigurējams. Otrā tiek izmantota mūsdienīga un droša programmatūra OpenVPN, taču ir jāinstalē trešās puses klienta lietojumprogramma un jāveic 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ārsūtīšanu, atveriet failu “/etc/sysctl.conf” un mainīt “net.ipv4.ip_forward” parametra vērtību 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 interfeisa nosaukumu, kurā tiek izpildīta komanda “IP saišu šovs” - jums tas būs vajadzīgs nākamajā darbībā. Mūsu vārds 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 “iptables-persistents” lietderība. Instalējiet šādu paketi:
sudo apt install iptables-persistent
Kādā brīdī instalēšanas procesa laikā jūs redzēsit konfigurācijas logu, kas ieteiks saglabāt pašreizējos iptables noteikumus. Tā kā noteikumi jau ir definēti, vienkārši apstipriniet un noklikšķiniet "Jā" divreiz. Kopš tagad noteikumi tiks piemēroti automātiski pēc servera restartēšanas.
PPTP serveris
Servera konfigurācija
Instalējiet paketi:
sudo apt install pptpd
Kad instalēšana ir beigusies, atveriet failu “/etc/pptpd.conf” jebkurā teksta redaktorā 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 “vplietotājs” ar paroli "1" un ļauj viņam dinamiski adresēt. Atveriet failu “/etc/ppp/chap-secrets” un faila beigās pievienojiet šādu rindiņu ar lietotāja parametriem:
vpnuser pptpd 1 *
“pptpd” vērtība ir failā norādītā pakalpojuma nosaukums “pptpd-opcijas”. Tā vietā "*" varat norādīt fiksētu IP adresi. Rezultātā fails "Kopnoslēpumi" 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
atvērts "Sākt" - "Iestatījumi" - Tīkls un internets - "VPN" un noklikšķiniet “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ēsit jauno VPN savienojumu. Ar peles kreiso taustiņu noklikšķiniet uz savienojuma un atlasiet "Connect". Veiksmīga savienojuma gadījumā jūs redzēsit "Savienots" statusu.
Sadaļā Opcijas atradīsit klienta un servera iekšējās adreses. Lauks “Galamērķa adrese” parāda ārējā servera adresi.
Kad ir izveidots savienojums, servera iekšējā IP adrese, 172.16.0.1 mūsu gadījumā 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 visas nepieciešamās paketes. Mums vajadzēs “Easy-RSA” pakete, lai pārvaldītu šifrēšanas atslēgas.
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 failu “/etc/openvpn/server.conf” lai rediģētu, 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 OpenVPN oficiālo vietni "https://openvpn.net”, dodieties uz “KOPIENA” sadaļā.
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ā. Mainiet faila paplašinājumu uz “.ovpn” kopēšanas laikā.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Mainiet direktorijas un visu failu īpašnieku “~/klients1/” lai varētu tās izplatīt klientam. Pagatavosim "mihail" īpašnieks mūsu gadījumā.
chown -R mihail:mihail ~/client1
Dodieties uz klienta datoru un kopējiet saturu “~/klients1/” mapi. To var izdarīt ar palīdzību "PSCP" lietderība, kas atbilst Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Varat saglabāt galvenos failus “ca.crt”, “client1.crt”, “klients1.atslēga” kur vien vēlies. Mūsu gadījumā tie atrodas šajā mapē “c:\Program Files\OpenVPN\keys”, un mēs pārveidojam konfigurācijas failu “client.ovpn” stāšanās “c:\Program Files\OpenVPN\config” katalogs.
Tagad ķersimies pie klienta konfigurēšanas. Atveriet failu “c:\Program Files\OpenVPN\config\client.ovpn” teksta redaktorā un rediģējiet šādas rindiņas:
#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 "Connect". 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.