Wireguard je moderní a velmi snadno nastavitelná VPN dostupná na více operačních systémech. Aplikace je dostupná v oficiálních repozitářích Ubuntu 20.04, takže je také velmi snadná instalace. Na rozdíl od jiného softwaru, jako je OpenVPN, který je založen na použití certifikátů ssl, je Wireguard založen na použití párů klíčů. V tomto tutoriálu uvidíme, jak v několika jednoduchých krocích nakonfigurovat server VPN a klientského partnera na nejnovější stabilní verzi Ubuntu.
V tomto tutoriálu se naučíte:
- Jak nainstalovat Wireguard na Ubuntu 20.04 Focal Fossa
- Jak vytvořit pár veřejného a soukromého klíče
- Jak nakonfigurovat server a klientského partnera
- Jak přesměrovat veškerý příchozí provoz na VPN
Požadavky na software a použité konvence
Kategorie | Požadavky, konvence nebo použitá verze softwaru |
---|---|
Systém | Ubuntu 20.04 Focal Fossa |
Software | wireguard |
Jiné | Oprávnění uživatele root |
Konvence | # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel |
Instalace
Wireguard je oficiálně dostupný v repozitáři „universe“ Ubuntu 20.04, takže jej můžeme nainstalovat přes apt
. Dostupná verze je v době psaní článku 1.0.20200319-1ubuntu1
:
$ sudo apt install wireguard
Systém nás požádá o potvrzení, že chceme nainstalovat program a jeho závislosti, a operaci dokončí během několika sekund.
Generování klíčů
Pro každý počítač, který chceme používat v naší VPN, musíme vygenerovat veřejný a soukromý klíč. Soukromý klíč by měl být na počítači uchováván v tajnosti, veřejný klíč se používá pro přístup k počítači od ostatních kolegů.
Pro vygenerování klíčů můžeme použít wg
užitečnost. V konfiguračním souboru Wireguard budeme muset odkázat na soukromý klíč počítače, zatímco veřejný klíč bude použit na ostatních peerech. Všimněte si, že budeme odkazovat přímo na klíče, takže je teoreticky nemusíme ukládat do souborů. Uděláme to však stejně, jen pro pohodlí.
Pro vygenerování soukromého klíče pro náš server musíme použít genkey
dílčí příkaz wg
. Příkaz odešle vytvořený klíč do stdout
; k zápisu klíče do souboru můžeme využít sílu přesměrování shellu:
$ wg genkey> server_private_key
Příkaz vygeneruje klíč a uloží jej do server_private_key
soubor, ale zobrazí následující varování:
Upozornění:zápis do souboru přístupného světu. Zvažte nastavení umask na 077 a zkuste to znovu.
Je to proto, že s výchozím uživatelem umask (002
) soubory jsou vytvářeny v režimu 664
, takže jsou světově čitelné, což se nedoporučuje. K vyřešení tohoto problému můžeme buď změnit umask použitou v aktuální relaci shellu před vytvořením souborů:
$ umask 077
Nebo změňte oprávnění souborů na 600
po vytvoření. Zde se podíváme na druhé řešení.
Jakmile bude náš soukromý klíč připraven, můžeme vygenerovat veřejný ten, který je na něm založen. Ke splnění úkolu používáme pubkey
dílčí příkaz wg
. Stejně jako předtím, než použijeme přesměrování shellu:nejprve předejte obsah server_private_key
soubor do stdin
příkazu a poté a k přesměrování vygenerovaného klíče na server_public_key
soubor:
$ wg pubkeyserver_public_key
Abychom si ušetřili psaní, můžeme vygenerovat oba klíče pouze jedním příkazem, který zahrnuje použití shellu |
(potrubí) operátor a tee
příkaz:
$ wg genkey | tee server_private_key | wg pubkey> server_public_key
Výstup příkazu na levé straně operátoru roury (|
) je předán standardnímu vstupu programu na jeho pravé straně. tee
příkaz, místo toho nám umožňují přesměrovat výstup příkazu jak do souboru, tak na standardní výstup ( více o přesměrování shellu zde).
Jakmile jsou naše klíče připraveny, můžeme vytvořit konfigurační soubor serveru.
Konfigurační soubor serveru
Pro konfiguraci naší instalace Wireguard můžeme vytvořit konfigurační soubor s názvem wg0.conf
s následujícím obsahem:
[Rozhraní]PrivateKey =Adresa =10.0.0.1/24ListenPort =51820
Všimněte si, že název souboru je libovolný, ale měl by vycházet z názvu, který použijeme pro naše rozhraní, wg0
v tomto případě. Na tento název se bude odkazovat při spuštění služby, jak uvidíme níže.
V našem příkladu. [interface]
část konfiguračního souboru obsahuje následující pole:
- Soukromý klíč
- Adresa
- ListenPort
Soukromý klíč hodnota pole není nic jiného než soukromý klíč serveru, který jsme vygenerovali dříve.
V části Adresa v poli jsme zadali adresu, která má být přiřazena rozhraní ve VPN spolu s maskou podsítě pomocí CIDR notový zápis. V tomto případě jsme použili 10.0.0.1/24
, takže adresa našeho „serveru“ Wireguard uvnitř VPN bude 10.0.0.1
, což je v dostupném rozsahu adres od 10.0.0.1
na 10.0.0.254
.
Nakonec v ListenPort jsme specifikovali, na jakém portu bude Wireguard naslouchat příchozímu provozu. Do našeho firewallu musí být přidáno také pravidlo povolující uvedený provoz. Uděláme to v další části.
Nyní můžeme změnit oprávnění souborů a přesunout je do /etc/wireguard
adresář:
$ chmod 600 server_public_key server_private_key wg0.conf$ sudo mv server_private_key server_public_key wg0.conf /etc/wireguard
Nyní můžeme spustit wg-quick
služba specifikující název rozhraní Wireguard za @
v názvu jednotky. Co je to za zápis? Je to vlastnost systemd:s ní můžeme generovat více souborů jednotek na základě „šablony“ a předat hodnotu, která bude nahrazena v šabloně, za @
symbol v názvu jednotky. Toto je obsah [email protected]
jednotka:
[Unit]Description=WireGuard přes wg-quick(8) pro %IAfter=network-online.target nss-lookup.targetWants=network-online.target nss-lookup.targetDocumentation=man:wg-quick(8) Documentation=man:wg(8)Documentation=https://www.wireguard.com/Documentation=https://www.wireguard.com/quickstart/Documentation=https://git.zx2c4.com/wireguard-tools/ about/src/man/wg-quick.8Documentation=https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8[Service]Type=oneshotRemainAfterExit=yesExecStart=/usr/bin/wg -rychle nahoru %iExecStop=/usr/bin/wg-rychle dolů %iEnvironment=WG_ENDPOINT_RESOLUTION_RETRIES=infinity[Install]WantedBy=multi-user.target
Hodnota, kterou uvedeme za @
v názvu jednotky při jejím spouštění nebo zastavování nahradí %i
v ExecStart
a ExecStop
linky. V tomto případě použijeme wg0
:
$ sudo systemctl enable --now wg-quick@wg0
Pomocí výše uvedeného příkazu jsme službu spustili a také provedli tak, že se automaticky spustí při bootování. Pro ověření, že naše konfigurace byla použita, můžeme spustit wg
příkaz. Vytvořený výstup by měl zobrazovat informace o wg0
rozhraní:
$ sudo wginterface:wg0 veřejný klíč:nNx3Zpcv9D2dtgHDsoYGBNr64zG5jTJ4Z4T2sE759V4=soukromý klíč:(skrytý) naslouchací port:51820
Nyní pokračujte a nakonfigurujte náš firewall a předávání paketů.
Nastavení brány firewall a sítě
V tomto tutoriálu budu předpokládat použití ufw
. Jak jsme řekli dříve, musíme přidat pravidlo, které povolí příchozí provoz přes port, který jsme zadali v konfiguračním souboru, 51820
. Provedeme to spuštěním velmi jednoduchého příkazu:
$ sudo ufw allow 51820/udp
Musíme také povolit předávání paketů v našem systému. Abychom splnili úkol, odstraníme komentář z řádku 28
z /etc/sysctl.conf
soubor, takže to vypadá takto:
# Odkomentováním dalšího řádku povolíte předávání paketů pro IPv4net.ipv4.ip_forward=1
Aby se změny projevily bez restartování systému, musíme spustit následující příkaz:
$ sudo sysctl -p
V dalším kroku nakonfigurujeme klienta.
Vygenerování klientského klíče
Pojďme nyní k systému, který chceme používat jako klient. Musíme na něj nainstalovat Wireguard; jakmile to uděláme, můžeme vygenerovat pár klíčů stejně jako na serveru:
$ wg genkey | tričko client_private_key | wg pubkey> client_public_key
Stejně jako na straně serveru vytváříme wg0.conf
konfigurační soubor. Tentokrát s tímto obsahem:
[Interface]PrivateKey =Adresa =10.0.0.2/24[Peer]PublicKey = Koncový bod = :51820AllowedIPs =0.0.0.0/0 Význam polí obsažených v
Interface
jsme již viděli když jsme vygenerovali konfiguraci serveru. Zde jsme právě přizpůsobili hodnoty našemu klientovi (bude mít10.0.0.2
adresu ve VPN).V této konfiguraci jsme použili novou sekci
[Peer]
. V něm můžeme specifikovat informace vztahující se k peerovi, v tomto případě k tomu, který používáme jako „server“. Pole, která jsme použili, jsou:
- PublicKey
- Koncový bod
- Povolené adresy IP
V PublicKey pole, uvedeme veřejné klíč partnera, tedy v tomto případě veřejný klíč, který jsme vygenerovali na serveru.
Koncový bod je veřejná IP adresa nebo název hostitele partnera následovaného dvojtečkou a číslem portu, na kterém peer naslouchá (v našem případě
51820
).Nakonec byla hodnota předána do AllowedIPs pole, je čárkami oddělený seznam IP adres a masky podsítě s notací CIDR. Povolen bude pouze provoz směrovaný na peer, který pochází ze zadaných adres. V tomto případě jsme použili
0.0.0.0/0
jako hodnota:funguje jako „catch-all“ hodnota, takže veškerý provoz bude odeslán na VPN peer (server).Stejně jako na straně serveru jsme nastavili příslušná oprávnění a přesunuli klíče a konfigurační soubor do
/etc/wireguard
adresář:$ chmod 600 client_public_key client_private_key wg0.conf$ sudo mv client_public_key client_private_key wg0.conf /etc/wireguardS konfiguračním souborem na místě můžeme spustit službu:
$ sudo systemctl enable --now wg-quick@wg0Nakonec
[Peer]
sekce týkající se našeho klienta, musí být přidán do konfiguračního souboru, který jsme dříve vytvořili na serveru . Přikládáme následující obsah:[Peer]PublicKey =Povolené IP =10.0.0.2/32 V tomto okamžiku restartujeme službu:
$ sudo systemctl restart wg-quick@wg0Informace o přidruženém peeru by nyní měly být uvedeny ve výstupu
wg
příkaz:$ sudo wginterface:wg0 veřejný klíč:nNx3Zpcv9D2dtgHDsoYGBNr64zG5jTJ4Z4T2sE759V4=soukromý klíč:(skrytý) naslouchací port:51820peer:t5pKKg5/9fJKiU60lxC2000:00.0V tuto chvíli bychom měli být z „klientského“ systému schopni pingnout server na
10.0.0.1
adresa:$ ping -c 3 10.0.0.1PING 10.0.0.1 (10.0.0.1) 56(84) bajtů dat.64 bajtů od 10.0.0.1:icmp_seq=1 ttl=64 čas=2,82 ms0.01 bajtů od 1.01. :icmp_seq=2 ttl=64 čas=38,0 ms64 bajtů od 10.0.0.1:icmp_seq=3 ttl=64 čas=3,02 ms--- 10.0.0.1 statistika ping ---3 odeslané pakety, 3 přijaté, 0 % ztráta paketů, čas 2003 msrtt min/avg/max/mdev =2,819/14,613/37,999/16,536 msZávěry
V tomto tutoriálu jsme viděli, jak vytvořit VPN pomocí Wireguard na nejnovější stabilní verzi Ubuntu:20.04 Focal Fossa. Software se opravdu snadno instaluje a konfiguruje, zvláště ve srovnání s jinými řešeními, jako je například OpenVpn.
Viděli jsme, jak vygenerovat veřejné a soukromé klíče použité pro naše nastavení a jak nakonfigurovat server i klienta tak, aby veškerý provoz byl přesměrován na VPN. Podle zadaných pokynů budete mít funkční nastavení. Pro více informací se prosím podívejte na stránku projektu.
Sledujte Netflix na Ubuntu 20.04 Focal Fossa Linux Desktop Chyba při řešení dočasného selhání na Ubuntu 20.04 Focal Fossa LinuxUbuntu