Jak nastavit WireGuard VPN Server a klienta na Ubuntu 20.04

Nastavte si vlastní hostovanou VPN pomocí Wireguard

A VPN (virtuální privátní síť) umožňuje uživateli připojit se k privátní síti na dálku, jako by byl počítač uživatele přímo připojen k privátní síti. Tato technologie byla původně vyvinuta, aby umožnila vzdálený přístup do interní privátní sítě společnosti pro zaměstnance, kteří se ve skutečnosti nenacházejí v umístění interní sítě.

V místě vnitřní sítě je nasazen server VPN. Tento server je ve veřejné síti a zaměstnanec k němu může přistupovat pomocí klienta VPN. Pro připojení k serveru VPN je vyžadováno ověření. Komunikace mezi VPN serverem a VPN klientem je zabezpečena pomocí tunelovacího protokolu. Všimněte si, že tato komunikace může nebo nemusí být šifrována, ale obvykle ve většině protokolů VPN je šifrována.

Dalším využitím VPN je k získat anonymitu při přístupu k internetu nebo k obcházení geografických omezení uložených při přístupu na některé webové stránky. V takových případech není síť, ke které se chce uživatel připojit, soukromou sítí, ale je to internet.

V průběhu let bylo vyvinuto mnoho protokolů VPN. Tyto protokoly využívají různé tunelovací protokoly a šifrovací algoritmy pro komunikaci mezi serverem a klientem.

Jedním z takových protokolů, který se v poslední době široce využívá, je Wireguard. Wireguard je lehčí, jednodušší a výkonnější než dobře známé tradičně používané protokoly VPN, jako je OpenVPN, IPSec. Je již implementován pro Windows, Mac OS a velké množství distribucí Linuxu. V Linuxu je implementován jako modul jádra. Je k dispozici v oficiálních repozitářích Ubuntu 20.04.

V tomto článku uvidíme, jak nastavit Wireguard VPN server a klienta v Ubuntu 20.04.

Instalace

Pro tento článek nastavuji server Wireguard na Ubuntu 20.04 Linode a klienta Wireguard na svém místním počítači s Ubuntu 20.04.

Balík drátěný strážce nainstaluje jak Wireguard Server, tak klienta. Spusťte následující příkaz na počítači serveru i na počítači klienta.

sudo apt install wireguard

Konfigurace serveru

Bezpečnostní klíče

Potřebujeme vygenerovat sadu párů veřejného/soukromého klíče za účelem ověření a zabezpečení připojení Wireguard. To lze provést pomocí následujících příkazů:

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

Všimněte si, že všechny konfigurační úlohy provádíme jako superuživatel. Důvodem je přístup do adresáře /etc/wireguard je pro normální uživatele zabráněno a přístup k adresáři nelze získat pouze s právy sudo pro běžného uživatele.

Dále nastavíme masku vytváření souboru na 077. To znamená, že kdykoli je v této složce jakýmkoli procesem vytvořen nový soubor, jeho oprávnění budou automaticky maskována 077. Např. pokud je v této složce vytvořen soubor s oprávněním 777, je automaticky maskován a oprávnění se fakticky stanou 700. To se děje tak, že všechna oprávnění k souboru má pouze vlastník souboru a všichni ostatní nemají žádná oprávnění.

Na dalším řádku vygenerujeme pár veřejný/soukromý klíč pro server. Jsou uloženy v souborech soukromý_klíč a veřejný_klíč. Chcete-li zobrazit klíče, spusťte:

cat private_key cat public_key

Zkopírujte soukromý klíč, potřebujeme ho v dalším kroku.

Poznámka: Nikdy nesdílejte svůj soukromý klíč veřejně!

Konfigurační soubor

Vytvořme konfigurační soubor pro Wireguard Server. Název souboru můžete zvolit libovolný. Vytvoříme soubor wg0.conf v tomto příkladu.

vim wg0.conf

Přidejte do souboru následující.

[Rozhraní] 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 FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D VPŘED -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o -j MASKÁRA 

Vložte soukromý klíč, který jsme dříve zkopírovali, do řádku 5 výše uvedeného kódu.

Musíme nakonfigurovat Wireguard na jiné (virtuální) podsíti než IP adresa serveru. Zde jsem použil 10.20.43.1 pro server a použiji 10.20.43.2 pro klienta. Zde lze použít jakoukoli podsíť. Chcete-li získat IP adresu serveru a rozhraní, spusťte:

ifconfig

Poznamenejte si IP adresu serveru. To je vyžadováno během konfigurace klienta.

Rozhraní používané serverem, jak je vidět na obrázku výše, je eth0. Název rozhraní se může lišit v závislosti na síti uživatele, může být wlan0 nebo wlp2s0 v případě, že je uživatel připojen k WiFi síti pomocí bezdrátové karty.

Nahradit v Uveřejnit a PostDown s vaším rozhraním; v tomto příkladu je eth0.Uveřejnit a PostDown direktivy se používají k určení, které příkazy mají být spuštěny při spuštění a zastavení serveru. V našem příkladu používáme iptables příkaz k nastavení pravidel IP tak, aby klienti sdíleli IP adresu serveru. Pravidla zaniknou, jakmile se server zastaví.

Uložte a ukončete soubor. Při použití vim stiskněte Esc, poté zadejte :wq a stiskněte Vstupte uložit a ukončit.

Pokud používáte a ufw firewall na serveru, musíme povolit připojení UDP k portu pro server VPN, 51190.

ufw povolit 51190/udp

Spuštění služby

Nyní, když je konfigurace hotová, můžeme spustit službu Wireguard VPN.

