Ako nastaviť server a klienta WireGuard VPN na Ubuntu 20.04

Nastavte si vlastnú hosťovanú sieť VPN pomocou Wireguard

A VPN (virtuálna súkromná sieť) umožňuje používateľovi pripojiť sa k súkromnej sieti na diaľku, ako keby bol počítač používateľa priamo pripojený k súkromnej sieti. Táto technológia bola pôvodne vyvinutá s cieľom umožniť vzdialený prístup do internej privátnej siete spoločnosti pre zamestnancov, ktorí sa v skutočnosti nenachádzajú v umiestnení internej siete.

Server VPN je nasadený na mieste internej siete. Tento server je vo verejnej sieti a zamestnanec k nemu môže pristupovať pomocou klienta VPN. Na pripojenie k serveru VPN je potrebná autentifikácia. Komunikácia medzi serverom VPN a klientom VPN je zabezpečená pomocou tunelovacieho protokolu. Všimnite si, že táto komunikácia môže alebo nemusí byť šifrovaná, ale zvyčajne vo väčšine protokolov VPN je šifrovaná.

Ďalším využitím VPN je získať anonymitu pri prístupe na internet alebo obísť geografické obmedzenia uložené pri prístupe na niektoré webové stránky. V takýchto prípadoch sieť, ku ktorej sa chce používateľ pripojiť, nie je súkromnou sieťou, ale je to internet.

V priebehu rokov bolo vyvinutých veľa protokolov VPN. Tieto protokoly využívajú rôzne tunelovacie protokoly a šifrovacie algoritmy na komunikáciu medzi serverom a klientom.

Jedným z takýchto protokolov, ktorý sa v poslednej dobe široko používa, je Wiregard. Wireguard je ľahší, jednoduchší a výkonnejší ako dobre známe tradične používané protokoly VPN, ako sú OpenVPN, IPSec. Je už implementovaný pre Windows, Mac OS a veľké množstvo distribúcií Linuxu. V Linuxe je implementovaný ako modul jadra. Je k dispozícii v oficiálnych úložiskách Ubuntu 20.04.

V tomto článku uvidíme, ako nastaviť server a klienta Wireguard VPN v Ubuntu 20.04.

Inštalácia

Pre tento článok nastavujem server Wireguard na Ubuntu 20.04 Linode a klienta Wireguard na mojom lokálnom počítači s Ubuntu 20.04.

Balík drôtový strážca nainštaluje server Wireguard aj klienta. Spustite nasledujúci príkaz na serverovom aj klientskom stroji.

sudo apt install wireguard

Konfigurácia servera

Bezpečnostné kľúče

Potrebujeme vygenerovať množinu párov verejný/súkromný kľúč na overenie a zabezpečenie pripojenia Wireguard. To možno vykonať pomocou nasledujúcich príkazov:

sudo su cd /etc/wireguard umask 077 wg genkey | tričko private_key | wg pubkey > public_key

Všimnite si, že všetky konfiguračné úlohy robíme ako superužívateľ. Dôvodom je prístup do adresára /etc/wireguard je zakázaný pre normálnych používateľov a prístup k adresárom nie je možné získať len s privilégiami sudo pre bežného používateľa.

Ďalej nastavíme masku vytvorenia súboru na 077. To znamená, že vždy, keď sa v tomto priečinku akýmkoľvek procesom vytvorí nový súbor, jeho oprávnenia budú automaticky maskované 077. Napr. ak sa v tomto priečinku vytvorí súbor s oprávneniami 777, automaticky sa zamaskuje a oprávnenia sa efektívne stanú 700. To sa deje tak, že všetky oprávnenia na súbor má iba vlastník súboru a všetci ostatní nemajú žiadne oprávnenia.

Na ďalšom riadku vygenerujeme pár verejný/súkromný kľúč pre server. Sú uložené v súboroch súkromný_kľúč a verejný_kľúč. Ak chcete zobraziť kľúče, spustite:

cat private_key cat public_key

Skopírujte súkromný kľúč, potrebujeme ho v ďalšom kroku.

Poznámka: Nikdy nezdieľajte svoj súkromný kľúč verejne!

Konfiguračný súbor

