Hautdesdaags gëtt VPN Technologie méi populär. Gewéinlech Benotzer benotzen VPN fir sécher op den Internet ze kommen. Et hëlleft och lokal blockéiert Websäiten a Servicer ëmzegoen a géint méiglech extern béiswëlleg Verhalen ze schützen. Wann Dir mat engem VPN Server verbënnt, gëtt et e sécheren Tunnel tëscht Ärem Computer an dem Server deen net vu baussen zougänglech ass, sou datt de VPN Server Ären Internetzougangspunkt gëtt. Et gi vill VPN Servicer dobaussen, souwuel gratis a bezuelte, awer wa se aus irgendege Grënn net fir Iech schaffen, kënnt Dir ëmmer Ären eegene VPN Server konfiguréieren.
Fir Ären oun VPN ze lafen, sollt Dir VPS Server lounen. Et gëtt verschidde Software déi Iech erlaabt eng VPN Verbindung ze kreéieren. Et ënnerscheet sech vuneneen duerch Betribssystemer ënnerstëtzt an Algorithmen benotzt. Mir kucken op zwou onofhängeg Approche fir e VPN Server opzestellen. Deen éischten baséiert op PPTP Protokoll dee scho als obsolet ugesi gëtt an net sécher ass awer wierklech einfach ze konfiguréieren. Deen aneren benotzt modern a sécher Software OpenVPN awer erfuerdert d'Installatioun vun enger Drëtt Partei Client Applikatioun an e méi grëndleche Setup Prozess.
An eisem Testëmfeld benotze mir e virtuelle Server ugedriwwen vum Ubuntu Server 18.04. Eng Firewall gëtt um Server ausgeschalt well seng Konfiguratioun en separaten Artikel verdéngt. Mir beschreiwen de Setupprozess op Windows 10.
Virbereedung
Egal wéi ee VPN-Server Dir wielt, den Internetzougang gëtt mat integréierte Mëttele vum Betribssystem ageriicht. Fir den Internetzougang duerch en externen Service-Interface opzemaachen, musst Dir Paket-Forwarding tëscht den Interfaces erlaben an d'Netzadresseiwwersetzung konfiguréieren.
Fir Paket Forwarding opzemaachen, öffnen d'Datei "/etc/sysctl.conf" an änneren "net.ipv4.ip_forward" Parameter Wäert an 1.
Fir Ännerungen z'applizéieren ouni de Computer nei ze starten, fuert de Kommando aus
sudo sysctl -p /etc/sysctl.conf
Reseau Adress Iwwersetzung ass vun der heescht konfiguréiert Iteef. Als éischt, kontrolléiert den Numm vun Ärem externen Netzwierkinterface deen de Kommando leeft "IP Link weisen" - Dir wäert et am nächste Schrëtt brauchen. Eisen Numm ass "ens3".
Aktivéiert Netzwierkadress Iwwersetzung op Ärem externen Interface fir all lokal Netzwierkknäppchen.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Bedenkt datt Dir de richtegen Numm vun Ärem Server Interface uginn musst, et kann anescht sinn wéi eis.
Par défaut ginn all Reegelen, déi vun iptables erstallt ginn, zréckgesat nodeems de Server nei starten. Fir dat ze verhënneren, benotzt "iptables-persistent" Utility. Installéiert de folgende Paket:
sudo apt install iptables-persistent
Irgendwann während dem Installatiounsprozess gesitt Dir eng Konfiguratiounsfenster déi Iech virschloen datt Dir aktuell iptables Regelen späichert. Well d'Regele scho definéiert sinn, just confirméieren a klickt "Jo" zweemol. Zënter elo ginn d'Regele automatesch applizéiert nodeems de Server nei starten.
PPTP Server
Serverkonfiguratioun
Installéiert de Pak:
sudo apt install pptpd
Nodeems d'Installatioun eriwwer ass, öffnen d'Datei "/etc/pptpd.conf" an all Texteditor an editéiert et esou:
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
Duerno ännert d'Datei "/etc/ppp/pptpd-optiounen". Déi meescht vun de Parameteren sinn par défaut ageriicht.
#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
Op der nächster Stuf musst Dir e Rekord fir Clientverbindungen erstellen. Loosst eis soen datt Dir e Benotzer wëllt addéieren "vpnuser" mat Passwuert "1" an erlaben dynamesch Adress fir him. De Fichier opmaachen "/etc/ppp/chap-secrets" a füügt déi folgend Zeil mat de Benotzerparameter um Enn vun der Datei un:
vpnuser pptpd 1 *
"pptpd" Wäert ass den Numm vum Service dee mir an der Datei uginn "pptpd-Optiounen". Amplaz vun "*" Dir kënnt eng fix IP Adress uginn. Als Resultat, de Fichier "Kapp Geheimnisser" soll esou ausgesinn:
Fir d'Astellungen z'applizéieren, reset de pptpd Service a füügt et un d'Autoloading.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Server Konfiguratioun ass fäerdeg.
Client Configuratioun
Open “Start” - "Parameteren" - Netzwierk & Internet - "VPN" a klickt op "Füügt eng VPN Verbindung"
Gitt d'Verbindungsparameter an der Fënster opgemaach a klickt "Späicheren"
- VPN Provider: "Windows (built-in)"
- Verbindungsnumm: "vpn_connect" (Dir kënnt all Numm wielen)
- Servernumm oder Adress: (spezifizéieren déi extern IP Adress vum Server)
- VPN Typ: "Auto"
- Typ vun Umeldungsinformatioun: "Benotzernumm a Passwuert"
- Benotzernumm: vp Benotzer (Numm spezifizéiert an der "chap-secrets" Datei um Server)
- Passwuert: 1 (wéi an der "chap-secrets" Datei)
Nodeems Dir Parameteren gespäichert hutt, gesitt Dir déi nei VPN Verbindung an der Fënster. Lénks klickt op d'Verbindung a wielt "Connect". Am Fall vun enger erfollegräicher Verbindung gesitt Dir "Verbonnen" Status.
An den Optiounen fannt Dir intern Adresse vum Client an dem Server. Feld "Destinatioun Adress" weist déi extern Serveradress un.
Wann ugeschloss ass, ass d'intern IP Adress vum Server, 172.16.0.1 an eisem Fall gëtt de Standardpaart fir all erausginn Pakete.
Mat all Online Service kënnt Dir sécher sinn datt déi extern IP Adress vum Computer elo d'selwecht ass wéi d'IP Adress vun Ärem VPN Server.
OpenVPN Server
Serverkonfiguratioun
Loosst eis den Permissiounsniveau vum aktuelle Benotzer förderen, well fir eis weider Konfiguratioun brauche mir Root-Zougang.
sudo -s
Installéiert all déi néideg Pakete. Mir wäerten brauchen "Easy-RSA" Paket fir Verschlësselungsschlësselen ze managen.
apt install openvpn easy-rsa iptables-persistent
Erlaabt ukommende Verbindungen um Port 1194 iwwer den UDP-Protokoll a gëllt fir iptables-Reegelen.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Erstellt en Dossier mat kopéierte Dateien aus dem "Easy-RSA" Pak a navigéiert eran.
make-cadir ~/openvpn
cd ~/openvpn
Generéiert eng ëffentlech Schlësselinfrastruktur (PKI).
./easyrsa init-pki
Generéiert de Rootzertifikat vun der Zertifizéierungsautoritéit (CA).
./easyrsa build-ca
Wärend dem Erstellungsprozess gitt Dir opgefuerdert, e Passwuert anzestellen an Iech drun ze erënneren. Dir musst och Froen beäntweren an Informatiounen iwwer de Schlësselbesëtzer aginn. Dir kënnt d'Standardwäerter, déi an de Klammeren uginn sinn, loossen. Dréckt op "Enter" fir d'Input ofzeschléissen.
Generéiert e private Schlëssel an eng Zertifikatsufro. Als Argument gitt en arbiträren Numm un; an eisem Fall ass et "vpn-server".
./easyrsa gen-req vpn-server nopass
Loosst de Wäert "Common Name" als Standard.
Ënnerschreift déi generéiert Ufro fir e Serverzertifikat.
./easyrsa sign-req server vpn-server
An dësem Schrëtt, äntwert mat "jo" fir d'Ënnerschrëft ze bestätegen, an da gitt d'Passwuert an, dat während der Generatioun vum Root-Zertifikat erstallt gouf.
Generéiert Diffie-Hellman-Parameteren. Dës Parameter gi fir e séchere Schlësselaustausch tëscht dem Server an dem Client benotzt.
./easyrsa gen-dh
All néideg Dateien goufen generéiert. Loosst eis en "keys"-Ordner am OpenVPN-Aarbechtsverzeichnis erstellen, fir d'Schlësselen ze späicheren, an déi erstallt Dateien dohinner kopéieren.
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
NAT konfiguréieren mat iptables Reegelen. Erstellt eng Datei mam Numm nat an et opmaachen fir ze beaarbechten an der /etc/openvpn/ Dossier.
#!/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
Späichert d'Datei a maacht se ausféierbar.
sudo chmod 755 /etc/openvpn/nat
Kopéiert d'Serverkonfiguratiounsvirlag.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Datei opmaachen "/etc/openvpn/server.conf" fir z'änneren, gitt sécher datt et déi folgend Zeilen enthält, a ännert se wann néideg:
#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
Aktivéiert d'Weiderleitung vum Traffic um Server.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Start OpenVPN fir d'Konfiguratioun anzesetzen.
systemctl restart openvpn@server
D'Serverkonfiguratioun ass fäerdeg!
Client Configuratioun
Gitt op déi offiziell Websäit vun OpenVPN "https://openvpn.net", gitt op d' "COMMUNITY" Rubrik.
Scrollt no ënnen an luet den Installateur fir Är Betribssystemversioun erof. An eisem Fall ass et Windows 11 ARM64.
Installéiert d'Applikatioun andeems Dir all Parameteren als Standard hannerloosst.
Op der nächster Stuf musst Dir déi folgend Datei um Server virbereeden an se op de Client Computer transferéieren:
- ëffentlech a privat Schlësselen;
- Kopie vun der Zertifizéierung Zentrum Schlëssel;
- config Datei Schabloun.
Verbannt Iech mam Server, erhéicht d'Rechter a navigéiert an eist erstallt Verzeichnis "~/openvpn".
sudo -s
cd ~/openvpn
Generéiert e private Schlëssel an eng Zertifikatsufro fir de Client. Als Argument gitt en arbiträren Numm un; an eisem Fall ass et "client1".
./easyrsa gen-req client1 nopass
Gitt d'Passwuert an, dat mir beim Erstelle vum Root-Zertifikat festgeluecht hunn, a loosst de Wäert "Common Name" als Standard.
Ënnerschreift déi generéiert Clientzertifikatsufro.
./easyrsa sign-req client client1
An dësem Schrëtt, äntwert mat "jo" fir d'Ënnerschrëft ze bestätegen, an da gitt d'Passwuert an, dat während der Generatioun vum Root-Zertifikat erstallt gouf.
Fir d'Komfort erstellen mir en Dossier mam Numm 'client1' am Home-Verzeichnis a kopéiere all Dateien, déi fir den Transfer op de Clientcomputer geduecht sinn, dran.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Kopéiert de Client Configuratiounsdatei Schabloun an dee selwechte Verzeechnes. Ännert d'Dateierweiterung op ".ovpn" während der Kopie.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Ännert de Besëtzer vum Verzeichnis an all d'Dateien "~/client1/" fir se un de Client ze verdeelen. Loosst eis maachen "mihail" de Besëtzer an eisem Fall.
chown -R mihail:mihail ~/client1
Gitt op de Client Computer a kopéiert den Inhalt vun der "~/client1/" Dossier. Dir kënnt dat mat der Hëllef vun "PSCP" Utility, dat geet mat Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Dir kënnt Schlësseldateien späicheren "ca.crt", "client1.crt", "client1.key" wou Dir wëllt. An eisem Fall sinn se an dësem Dossier "c:\Programmdateien\OpenVPN\keys", a mir Modus d'Configuratiounsdatei "client.ovpn" an d ' "c:\Programme\OpenVPN\config" Dossier.
Loosst eis elo de Client konfiguréieren. De Fichier opmaachen "c:\Programme\OpenVPN\config\client.ovpn" an engem Texteditor an ännert déi folgend Zeilen:
#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
Loosst de Rescht onberéiert.
Späichert d'Datei a lancéiert d'Clientapplikatioun "OpenVPN GUI".
Riets-klickt op d'App Ikon an der Taskbar a wielt "Connect". Wann d'Verbindung erfollegräich ass, gëtt d'Ikon gréng.
Benotzt all Online Service fir sécherzestellen datt Är ëffentlech IP Adress geännert huet an elo d'selwecht ass wéi d'IP Adress vum Server.