WireGuard je jednoduchá VPN, která vznikla původně pro linux a velmi rychle se rozšířila do zbytku počítačového světa. Vyniká především svou bezpečností a nenáročností na konfiguraci a obsluhu. Další detaily najdete v našem seriálu o WireGuardu, případně si můžete vše vyzkoušet v našem samostatném školení WireGuard.
Co se dozvíte v článku
MikroTik
Síťové prvky lotyšské společnosti MikroTik jsou oblíbené zejména díky rozumné ceně, za kterou nabízejí ohromné množství funkcí a dlouhou podporu. Položka WireGuard je součástí operačního systému RouterOS od čerstvé verze 7, která vyšla na konci loňského roku. Po přihlášení na zařízení se ujistěte, že máte tuto verzi nainstalovanou v System → Packages.
Že je vše připraveno poznáte také podle toho, že v menu v rozhraní WebFig uvidíte samostatnou položku WireGuard s modrou ikonou.
1. Vytvoření rozhraní
Nejprve musíme vytvořit nové rozhraní typu WireGuard. Zvolíme tedy WireGuard → karta WireGuard → Add New. Otevře se nám formulář pro vytvoření nového rozhraní, ve kterém můžeme rozhraní nějak pojmenovat a poté klepneme na Apply. Tím rozhraní vznikne a automaticky se mu přidělí UDP port a vygenerují se soukromý i veřejný klíč.
Soukromý klíč by neměl nikdy opustit prostředí našeho routeru, budeme potřebovat jen klíč veřejný, který přeneseme do všech zařízení (peer), která budeme chtít ke svému MikroTiku připojit.
2. Přidání protistrany
Pro přidání protistrany budeme potřebovat znát její veřejný klíč. Každý klient je schopen jej vygenerovat. V Linuxu to provedeme příkazem wg genkey
, celý postup najdete v samostatném článku. Postup pro Android naleznete níže. Pokud byste spojovali dva MikroTiky, na druhém z nich zopakujete předchozí krok – založení rozhraní. Tím získáte jeho veřejný klíč.
Otevřeme WireGuard → kartu Peers → Add New. Otevře se nám formulář pro přidání nového partnera. Musíme přidat minimálně jeho veřejný klíč a IP adresu povolenou uvnitř naší VPN. Adresní rozsah naší nové virtuální sítě nesmí kolidovat s žádnou skutečnou sítí, do které jsme připojeni. Dejme tomu, že uvnitř VPN budeme používat rozsah 10.200.0.0/24. MikroTik dostane 10.200.0.1 a náš první klient bude mít 10.200.0.2. Vložíme tedy jeho adresu do příslušného formuláře.
Volitelně můžeme uvést skutečnou adresu (Endpoint) a port protistrany (Endpoint Port), což dává smysl jen v případě, že je pro nás protistrana síťově dostupná. Pokud by naši protistranu představoval linuxový server s veřejnou adresou, napíšeme ji sem. Alespoň jeden z partnerů musí mít tuto položku vyplněnou, aby se komunikace navázala. Předpokládejme, že náš MikroTik má veřejnou adresu a klient ji mít obvykle nebude, proto ji sem teď nevyplníme.
Dále máme možnost sem vyplnit čas, po kterém budou protistraně posílány prázdné pakety pro udržení spojení přes NAT. Můžeme také přidat komentář (Comment), abychom se v jednotlivých zařízeních vyznali.
Nyní stačí stisknout OK a přidali jsme prvního partnera. Pokud budeme mít ve své VPN další zařízení, musíme je takto všechna přidat. Na každém vytvoříme pár klíčů, přidělíme mu jednu vnitřní IP adresu z rozsahu a přidáme ho jako položku na MikroTiku.
3. Přidání adresy na rozhraní
Máme zvolený adresní rozsah a jednu z adres jsme přidělili klientovi. Zatím ale nemá svou adresu přidělenu samotný MikroTik. Proto navštívíme položku IP → Addresses → Add New. Tady vyplníme jen adresu přidělenou v rámci VPN, nezapomeňte přidělit správný prefix pro celou síť a přidělit ji na rozhraní WireGuardu podle jména.
Tím jsme přidělili IP adresu také na rozhraní WireGuardu v MikroTiku.
Tím máme hotovo. Pokud jsme postupovali správně, máme vytvořené rozhraní WireGuardu, přidělenou adresu a zařízené směrování provozu z nové sítě do správného rozhraní. Přidali jsme také prvního partnera, kterým může být například náš telefon s Androidem. Nyní zbývá ještě nastavit druhou stranu.
Totéž na příkazové řádce
Pokud se na MikroTiku kamarádíte více s příkazovou řádkou než s webovým rozhraním WebFig, můžete totéž udělat pomocí tří příkazů. U druhého z nich nezapomeňte doplnit veřejný klíč.
/interface/wireguard/add name=wireguard1 mtu=1420 listen-port=13231 /interface/wireguard/peers/add interface=wireguard1 allowed-address=10.200.0.2/32 persistent-keepalive=30s comment="telefon s androidem" public-key="FIXME" /ip/address/add interface=wireguard1 address=10.200.0.1/24
Telefon s Androidem
Na Androidu je potřeba nainstalovat aplikaci WireGuard z Google Play nebo z jiného zdroje (třeba F-Droid). Pro její použití budeme potřebovat znát veřejný klíč ze svého MikroTiku a také jeho IP adresu a UDP port, na kterém poslouchá jeho WireGuard. To vše vyčteme z webového rozhraní, které jsme před chvílí použili.
Spustíme aplikaci WireGuard a v ní vpravo dole stiskneme tlačítko plus. V menu můžeme zvolit, zda chceme importovat připravenou konfiguraci ze souboru, načísti ji z QR kódu nebo ji vytvořit ručně přímo v telefonu. Konfiguraci bychom si museli vytvořit na jiném zařízení, což jsme neudělali a není to ani potřeba. Vybereme tedy třetí položku a připravíme vše přímo na displeji.
Nejprve vyplníme název své nové sítě, poté klepneme na dvojitou šipku a necháme si tak jednoduše vygenerovat pár klíčů. Ten soukromý je nám skrytý a objeví se po kliknutí na puntíky a prokázání totožnosti (obvykle otiskem). My ho ale nepotřebujeme vidět, stačí nám veřejný klíč. Ten se po klepnutí zkopíruje do schránky a my si ho můžeme vložit do libovolné jiné aplikace a poslat třeba jako poznámku.
Do formuláře musíme ještě vyplnit svou adresu uvnitř VPN a také nějaký použitelný DNS resolver. Tím jsme nastavili svoje místní rozhraní.
Pod tímto formulářem je tlačítko Přidat peera, které nám umožní vyplnit další formulář, který se týká našeho partnera. U něj musíme vyplnit veřejný klíč, skutečnou IP adresu (Endpoint) a povolené IP adresy, které nám od něj mohou přicházet. Volitelně můžeme ještě opět zvolit čas posílání prázdných paketů pro udržení spojení přes NAT (Persistent keepalive).
Teď už stačí jen uložit pomocí ikony disketky v pravém horním rohu. Tím se nám vytvoří nová VPN v Androidu. Takto si můžeme vytvořit několik různých sítí a všechny je sem přidat. Pokud chceme některou z nich aktivovat, přepneme posuvný přepínač u jejího názvu. Nahoře v liště se nám objeví klíček, který značí, že telefon v danou chvíli využívá služeb VPN.
Pokud bychom chtěli přes VPN posílat provoz z větší sítě nebo z celého internetu, musíme povolit přijetí celého rozsahu, případně rovnou 0.0.0.0/0
, což značí libovolnou adresu. Pro IPv6 uvedeme adekvátní ::0/0
. Pokud bychom chtěli uvést více různých rozsahů, oddělíme je čárkou.
V tuto chvíli jsme schopni se jedním tapnutím připojit k MikroTiku, vytvořit tunel a obě zařízení spolu mohou komunikovat. Pokud to v seznamu IP adres na Androidu povolíme, může nám MikroTik posílat provoz z celé sítě a my do ní máme přístup a můžeme využívat jejich služeb.