Vytvorme konfiguračný súbor pre server Wireguard. Pre súbor môžete zvoliť ľubovoľný názov. Vytvoríme súbor wg0.conf v tomto príklade.

vim wg0.conf

Do súboru pridajte nasledovné.

[Rozhranie] Adresa = 10.20.43.1/24 SaveConfig = true ListenPort = 51190 PrivateKey = PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o -j MASQUERADE; ip6tables -A VPRED -i wg0 -j PRIJAŤ; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D VPRED -i wg0 -j PRIJAŤ; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE 

Prilepte súkromný kľúč, ktorý sme predtým skopírovali, do riadku 5 v kóde vyššie.

Musíme nakonfigurovať Wireguard na inej (virtuálnej) podsieti než je IP adresa servera. Tu som použil 10.20.43.1 pre server a použijem 10.20.43.2 pre klienta. Tu je možné použiť akúkoľvek podsieť. Ak chcete získať adresu IP servera a rozhrania, spustite:

ifconfig

Poznamenajte si IP adresu servera. Vyžaduje sa to počas konfigurácie klienta.

Rozhranie používané serverom, ako je vidieť na obrázku vyššie, je eth0. Názov rozhrania sa môže líšiť v závislosti od siete používateľa, môže byť wlan0 alebo wlp2s0 v prípade, že je používateľ pripojený k WiFi sieti pomocou bezdrôtovej karty.

Vymeňte v PostUp a PostDown s vaším rozhraním; v tomto príklade je eth0.PostUp a PostDown Direktívy sa používajú na určenie, ktoré príkazy sa majú spustiť pri spustení a zastavení servera. V našom príklade používame iptables príkaz na nastavenie pravidiel IP tak, aby klienti zdieľali IP adresu servera. Pravidlá zaniknú, keď sa server zastaví.

Uložte a ukončite súbor. Pri používaní vim stlačte Esc, potom zadajte :wq a stlačte Zadajte uložiť a ukončiť.

Ak používate a ufw firewall na serveri, musíme povoliť pripojenia UDP k portu pre server VPN, 51190.

ufw povoliť 51190/udp

Spustenie Služby

Teraz, keď je konfigurácia hotová, môžeme spustiť službu Wireguard VPN.

Umožniť službu, ktorá sa má spustiť v čase zavádzania, spustite:

systemctl povoliť wg-quick@wg0

Všimnite si to tu wg0 je názov konfiguračného súboru.

Začať službu, spustite:

spustenie služby wg-quick@wg0

Overiť že služba sa úspešne spustila:

stav služby wg-quick@wg0

Overte si, že rozhranie sme vytvorili v konfiguračnom súbore sa spustilo pomocou príkazu IP.

ip show wg0

Wireguard VPN Server je teraz nastavený a spustený. Teraz nakonfigurujme klienta.

Konfigurácia klienta

Konfigurácia klienta pre Wireguard je viac-menej rovnaká ako konfigurácia servera. Vygenerujeme kľúče pre klienta a potom vytvoríme konfiguračný súbor.

Bezpečnostné kľúče

Na vygenerovanie verejného/súkromného kľúča pár pre klienta, spustite:

sudo su cd /etc/wireguard umask 077 wg genkey | tričko client_private_key | wg pubkey > client_public_key

Verejný a súkromný kľúč pre klienta sa teraz generujú v súboroch client_private_key a client_public_key.

Skontrolujte, či boli vytvorené pomocou kat príkaz.

mačka client_private_key cat client_public_key

Skopírujte zobrazený súkromný kľúč, pretože ho potrebujeme pridať do konfiguračného súboru pre klienta.

Konfiguračný súbor

Vytvorte konfiguračný súbor s akýmkoľvek menom, ktoré si želáte. Vytvoríme ho s názvom wg0-klient pre tento príklad.

vim wg0-client.conf

Pridajte nasledujúcu konfiguráciu.

[Rozhranie] # Adresa IP a súkromný kľúč adresy klienta = 10.20.43.2/24 PrivateKey = [Peer] # Verejný kľúč, adresa IP a port servera Verejný kľúč = Koncový bod = :51190 Povolené IP = 0.0.0.0/0, : :/0

