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 propran VPN-on, vi devus lui VPS-servilon . Ekzistas diversaj programoj, kiuj permesas krei VPN-konekton. Ili diferencas unu de la alia laŭ la subtenataj operaciumoj kaj uzataj algoritmoj. Ni rigardos du sendependajn metodojn por starigi VPN-servilon. La unua baziĝas sur la protokolo PPTP, kiu jam estas konsiderata malaktuala kaj ne sekura, sed estas vere facile agordebla. La alia uzas modernan kaj sekuran programaron OpenVPN, sed postulas la instaladon de triaparta klienta aplikaĵo kaj pli detalan 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ĵan plusendadon, malfermu la dosieron “/etc/sysctl.conf” kaj ŝanĝu la parametron “net.ipv4.ip_forward” al 1.
Por apliki ŝanĝojn sen rekomenci la komputilon, rulu la komandon
sudo sysctl -p /etc/sysctl.conf
Reta adreso-traduko estas agordita per iptables . Unue, kontrolu la nomon de via ekstera retinterfaco ekzekutante la komandon "ip link show" - 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 restarigitaj post la rekomenco de la servilo. Por malebligi tion, uzu la ilon "iptables-persistent" . Instalu la jenan pakaĵeton:
sudo apt install iptables-persistent
Iam dum la instala procezo, vi vidos agordan fenestron, kiu proponos al vi konservi la nunajn iptables-regulojn. Ĉar la reguloj jam estas difinitaj, simple konfirmu kaj alklaku "Jes" dufoje. Ĉar nun la reguloj estos aplikitaj aŭtomate post la rekomenco de la servilo.
PPTP-servilo
Servila agordo
Instalu la pakaĵon:
sudo apt install pptpd
Post la fino de la instalado, 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-options” . La plej multaj 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 supozu, ke vi volas aldoni uzanton "vpnuser" kun pasvorto "1" kaj permesi dinamikan adresadon por li. Malfermu la dosieron "/etc/ppp/chap-secrets" kaj aldonu la jenan linion kun la parametroj de la uzanto ĉe la fino de la dosiero:
vpnuser pptpd 1 *
La valoro de “pptpd” estas la nomo de la servo, kiun ni specifis en la dosiero “pptpd-options” . Anstataŭ “*” vi povas specifi fiksan IP-adreson. Rezulte, la dosiero “chap-secrets” devus aspekti jene:
Por apliki la agordojn, restarigu la pptpd- servon kaj aldonu ĝin al aŭtomata ŝargado.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Servila agordo estas finita.
Klienta agordo
Malfermu "Komenco" - "Agordoj" - "Reto kaj Interreto" - "VPN" kaj alklaku "Aldoni VPN-konekton".
Enigu la konekto-parametrojn en la malfermita fenestro kaj alklaku "Konservi".
- 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 la parametroj, vi vidos la novan VPN-konekton en la fenestro. Maldekstre alklaku la konekton kaj elektu "Konekti" . Kaze de sukcesa konekto, vi vidos la staton "Konektita".
En la Agordoj, vi trovos internajn adresojn de la kliento kaj la servilo. La kampo "Celadreso" montras la eksteran serviladreson.
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 pakaĵetoj.
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ĵetojn. Ni bezonos la pakaĵeton "Easy-RSA" por administri ĉifroŝ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 jenajn 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 sekcio “KOMUNUMO”.
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 de la klienta agordodosiero al la sama dosierujo. Ŝanĝu la dosierfinaĵon 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 “~/client1/” por povi distribui ilin al la kliento. Ni faru “mihail” la posedanton en nia kazo.
chown -R mihail:mihail ~/client1
Iru al la klienta komputilo kaj kopiu la enhavon de la dosierujo “~/client1/” . Vi povas fari tion per la ilo “PSCP” , kiu venas kun Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Vi povas konservi ŝlosildosierojn “ca.crt” , “client1.crt” , “client1.key” kie ajn vi volas. En nia kazo, ili estas en ĉi tiu dosierujo “c:\Program Files\OpenVPN\keys” , kaj ni movas la agordodosieron “client.ovpn” en la dosierujon “c:\Program Files\OpenVPN\config”.
Nun ni komencu agordi la klienton. Malfermu la dosieron “c:\Program Files\OpenVPN\config\client.ovpn” en tekstredaktilo kaj redaktu la jenajn 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 aplikaĵan ikonon en la taskobreto kaj elektu "Konekti" . Se la konekto sukcesas, la ikono verdiĝos.
Uzu ajnan retan servon por certigi, ke via publika IP-adreso ŝanĝiĝis kaj nun samas kiel la IP-adreso de la servilo.