Tento tutoriál vám ukáže, jak spustit svůj vlastní VPN server instalací OpenConnect VPN serveru na Debian 11 Bullseye . OpenConnect VPN server, neboli ocserv , je open-source implementace protokolu Cisco AnyConnnect VPN, který je široce používán v podnicích a na univerzitách. AnyConnect je protokol VPN založený na SSL, který umožňuje jednotlivým uživatelům připojit se ke vzdálené síti.
Proč si nastavit svůj vlastní server VPN?
- Možná jste poskytovatelem služeb VPN nebo správcem systému, což vám přísluší nastavit si vlastní server VPN.
- Nedůvěřujete zásadám poskytovatelů služeb VPN bez protokolování, takže se vydáte cestou vlastního hostitele.
- Pro implementaci zásad zabezpečení sítě můžete použít VPN. Pokud například provozujete svůj vlastní e-mailový server, můžete vyžadovat, aby se uživatelé přihlašovali pouze z IP adresy serveru VPN vytvořením seznamu povolených IP adres v bráně firewall. Váš e-mailový server je tedy odolný proti hackerským aktivitám.
- Možná vás jen zajímá, jak funguje server VPN.
Funkce OpenConnect VPN serveru
- Lehký a rychlý. V mém testu mohu sledovat videa YouTube 4K s OpenConnect VPN. YouTube je v mé zemi (Číně) blokován.
- Běží na Linuxu a většině BSD serverů.
- Kompatibilní s klientem Cisco AnyConnect
- K dispozici je klientský software OpenConnect pro Linux, macOS, Windows a OpenWRT. Pro Android a iOS můžete použít klienta Cisco AnyConnect.
- Podporuje ověřování heslem a ověřování certifikátů
- Podporuje účetnictví RADIUS.
- Snadné nastavení pro správce systému
- Snadný proces nastavení pro koncové uživatele.
- OpenConnect VPN lze nakonfigurovat tak, aby fungovala na portu TCP 443 a k šifrování síťového provozu používá standardní protokol TLS. Vypadá jako standardní protokol HTTPS, což ztěžuje jeho blokování.
Obzvláště se mi líbí, že ve srovnání s jinými technologiemi VPN je pro koncového uživatele velmi snadné a pohodlné používat OpenConnect VPN. Kdykoli si na svůj počítač nainstaluji distribuci Linuxu a chci rychle odblokovat webové stránky nebo skrýt svou IP adresu, nainstaluji si klienta OpenConnect a připojím se k serveru pomocí pouhých dvou řádků příkazů:
sudo apt install openconnectsudo openconnect -b vpn.mydomain.com
K dispozici je také klient OpenConnect VPN pro Fedora, RHEL, CentOS, Arch Linux a OpenSUSE. Můžete jej snadno nainstalovat pomocí správce balíčků.
instalace sudo dnf openconnectsudo yum install openconnectsudo pacman -S openconnect
Požadavky
Abyste mohli postupovat podle tohoto návodu, budete potřebovat VPS (virtuální privátní server), který může volně přistupovat k blokovaným webovým stránkám (mimo vaši zemi nebo systém filtrování internetu). Doporučuji Kamatera VPS, která obsahuje:
- 30denní bezplatná zkušební verze.
- Začíná na 4 USD měsíčně (1 GB RAM)
- Vysoce výkonný VPS založený na KVM
- 9 datových center po celém světě, včetně Spojených států, Kanady, Spojeného království, Německa, Nizozemska, Hong Kongu a Isrealu.
Podle níže uvedeného návodu vytvořte svůj Linux VPS server na Kamatera.
- Jak vytvořit Linux VPS server na Kamateře
Jakmile máte VPS se systémem Debian 11 Bullseye, postupujte podle pokynů níže.
K aktivaci HTTPS pro OpenConnect VPN potřebujete také název domény. Zaregistroval jsem své doménové jméno od NameCheap, protože cena je nízká a poskytují ochranu soukromí whois doživotně zdarma.
Krok 1:Nainstalujte OpenConnect VPN Server na Debian 11 Bullseye
Přihlaste se ke svému serveru Debian 11 Bullseye přes SSH. Poté použijte apt
k instalaci ocserv
balíček z úložiště Debian.
sudo apt updatesudo apt install ocserv
Po instalaci se server OpenConnect VPN automaticky spustí. Jeho stav můžete zkontrolovat pomocí:
systemctl status ocserv
Ukázkový výstup:
● ocserv.service – OpenConnect SSL VPN server Načten:načten (/lib/systemd/system/ocserv.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (spuštěno) od So 2021-09-25 21:35:29 EDT; Před 8s Dokumenty:man:ocserv(8) Hlavní PID:52509 (ocserv-main) Úkoly:2 (limit:1095) Paměť:2,0M CPU:12ms CGroup:/system.slice/ocserv.service ├─52509 ocserv-main └─52519 ocserv-sm
Tip:Pokud se výše uvedený příkaz okamžitě neukončí, můžete stisknout Q
klíč k získání zpětné kontroly nad terminálem.
Pokud neběží, můžete jej spustit pomocí:
sudo systemctl start ocserv
Ve výchozím nastavení server OpenConnect VPN naslouchá na portu TCP a UDP 443. Pokud port 443 používá webový server, nemusí být možné server VPN spustit. Později uvidíme, jak změnit port v konfiguračním souboru OpenConnect VPN.
Krok 2:Nainstalujte UFW Firewall
Pro Linux je k dispozici několik řešení firewallu. Budu používat UFW, což je frontend k firewallu iptables a snadno se spravuje. Nainstalujte UFW na Debian pomocí:
sudo apt install ufw
Nejprve musíte povolit provoz SSH.
sudo ufw allow 22/tcp
Poté musíte otevřít port TCP 80 a 443.
sudo ufw povolit 80 443/tcp
Dále povolte UFW.
povolit sudo ufw
Krok 3:Instalace klienta Let’s Encrypt Client (Certbot) na server Debian 11 Bullseye
gnutls-bin
balíček nainstalovaný spolu s ocserv
poskytuje nástroje k vytvoření vlastní CA a certifikátu serveru, ale my získáme a nainstalujeme Let’s Encrypt osvědčení. Výhodou použití certifikátu Let’s Encrypt je, že je zdarma, snáze se nastavuje a je důvěryhodný pro klientský software VPN.
Spuštěním následujících příkazů nainstalujte klienta Let’s Encrypt (certbot) na Debian 11.
sudo apt install certbot
Chcete-li zkontrolovat číslo verze, spusťte
certbot --version
Ukázkový výstup:
certbot 1.12.0
Krok 4:Získejte důvěryhodný certifikát TLS od Let’s Encrypt
Můžete použít standalone
, apache
nebo nginx
plugin pro získání certifikátu TLS. V následujících textech byste měli nahradit example.com
s vaším skutečným názvem domény.
Samostatný plugin
Pokud na vašem serveru Debian 11 Bullseye neběží žádný webový server a chcete, aby server OpenConnect VPN používal port 443, můžete pomocí samostatného pluginu získat certifikát TLS z Let’s Encrypt. Nastavte záznam DNS A pro vpn.example.com
na webu vašeho registrátora domény a poté spusťte následující příkaz pro získání certifikátu.
sudo certbot zcela jistě --standalone --preferred-challenges http --agree-tos --email [e-mail chráněný] -d vpn.example.com
Vysvětlení:
certonly
:Získejte certifikát, ale neinstalujte jej.--standalone
:K získání certifikátu použijte samostatný plugin--preferred-challenges http
:Proveďte výzvu http-01 k ověření naší domény, která bude používat port 80.--agree-tos
:Souhlasíte s podmínkami služby Let’s Encrypt.--email
:E-mailová adresa se používá pro registraci a obnovení účtu.-d
:Zadejte název své domény.
Jak můžete vidět na následujícím snímku obrazovky, úspěšně jsem získal certifikát.
Pokud narazíte na následující chybu, znamená to, že existuje webový server, který již používá port 80, takže byste měli k získání certifikátu TLS použít plugin webroot.
Problém s vazbou na port 80:Nelze se vázat na IPv4 nebo IPv6.
Použití pluginu webroot
Pokud má váš server Debian 11 Bullseye webový server naslouchající na portech 80 a 443, pak je dobré použít plugin webroot k získání certifikátu, protože plugin webroot funguje prakticky s každým webovým serverem a nemusíme jej instalovat certifikát na webovém serveru.
Nejprve musíte vytvořit virtuálního hostitele pro vpn.example.com.
Apache
Pokud používáte Apache webový server, musíte nainstalovat plugin Certbot Apache.
sudo apt install python3-certbot-apache
Vytvořte virtuálního hostitele pod /etc/apache2/sites-available/
adresář.
sudo nano /etc/apache2/sites-available/vpn.example.com.conf
A vložte do souboru následující řádky.
ServerName vpn.example.com DocumentRoot /var/www/ocserv
Uložte a zavřete soubor. Poté vytvořte kořenový webový adresář.
sudo mkdir /var/www/ocserv
Nastavte www-data (uživatel Apache) jako vlastníka webového kořenového adresáře.
sudo chown www-data:www-data /var/www/ocserv -R
Povolit tohoto virtuálního hostitele.
sudo a2ensite vpn.example.com
Znovu načtěte Apache, aby se změny projevily.
sudo systemctl reload apache2
Jakmile je virtuální hostitel vytvořen a povolen, spusťte následující příkaz a získejte certifikát Let’s Encrypt pomocí pluginu apache.
sudo certbot jistě -a apache --agree-tos --email [e-mail chráněný] -d vpn.example.com
Nginx
Pokud používáte Nginx webový server, musíte nainstalovat plugin Certbot Nginx.
sudo apt install python3-certbot-nginx
vytvořte virtuálního hostitele pod /etc/nginx/conf.d/
.
sudo nano /etc/nginx/conf.d/vpn.example.com.conf
Vložte následující řádky do souboru.
server { poslouchat 80; název_serveru vpn.example.com; root /var/www/ocserv/; umístění ~ /.well-known/acme-challenge { povolit vše; }}
Uložte a zavřete soubor. Poté vytvořte kořenový webový adresář.
sudo mkdir /var/www/ocserv
Nastavte www-data (uživatel Nginx) jako vlastníka webového kořenového adresáře.
sudo chown www-data:www-data /var/www/ocserv -R
Znovu načtěte Nginx, aby se změny projevily.
sudo systemctl reload nginx
Jakmile je virtuální hostitel vytvořen a povolen, spusťte následující příkaz a získejte certifikát Let’s Encrypt pomocí pluginu Certbot Nginx.
sudo certbot certonly -a nginx --agree-tos --email [email protected] -d vpn.example.com
Krok 5:Upravte konfigurační soubor OpenConnect VPN Server
Upravte konfigurační soubor ocserv.
sudo nano /etc/ocserv/ocserv.conf
Nejprve musíme nakonfigurovat ověřování pomocí hesla. Ve výchozím nastavení je povolena autentizace heslem prostřednictvím PAM (Pluggable Authentication Modules), což vám umožňuje používat systémové účty Debianu pro přihlášení z VPN klientů. Toto chování lze zakázat komentářem na následujícím řádku.
auth ="pam[gid-min=1000]"
Pokud chceme, aby uživatelé k přihlašování používali samostatné účty VPN místo systémových účtů, musíme přidat následující řádek, abychom povolili ověřování heslem pomocí souboru s hesly.
auth ="plain[passwd=/etc/ocserv/ocpasswd]"
V kroku 6 použijeme ocpasswd
nástroj pro generování /etc/ocserv/ocpasswd
soubor, který obsahuje seznam uživatelských jmen a zakódovaných hesel.
Poznámka :Ocserv podporuje ověřování klientského certifikátu, ale Let’s Encrypt nevydává klientský certifikát. Chcete-li povolit ověřování certifikátů, musíte nastavit vlastní certifikační autoritu pro vydávání klientského certifikátu.
Dále, pokud nechcete, aby ocserv používal TCP a UDP port 443 (existuje webový server používající port 443), najděte následující dva řádky a změňte číslo portu. Jinak je nechte na pokoji.
tcp-port =443udp-port =443
Pak najděte následující dva řádky. Musíme je změnit.
server-cert =/etc/ssl/certs/ssl-cert-snakeoil.pemserver-key =/etc/ssl/private/ssl-cert-snakeoil.key
Nahraďte výchozí nastavení cestou certifikátu serveru Let’s Encrypt a souboru klíče serveru.
server-cert =/etc/letsencrypt/live/vpn.example.com/fullchain.pemserver-key =/etc/letsencrypt/live/vpn.example.com/privkey.pem
Poté nastavte maximální počet klientů. Výchozí hodnota je 128. Nastavte na nulu pro neomezené.
maximální počet klientů =128
Nastavte počet zařízení, ze kterých se může uživatel současně přihlásit. Výchozí hodnota je 2. Nastavte na nulu pro neomezené.
max-same-clients =2
Ve výchozím nastavení se pakety udržující naživu odesílají každých 300 sekund (5 minut). Dávám přednost použití krátkého času (30 sekund), abych snížil pravděpodobnost výpadku připojení VPN.
keepalive =30
Dále najděte následující řádek. Změňte false
true
pro povolení zjišťování MTU.
try-mtu-discovery =false
Pomocí následujících dvou parametrů můžete nastavit dobu, po kterou může klient zůstat nečinný, než bude odpojen. Pokud dáváte přednost tomu, aby klient zůstal ve spojení po neomezenou dobu, uveďte tyto dva parametry do komentáře.
idle-timeout=1200mobile-idle-timeout=1800
Poté nastavte výchozí doménu na vpn.example.com.
výchozí-doména =vpn.example.com
Konfigurace sítě IPv4 je ve výchozím nastavení následující. To způsobí problémy, protože většina domácích směrovačů také nastavuje rozsah sítě IPv4 na 192.168.1.0/24
.
ipv4-network =192.168.1.0ipv4-netmask =255.255.255.0
Můžeme použít jiný rozsah soukromých IP adres (např. 10.10.10.0/24), abychom zabránili kolizi IP adres, takže změňte hodnotu ipv4-network
do
ipv4-network =10.10.10.0
Nyní odkomentujte následující řádek, abyste tunelovali všechny DNS dotazy přes VPN.
tunnel-all-dns =true
Ve výchozím nastavení ocserv používá veřejné servery DNS 8.8.8.8 (Google) a 1.1.1.1 (Cloudflare), což je v pořádku.
dns =8.8.8.8dns =1.1.1.1
Poznámka :Pokud jste poskytovatelem služeb VPN, je dobrým zvykem provozovat vlastní překladač DNS. Pokud na stejném serveru běží překladač DNS, zadejte DNS jako
dns =10.10.10.1
10.10.10.1 je IP adresa OpenConnect VPN serveru ve VPN LAN. Klientům to trochu urychlí vyhledávání DNS, protože je eliminována latence sítě mezi serverem VPN a překladačem DNS.
Poté zakomentujte všechny parametry trasy (na začátek následujících řádků přidejte znak #), čímž se server nastaví jako výchozí brána pro klienty.
#route =10.0.0.0/8#route =172.16.0.0/12#route =192.168.0.0/16#route =fd00::/8#route =default#no-route =192.168.5.0/255.255. 255,0
Uložte a zavřete soubor Poté restartujte server VPN, aby se změny projevily.
sudo systemctl restart ocserv
Krok 6:Vytvoření účtů VPN
Nyní použijte nástroj ocpasswd ke generování účtů VPN.
uživatelské jméno sudo ocpasswd -c /etc/ocserv/ocpasswd
Budete požádáni o nastavení hesla pro uživatele a informace budou uloženy do /etc/ocserv/ocpasswd
soubor. Chcete-li resetovat heslo, jednoduše znovu spusťte výše uvedený příkaz.
Krok 7:Povolte předávání IP v jádře Linux
Aby server VPN směroval pakety mezi klientem VPN a internetem, musíme povolit předávání IP. Upravte sysctl.conf
soubor.
sudo nano /etc/sysctl.conf
Přidejte následující řádek na konec tohoto souboru.
net.ipv4.ip_forward =1
Uložte a zavřete soubor. Poté aplikujte změny pomocí níže uvedeného příkazu. -p
volba načte nastavení sysctl z /etc/sysctl.conf
soubor. Tento příkaz zachová naše změny po restartování systému.
sudo sysctl -p
Krok 8:Konfigurace maskování IP v bráně firewall
Musíme nastavit maskování IP ve firewallu serveru, aby se server stal virtuálním routerem pro klienty VPN. Najděte název hlavního síťového rozhraní vašeho serveru.
ip -c a
Jak vidíte, jmenuje se eth0
na mém serveru Debian.
Abychom nakonfigurovali maskování IP adres, musíme přidat příkaz iptables do konfiguračního souboru UFW.
sudo nano /etc/ufw/before.rules
Ve výchozím nastavení existují určitá pravidla pro filter
stůl. Přidejte následující řádky na konec tohoto souboru. V textovém editoru Nano můžete přejít na konec souboru stisknutím Ctrl+W
a poté stiskněte Ctrl+V
.
# pravidla tabulky NAT*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE# Ukončete každou tabulku řádkem 'COMMIT', jinak tato pravidla nebudou platit zpracován COMMIT
Nahraďte eth0
s vaším vlastním názvem síťového rozhraní.
Výše uvedené řádky se připojí (-A ) pravidlo do konce POSTROUTING řetězec nat stůl. Propojí vaši virtuální privátní síť s internetem. A také skryjte svou síť před vnějším světem. Internet tedy vidí pouze IP adresu vašeho VPN serveru, ale nevidí IP vašeho VPN klienta, stejně jako váš domácí router skrývá vaši soukromou domácí síť.
Ve výchozím nastavení UFW zakazuje předávání paketů. Můžeme povolit přeposílání pro naši privátní síť. Najděte ufw-before-forward
řetězec v tomto souboru a přidejte následující 3 řádky, které budou přijímat předávání paketů, pokud je zdrojová IP nebo cílová IP v 10.10.10.0/24
rozsah.
# povolit přesměrování pro důvěryhodnou síť-A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT-A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT
Uložte a zavřete soubor. Poté restartujte UFW.
sudo systemctl restart ufw
Pokud nyní vypíšete pravidla v řetězci POSTROUTING tabulky NAT pomocí následujícího příkazu:
sudo iptables -t nat -L POSTROUTING
Můžete vidět pravidlo maškarády.
UFW může nějakou dobu trvat, než zpracuje pravidla brány firewall. Pokud se pravidlo maškarády nezobrazí, restartujte UFW znovu (sudo systemctl restart ufw
).
Krok 9:Otevřete port 443 v bráně firewall
Spuštěním následujícího příkazu otevřete TCP a UDP port 443. Pokud jste pro ocserv nakonfigurovali jiný port, změňte 443 na vámi nakonfigurovaný port.
sudo ufw povolit 443/tcpsudo ufw povolit 443/udp
Nyní je server OpenConnect VPN připraven přijímat připojení klientů.
Pro ty z vás, kteří provozují místní překladač DNS, pokud jste zadali 10.10.10.1 jako server DNS pro klienty VPN, musíte klientům VPN povolit připojení k portu 53 pomocí následujícího pravidla UFW.
sudo ufw insert 1 povolit od 10.10.10.0/24
Musíte také upravit konfiguraci serveru DNS BIND, aby klienti VPN mohli odesílat rekurzivní dotazy DNS, jak je uvedeno níže.
allow-recursion { 127.0.0.1; 10.10.10.0/24; };
Klient GUI OpenConnect pro Windows a macOS
Lze je stáhnout z OpenConnect GUI stránky Github.
Jak nainstalovat a používat OpenConnect VPN klienta na Debian 11 Bullseye Desktop
Spuštěním následujícího příkazu nainstalujte klienta příkazového řádku OpenConnect VPN na plochu Debianu.
sudo apt install openconnect
K VPN se můžete připojit z příkazového řádku, jak je uvedeno níže. -b
flag jej spustí na pozadí po navázání spojení.
sudo openconnect -b vpn.example.com
Ve výchozím nastavení bude klient openconnect kontaktovat port 443 serveru. Pokud jste pro server nakonfigurovali jiný port, můžete přidat číslo portu.
sudo openconnect -b vpn.example.com:číslo-portu
Budete požádáni o zadání uživatelského jména a hesla VPN. Pokud je připojení úspěšně navázáno, zobrazí se následující zpráva.
Mám odpověď CONNECT:HTTP/1.1 200 CONNECTEDCSTP připojeno. DPD 60, Keepalive 300Připojeno jako 10.10.10.139, pomocí SSL + LZ4, probíhá DTLS + LZ4Pokračování na pozadí; pid 17050
Pokud se připojení nezdařilo, můžete zkontrolovat protokol ocserv a zjistit proč. (Možná jste nezadali heslo správně.)
sudo journaltcl -eu ocserv
Chcete-li připojení zastavit, spusťte:
sudo pkill openconnect
Chcete-li klienta spustit neinteraktivně, použijte následující syntaxi.
echo -n heslo | sudo openconnect -b vpn.example.com -u uživatelské jméno --passwd-on-stdin
Pokud chcete ke správě připojení VPN používat Správce sítě, musíte si tyto balíčky nainstalovat.
sudo apt install network-manager-openconnect network-manager-openconnect-gnome
Pokud jste úspěšně připojeni k serveru VPN, ale vaše veřejná IP adresa se nezmění, je to proto, že předávání IP nebo maskování IP nefunguje. Jednou jsem měl v příkazu iptables překlep, kvůli kterému můj počítač nemohl procházet internet.
Automatické připojení při spuštění systému
Abychom umožnili klientovi OpenConnect VPN automaticky se připojit k serveru při bootování, můžeme vytvořit systémovou servisní jednotku.
sudo nano /etc/systemd/system/openconnect.service
Vložte do souboru následující řádky. Nahraďte červený text.
[Jednotka] Description=OpenConnect VPN Client After=network-online.target Wants=network-online.target[Service] Type=simple ExecStart=/bin/bash -c '/bin/echo -n heslo | /usr/sbin/openconnect vpn.example.com -u uživatelské jméno --passwd-on-stdin' KillSignal=SIGINT Restart=vždy RestartSec=2[Install] WantedBy=multi-user.target
Uložte a zavřete soubor. Poté tuto službu povolte, aby se spustila při spouštění.
sudo systemctl povolit openconnect.service
Vysvětlení obsahu souboru:
After=network-online.target
aWants=network-online.target
spustit tuto službu po připojení sítě.- Ve skutečnosti může být tato služba stále spuštěna před připojením sítě. Přidáme
Restart=always
aRestartSec=2
restartovat tuto službu po 2 sekundách, pokud tato služba selže. - Systemd nerozpozná přesměrování potrubí. Takže v
ExecStart
příkaz zabalíme do jednoduchých uvozovek a spustíme jej pomocí shellu Bash. - Vzhledem k tomu, že klient OpenConnect VPN poběží jako systémová služba, která běží na pozadí, není třeba přidávat
-b
příznak kopenconnect
příkaz. KillSignal
direktiva říká Systemd, aby poslalSIGINT
signál, kdyžsystemctl stop openconnect
je vydán příkaz. Tím se provede čisté vypnutí odhlášením relace a obnovením nastavení serveru DNS a směrovací tabulky jádra Linuxu.
Chcete-li okamžitě spustit tuto službu Systemd, spusťte
sudo systemctl start openconnect
Chcete-li zastavit tuto službu Systemd, spusťte
sudo systemctl stop openconnect
Automatický restart při výpadku připojení VPN
Někdy se připojení VPN z různých důvodů přerušilo. Chcete-li, aby se klient VPN automaticky restartoval, upravte soubor crontab uživatele root.
sudo crontab -e
Přidejte následující řádek na konec tohoto souboru.
* * * * * ping -c 10 10.10.10.1> /dev/null || systemctl restartujte openconnect
Tato úloha Cron se bude spouštět každou minutu, aby zkontrolovala, zda klient VPN může pingnout na soukromou IP adresu VPN serveru (10.10.10.1). Pokud je ping neúspěšný, provede se příkaz vpravo pro restart klienta VPN. ||
je operátor OR v Bash. Provede příkaz vpravo pouze v případě, že příkaz vlevo vrátil chybu.
Uložte a zavřete soubor.
Rychlost
OpenConnect VPN je docela rychlá. Mohu jej použít ke sledování 4k videí na YouTube. Jak vidíte, rychlost připojení je 63356 Kbps , což v překladu znamená 61 Mbit/s .
A zde jsou výsledky testů na speedtest.net.
Optimalizace rychlosti
OpenConnect ve výchozím nastavení používá protokol TLS over UDP (DTLS) k dosažení vyšší rychlosti, ale protokol UDP nemůže zajistit spolehlivý přenos. TCP je pomalejší než UDP, ale může zajistit spolehlivý přenos. Jeden optimalizační tip, který vám mohu dát, je deaktivovat DTLS, použít standardní TLS (přes TCP) a poté povolit TCP BBR pro zvýšení rychlosti TCP.
Chcete-li zakázat DTLS, zakomentujte (na začátek přidejte symbol #) následující řádek v konfiguračním souboru ocserv.
udp-port =443
Uložte a zavřete soubor. Poté restartujte službu ocserv.
sudo systemctl restart ocserv.service
Chcete-li povolit TCP BBR, podívejte se na následující návod. Všimněte si, že musíte deaktivovat DTLS v ocserv, jinak TCP BBR nebude fungovat.
- Jak snadno zvýšit výkon sítě Debian povolením TCP BBR
V mém testu je standardní TLS s povoleným TCP BBR dvakrát rychlejší než DTLS.
Dalším velmi důležitým faktorem ovlivňujícím rychlost je, jak dobré je spojení mezi vaším místním počítačem a serverem VPN. Pokud žijete na Blízkém východě a server VPN se nachází v USA, rychlost by byla pomalá. Vyberte si datové centrum, které je blízko vašeho bydliště.
Automaticky obnovit Let's Encrypt Certificate
Upravte soubor crontab uživatele root.
sudo crontab -e
Chcete-li denně spouštět úlohu Cron, přidejte na konec souboru následující řádek. Pokud platnost certifikátu vyprší za 30 dní, certbot se pokusí certifikát obnovit. Aby server VPN vyzvedl nový soubor certifikátu a klíče, je nutné restartovat službu ocserv.
@daily certbot renew --quiet &&systemctl restart ocserv
Tipy pro odstraňování problémů
Pamatujte, že pokud používáte OpenVZ VPS, ujistěte se, že jste povolili virtuální síťové zařízení TUN v ovládacím panelu VPS. (Pokud používáte Vultr VPS, pak máte VPS založené na KVM, takže si s tím nemusíte dělat starosti.)
Pokud narazíte na nějaký problém, zkontrolujte protokol OpenConnect VPN serveru.
sudo journalctl -eu ocserv.service
Zjistil jsem, že pokud změním port 443 na jiný port, skvělý čínský firewall zablokuje toto připojení VPN.
Pokud vám ocserv řekne, že nemůže načíst soubor /etc/ocserv/ocserv.conf
soubor, můžete zastavit ocserv.
sudo systemctl stop ocserv
Poté jej spusťte v popředí s povoleným laděním.
sudo /usr/sbin/ocserv --foreground --pid-file /run/ocserv.pid --config /etc/ocserv/ocserv.conf --debug=10
Výstup vám pak může napovědět, proč ocserv nefunguje.
Umožněte OpenConnect VPN Server a Web Server používat port 443 současně
Přečtěte si prosím následující článek:
- Spusťte OpenConnect VPN Server &Apache/Nginx na stejném boxu s HAProxy
Jak zakázat TLS 1.0 a TLS 1.1 v ocserv
Rada PCI ukončila 30. června 2018 podporu TLS 1.0 a hlavní webové prohlížeče zakážou TLS 1.0 a TLS 1.1 v roce 2020. Totéž bychom měli udělat se serverem VPN. Upravte hlavní konfigurační soubor.
sudo nano /etc/ocserv/ocserv.conf
Najděte následující řádek:
tls-priorities ="NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128"
Chcete-li zakázat TLS 1.0 a TLS 1.1 na serveru OpenConnect VPN, stačí přidat -VERS-TLS1.0
a -VERS-TLS1.1
v řádku.
tls-priorities ="NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1"
Uložte a zavřete soubor. Poté restartujte ocserv.
sudo systemctl restart ocserv
Nyní bude ocserv přijímat pouze TLS 1.3 a TLS 1.2. Další informace o konfiguraci parametru TLS v ocserv naleznete v tématu GnuTLS prioritní řetězce.
Chcete-li zkontrolovat, zda váš server OpenConnect VPN podporuje TLS 1.0, spusťte následující příkaz.
openssl s_client -connect vpn.your-domain.com:443 -tls1
A zkontrolujte TLS 1.1
openssl s_client -connect vpn.your-domain.com:443 -tls1_1
Pokud ve výstupu uvidíte následující zprávu, znamená to, že verze TLS není podporována.
Nové, (ŽÁDNÉ), Šifra je (ŽÁDNÁ) Zabezpečené opětovné vyjednávání NENÍ podporováno
Konfigurace podle uživatele nebo skupiny
Ocserv umožňuje konfigurace pro uživatele a skupiny. Chcete-li tuto funkci povolit, odkomentujte následující dva řádky v /etc/ocserv/ocserv.conf
soubor.
config-per-user =/etc/ocserv/config-per-user/config-per-group =/etc/ocserv/config-per-group/
Uložte a zavřete soubor. Poté vytvořte konfigurační adresář pro uživatele a skupinu.
sudo mkdir /etc/ocserv/config-per-user/ /etc/ocserv/config-per-group/
Dále můžete vytvořit soubor v těchto dvou adresářích. Vytvořte například user1
soubor umožňující vlastní konfiguraci pro user1
.
sudo nano /etc/ocserv/config-per-user/user1
Můžete také vytvořit group1
umožňuje vlastní konfiguraci pro skupinu s názvem group1
.
sudo nano /etc/ocserv/config-per-group/group1
Do souboru můžete přidat něco jako níže.
trasa =10.10.10.0/255.255.255.0
To znamená, že za user1
připojit k tomuto serveru VPN, provoz pouze na 10.10.10.0/24
síť bude směrována přes server VPN. Provoz na další IP adresy je směrován přes původní bránu. Toto je známé jako rozdělené tunelování, které je užitečné, když:
- Chcete pouze, aby klienti VPN mohli procházet interní zdroje, a nechcete, aby veškerý provoz procházel přes server VPN.
- Musíte vybudovat soukromou síť pro cloudové servery.
- Klient se musí připojit k více sítím VPN. Jedna VPN může používat rozdělené tunelování a druhá úplný tunel.
Uložte a zavřete soubor. Restartujte ocserv
aby se změny projevily.