Nuntempe, VPN-teknologio fariĝas pli populara. Ordinaraj uzantoj uzas VPN por sekure aliri la Interreton. Ĝi ankaŭ helpas ĉirkaŭi loke blokitajn retejojn kaj servojn kaj protekti kontraŭ ebla ekstera malica konduto. Kiam vi konektas al VPN-servilo, estas sekura tunelo inter via komputilo kaj la servilo, kiu ne estas alirebla de ekstere, do la VPN-servilo fariĝas via interreta alirpunkto. Estas multaj VPN-servoj tie, kaj senpagaj kaj pagitaj, sed se ili ial ne funkcias por vi, vi ĉiam povas agordi vian propran VPN-servilon.
Por funkciigi vian VPN, vi devus luu VPS-servilon. Estas malsama programaro, kiu ebligas vin krei VPN-konekton. Ĝi diferencas unu de la alia per operaciumoj subtenataj kaj algoritmoj uzataj. Ni rigardos du sendependajn alirojn por agordi VPN-servilon. La unua baziĝas sur PPTP-protokolo, kiu jam estas konsiderata malnoviĝinta kaj ne sekura sed vere facile agordebla. La alia uzas modernan kaj sekuran programaron OpenVPN sed postulas instali triapartan klientan aplikaĵon kaj pli profundan agordan procezon.
En nia testa medio, ni uzos virtualan servilon funkciigitan de Ubuntu Server 18.04. Fajroŝirmilo estos malŝaltita sur la servilo ĉar ĝia agordo meritas apartan artikolon. Ni priskribos la agordan procezon en Windows 10.
preparado
Ne gravas, kiun VPN-servilon vi elektas, la interreta aliro estos agordita per integraj rimedoj de la operaciumo. Por malfermi retaliron per ekstera serva interfaco, vi devas permesi pakaĵeton inter la interfacoj kaj agordi retan tradukadon.
Por ŝalti pakaĵeton malfermu la dosieron "/etc/sysctl.conf" kaj ŝanĝi "net.ipv4.ip_forward" parametro valoro en 1.
Por apliki ŝanĝojn sen rekomenci la komputilon, rulu la komandon
sudo sysctl -p /etc/sysctl.conf
Retadrestradukado estas agordita per iptables. Unue, kontrolu la nomon de via ekstera reto-interfaco rulanta la komandon "ip-ligmontrilo" - vi bezonos ĝin ĉe la sekva paŝo. Nia nomo estas "ens3".
Ebligu tradukadon de retadresoj ĉe via ekstera interfaco por ĉiuj lokaj retaj nodoj.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Notu, ke vi devas specifi la realan nomon de la interfaco de via servilo, ĝi povas esti malsama ol la nia.
Defaŭlte, ĉiuj reguloj kreitaj de iptables estas rekomencigitaj post la rekomenco de la servilo. Por malhelpi tion, uzu "iptables-persistenta" utileco. Instalu la sekvan pakaĵon:
sudo apt install iptables-persistent
Iam dum la instala procezo, vi vidos agordan fenestron, kiu sugestos, ke vi konservu nunajn regulojn de iptables. Ĉar la reguloj jam estas difinitaj, simple konfirmu kaj klaku "Jes" dufoje. Ekde nun la reguloj estos aplikataj aŭtomate post la rekomenco de la servilo.
PPTP-servilo
Servila agordo
Instalu la pakaĵon:
sudo apt install pptpd
Post kiam la instalado finiĝas, malfermu la dosieron "/etc/pptpd.conf" en iu ajn tekstredaktilo kaj redaktu ĝin jene:
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
Post tio, redaktu la dosieron "/etc/ppp/pptpd-opcioj". La plej multaj el la parametroj estas agorditaj defaŭlte.
#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
En la sekva etapo, vi devos krei rekordon por klientaj konektoj. Ni diru, ke vi volas aldoni uzanton "vpnuzer" kun pasvorto "1" kaj permesi dinamikan alparoladon por li. Malfermu la dosieron "/etc/ppp/chap-secrets" kaj aldonu la sekvan linion kun la parametroj de la uzanto ĉe la fino de la dosiero:
vpnuser pptpd 1 *
"pptpd" valoro estas la nomo de la servo, kiun ni specifis en la dosiero "pptpd-opcioj". Anstataŭ "*" vi povas specifi fiksan IP-adreson. En la rezulto, la dosiero "ĉapo-sekretoj" devus aspekti jene:
Por apliki la agordojn restarigi la pptpd servo kaj aldonu ĝin al aŭtomata ŝarĝo.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Servila agordo estas finita.
Klienta agordo
malfermita "Komenco" - "Agordoj" - Reto & Interreto - "VPN" kaj klaku "Aldonu VPN-konekton"
Enigu la konektajn parametrojn en la malfermita fenestro kaj alklaku "Savi"
- VPN-provizanto: "Vindozo (enkonstruita)"
- Konektnomo: "vpn_connect" (vi povas elekti ajnan nomon)
- Servilonomo aŭ adreso: (specifu la eksteran IP-adreson de la servilo)
- VPN-tipo: "Aŭtomata"
- Tipo de ensaluta informo: "Uzantnomo kaj pasvorto"
- Uzanta nomo: vpnuser (nomo specifita en la dosiero "chap-secrets" sur la servilo)
- Pasvorto: 1 (kiel en la dosiero "chap-secrets")
Post konservado de parametroj, vi vidos la novan VPN-konekton en la fenestro. Maldekstre alklaku la konekton kaj elektu "Konekti". En la kazo de sukcesa konekto, vi vidos "Konektis" statuso.
En la Opcioj, vi trovos internajn adresojn de la kliento kaj la servilo. Kampo "Cela adreso" montras la eksteran servilan adreson.
Kiam konektita, la interna IP-adreso de la servilo, 172.16.0.1 en nia kazo, fariĝas la defaŭlta enirejo por ĉiuj elirantaj pakoj.
Uzante ajnan interretan servon, vi povas certigi, ke la ekstera IP-adreso de la komputilo nun samas kiel la IP-adreso de via VPN-servilo.
Servilo OpenVPN
Servila agordo
Ni antaŭenigu la nivelon de permesoj de la nuna uzanto ĉar por nia plua agordo ni bezonos radikan aliron.
sudo -s
Instalu ĉiujn necesajn pakaĵojn. Ni bezonos "Facila-RSA" pako por administri ĉifrajn ŝlosilojn.
apt install openvpn easy-rsa iptables-persistent
Permesu alvenantajn konektojn ĉe pordo 1194 per UDP-protokolo kaj apliku iptables-regulojn.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Kreu dosierujon kun kopiitaj dosieroj el la pakaĵo "Easy-RSA" kaj navigu en ĝin.
make-cadir ~/openvpn
cd ~/openvpn
Generi Publikan Ŝlosilan Infrastrukturon (PKI).
./easyrsa init-pki
Generu la radikan atestilon de la Atestila Aŭtoritato (CA).
./easyrsa build-ca
Dum la kreoprocezo, oni petos vin agordi kaj memori pasvorton. Vi ankaŭ devos respondi demandojn kaj enigi informojn pri la ŝlosilposedanto. Vi povas lasi la defaŭltajn valorojn en kvadrataj krampoj. Premu "Enter" por finpretigi la enigon.
Generu privatan ŝlosilon kaj atestilpeton. Kiel argumenton, specifu arbitran nomon; en nia kazo, ĝi estas "vpn-servilo".
./easyrsa gen-req vpn-server nopass
Lasu la valoron de Komuna Nomo kiel defaŭltan.
Subskribu la generitan peton pri servila atestilo.
./easyrsa sign-req server vpn-server
Ĉe ĉi tiu paŝo, respondu "jes" por konfirmi la subskribon, poste enigu la pasvorton kreitan dum la generado de la radika atestilo.
Generu Diffie-Hellman-parametrojn. Ĉi tiuj parametroj estas uzataj por sekura ŝlosilinterŝanĝo inter la servilo kaj la kliento.
./easyrsa gen-dh
Ĉiuj necesaj dosieroj estas generitaj. Ni kreu dosierujon "ŝlosiloj" en la labordosierujo de OpenVPN por konservi la ŝlosilojn kaj kopii la kreitajn dosierojn tien.
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
Agordu NAT-on per iptables reguloj. Kreu dosieron nomitan nat kaj malfermu ĝin por redaktado en la /etc/openvpn/ dosierujo.
#!/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
Konservu la dosieron kaj faru ĝin efektivigebla.
sudo chmod 755 /etc/openvpn/nat
Kopiu la ŝablonon de la servila agordo.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Malfermu la dosieron "/etc/openvpn/server.conf" por redaktado, certigu, ke ĝi enhavas la sekvajn liniojn, kaj redaktu ilin se necese:
#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
Ebligi trafikplusendadon sur la servilo.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Lanĉu OpenVPN por apliki la agordon.
systemctl restart openvpn@server
La agordo de la servilo estas finita!
Klienta agordo
Iru al la oficiala retejo de OpenVPN "https://openvpn.net”, iru al la "Komunumo" sekcio.
Rulumu malsupren kaj elŝutu la instalilon por via operaciumversio. En nia kazo, ĝi estas Vindozo 11 ARM64.
Instalu la aplikaĵon lasante ĉiujn parametrojn defaŭlte.
En la sekva etapo vi devos prepari la sekvan dosieron sur la servilo kaj transdoni ilin al la klienta komputilo:
- publikaj kaj privataj ŝlosiloj;
- kopio de la atesta centroŝlosilo;
- agorda dosierŝablono.
Konektiĝu al la servilo, altigu privilegiojn, kaj navigu al nia kreita dosierujo "~/openvpn".
sudo -s
cd ~/openvpn
Generu privatan ŝlosilon kaj atestilpeton por la kliento. Kiel argumenton, specifu arbitran nomon; en nia kazo, ĝi estas "kliento1".
./easyrsa gen-req client1 nopass
Enigu la pasvorton, kiun ni agordis kreante la radikan atestilon, kaj lasu la valoron "Komuna Nomo" kiel defaŭltan.
Subskribu la generitan peton pri klienta atestilo.
./easyrsa sign-req client client1
Ĉe ĉi tiu paŝo, respondu "jes" por konfirmi la subskribon, poste enigu la pasvorton kreitan dum la generado de la radika atestilo.
Por oportuno, ni kreu dosierujon nomatan 'kliento1' en la hejma dosierujo kaj kopiu ĉiujn dosierojn destinitajn por translokigo al la klienta komputilo en ĝin.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Kopiu la ŝablonon pri agordo de la kliento al la sama dosierujo. Ŝanĝu la dosieran etendon al ".ovpn" dum kopiado.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Ŝanĝu la posedanton de la dosierujo kaj ĉiuj dosieroj "~/kliento1/" por povi distribui ilin al la kliento. Ni faru "mihail" la posedanto en nia kazo.
chown -R mihail:mihail ~/client1
Iru al la klienta komputilo kaj kopiu la enhavon de la "~/kliento1/" dosierujo. Vi povas fari tion helpe de "PSCP" utileco, tio iras kun Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Vi povas konservi ŝlosilajn dosierojn "ca.crt", "kliento1.crt", "kliento1.ŝlosilo" kie ajn vi volas. En nia kazo, ili estas en ĉi tiu dosierujo "c:\Programdosieroj\OpenVPN\ŝlosiloj", kaj ni modifas la agordan dosieron "kliento.ovpn" en la "c:\Programdosieroj\OpenVPN\config" dosierujo.
Nun ni iru al agordo de la kliento. Malfermu la dosieron "c:\Programdosieroj\OpenVPN\config\client.ovpn" en tekstredaktilo kaj redaktu la sekvajn liniojn:
#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
Lasu la reston netuŝita.
Konservu la dosieron kaj lanĉu la klientan aplikaĵon "OpenVPN GUI".
Dekstre alklaku la app-ikonon en la taskobreto kaj elektu "Konekti". Se la konekto sukcesas, la ikono fariĝos verda.
Uzu ajnan retan servon por certigi, ke via publika IP-adreso ŝanĝiĝis kaj nun samas kiel la IP-adreso de la servilo.