Zadajte adresu podsiete klienta. Ako bolo uvedené vyššie, používame 10.20.43.2 pre klienta v tomto príklade.

Pridajte súkromný kľúč klienta vygenerované v predchádzajúcom kroku do riadku 4 v konfiguračnom kóde vyššie.

V časti „Peer“ pridávame informácie o serveri Wireguard VPN chceme sa pripojiť.

Zadajte verejný kľúč servera. Zadajte IP adresa servera, ktorý sme predtým zaznamenali, a port v danom formáte proti Koncový bod. Toto je port, ktorý sme zadali v konfiguračnom súbore servera a na ktorom sa spustila služba VPN na serveri.

Povolené adresy IP by mali byť zadané tak, ako sú uvedené (0.0.0.0/0), aby sa každá požiadavka na dynamickú verejnú adresu IP používanú klientom vždy preposielala na server VPN.

Uložte a ukončite súbor. Pri používaní vim stlačte Esc, potom zadajte :wq a stlačte Zadajte uložiť a ukončiť.

Povoliť klientsky servis spustiť pri každom spustení a spustiť ho.

systemctl povoliť wg-quick@wg-client službu wg-quick@wg-client štart

Overiť ak sa služba začala.

stav služby wg-quick@wg-client

Pridanie Peer na server

Teraz máme server a klienta VPN v prevádzke. Bezpečný tunel medzi nimi sa však nevytvorí, pokiaľ nevytvoríme peer-to-peer spojenie medzi serverom a klientom.

Vráť sa na server. Najprv, zastaviť službu VPN.

servis wg-quick@wg0 stop

Potom otvorte konfiguračný súbor pridať konfiguráciu pre peer (zákazník).

vim /etc/wireguard/wg0.conf

Pripojiť nasledujúce riadky do súboru.

[Peer] PublicKey = Povolené IP = 10.20.43.2/32

teraz znova spustite službu VPN.

spustenie služby wg-quick@wg0

To je všetko! Toto je všetka konfigurácia potrebná na nastavenie klienta a servera Wireguard VPN. Poďme teraz otestovať našu VPN.

Testovanie VPN

Najprv urobme jednoduchý ping z klienta na server, aby sme sa uistili, že komunikácia tunela VPN funguje. Na klientovi spustite nasledovné:

ping 10.20.43.1

Ďalšie, otvorte webový prehliadač a otvorte ľubovoľnú webovú stránku skontrolujte, či sa z klientskeho počítača môžete pripojiť na internet. Môžete tiež skontrolovať svoje internetové pripojenie z príkazového riadku pomocou wget.

wget 

Teraz sme skontrolovali pripojenie tunela a pripojenie k internetu. Ak obe fungujú, teraz sa musíme uistiť, že všetka internetová prevádzka prichádzajúca ku klientovi prechádza cez server.

Na to jednoducho musíme skontrolovať IP adresu klienta, ako ju vidí internet. Jedným zo spôsobov, ako to urobiť, je prejsť na stránku whatsmyip.org. Alebo z príkazového riadku môžeme pomocou Curl požiadať o inú podobnú službu s názvom IP info.

Na klientskom počítači spustite nasledujúce

curl //ipinfo.io/ip

Áno. Je to verejná IP adresa Linode, kde je hosťovaný server VPN. Takto sa dosahuje anonymita pomocou VPN, pretože na celom internete sa teraz zobrazuje IP servera VPN a nie vášho počítača.

Záver

Jednoduché nastavenie je jednou z najdôležitejších výhod Wireguard v porovnaní s tradičným softvérom VPN, ako je OpenVPN, ktorý na nastavenie vyžaduje vyššiu úroveň znalostí o sieti a smerovaní. Chýba však podrobná oficiálna dokumentácia pre Wireguard, ktorá môže spôsobiť problémy, ak vaše nastavenie Wireguard vyvoláva chyby alebo nefunguje podľa očakávania.

Napriek tomu je Wireguard vynikajúcou voľbou, ak chcete sieť VPN s vlastným hosťovaním na bezpečnú komunikáciu cez internet. Ak sa chcete dozvedieť viac o Wireguard a protokoloch a technológiách, ktoré používa, môžete sa pozrieť na oficiálnu stránku.