Umožnit služba, která se má spustit při spouštění, spusťte:

systemctl povolit wg-quick@wg0

Všimněte si, že zde wg0 je název konfiguračního souboru.

Začít služba, spusťte:

start služby wg-quick@wg0

Ověřte že služba byla úspěšně spuštěna:

stav služby wg-quick@wg0

Ověřte, že rozhraní vytvořený v konfiguračním souboru se spustil pomocí příkazu IP.

ip show wg0

Wireguard VPN Server je nyní nastaven a spuštěn. Nyní nakonfigurujeme klienta.

Konfigurace klienta

Konfigurace klienta pro Wireguard je víceméně stejná jako konfigurace serveru. Vygenerujeme klíče pro klienta a poté vytvoříme konfigurační soubor.

Bezpečnostní klíče

Pro vygenerování veřejného/soukromého klíče pár pro klienta, spusťte:

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

Veřejné a soukromé klíče pro klienta jsou nyní generovány v souborech client_private_key a client_public_key.

Zkontrolujte, zda byly vytvořeny pomocí kočka příkaz.

cat client_private_key cat client_public_key

Zkopírujte zobrazený soukromý klíč, protože jej potřebujeme přidat do konfiguračního souboru pro klienta.

Konfigurační soubor

Vytvořte konfigurační soubor s libovolným jménem. Vytvoříme jej s názvem wg0-klient pro tento příklad.

vim wg0-client.conf

Přidejte následující konfiguraci.

[Rozhraní] # Adresa IP a soukromý klíč adresy klienta = 10.20.43.2/24 PrivateKey = [Peer] # Veřejný klíč, adresa IP a port serveru PublicKey = Koncový bod = :51190 Povolené IP = 0.0.0.0/0, : :/0

Zadejte adresu podsítě klienta. Jak bylo popsáno dříve, používáme 10.20.43.2 pro klienta v tomto příkladu.

Přidejte soukromý klíč klienta vygenerované v předchozím kroku do řádku 4 v konfiguračním kódu výše.

V části ‚Peer‘ přidáváme informace o serveru Wireguard VPN chceme se připojit.

Zadejte veřejný klíč serveru. Zadejte IP adresa serveru, který jsme si dříve poznamenali, a port v daném formátu proti Koncový bod. Toto je port, který jsme zadali v konfiguračním souboru serveru a na kterém byla spuštěna služba VPN na serveru.

Povolené IP adresy by měly být zadány tak, jak jsou uvedeny (0.0.0.0/0), aby jakýkoli požadavek na dynamickou veřejnou IP používanou klientem byl vždy předán na server VPN.

Uložte a ukončete soubor. Při použití vim stiskněte Esc, poté zadejte :wq a stiskněte Vstupte uložit a ukončit.

Povolte klientskou službu spustit při každém spuštění a spustit jej.

systemctl povolit wg-quick@wg-client službu wg-quick@wg-client start

Ověřte pokud služba začala.

stav služby wg-quick@wg-client

Přidání Peer na server

Nyní máme VPN server a klienta v provozu. Bezpečný tunel mezi těmito dvěma však nebude vytvořen, pokud nenastavíme peer-to-peer spojení mezi serverem a klientem.

Vraťte se na server. Za prvé, zastavte službu VPN.

service wg-quick@wg0 stop

Dále otevřete konfigurační soubor přidat konfiguraci pro peer (klient).

vim /etc/wireguard/wg0.conf

Připojit následující řádky do souboru.

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

Nyní, znovu spusťte službu VPN.

start služby wg-quick@wg0

A je to! Toto je veškerá konfigurace potřebná pro nastavení klienta a serveru Wireguard VPN. Pojďme nyní otestovat naši VPN.

Testování VPN

Nejprve proveďte jednoduchý ping z klienta na server, abyste se ujistili, že komunikace VPN tunelu funguje. Spusťte na klientovi následující:

ping 10.20.43.1

Další, otevřete webový prohlížeč a otevřete libovolnou webovou stránku zkontrolujte, zda se z klientského počítače můžete připojit k internetu. Své připojení k internetu můžete také zkontrolovat z příkazového řádku pomocí wget.

wget 

Nyní jsme zkontrolovali připojení tunelu a připojení k internetu. Pokud oba fungují, musíme se nyní ujistit, že veškerý internetový provoz přicházející ke klientovi prochází serverem.

K tomu potřebujeme jednoduše zkontrolovat IP adresu klienta, jak ji vidí internet. Jedním ze způsobů, jak to udělat, je přejít na stránku whatsmyip.org. Nebo jinak z příkazového řádku můžeme pomocí Curl zadat dotaz na jinou podobnou službu s názvem IP info.

Na klientském počítači spusťte následující

curl //ipinfo.io/ip

Ano. Je to veřejná IP adresa Linode, kde je hostován server VPN. Takto je dosaženo anonymity pomocí VPN, protože na celém internetu je nyní vidět IP serveru VPN, nikoli vašeho počítače.

Závěr

Snadné nastavení je jednou z nejdůležitějších výhod Wireguard oproti tradičnímu softwaru VPN, jako je OpenVPN, který k nastavení potřebuje vyšší úroveň znalostí sítě a směrování. Chybí však podrobná oficiální dokumentace pro Wireguard, která může způsobit problémy, pokud vaše nastavení Wireguard vyvolává chyby nebo nefunguje podle očekávání.

Nicméně Wireguard je vynikající volbou, pokud chcete vlastní hostovanou VPN pro bezpečnou komunikaci přes internet. Chcete-li se dozvědět více o Wireguardu a protokolech a technologiích, které používá, můžete se podívat na oficiální stránky.