Hlavní navigace

Návod: VPN WireGuard na routerech MikroTik a telefonech s Androidem

26. 1. 2022
Doba čtení: 6 minut

Sdílet

 Autor: MikroTik, Wireguard
Návod pro ty, kteří chtějí rozchodit VPN pomocí nástroje WireGuard a použít k tomu MikroTik. Ukážeme si, jak se k síti připojit s telefonem s operačním systémem Android.

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
  1. MikroTik
  2. Totéž na příkazové řádce
  3. Telefon s Androidem
  4. Často kladené otázky

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.


Autor: Petr Krčmář, Root.cz

Ž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íč.


Autor: Petr Krčmář, Root.cz

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.


Autor: Petr Krčmář, Root.cz

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.


Autor: Petr Krčmář, Root.cz

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.


Autor: Petr Krčmář, Root.cz

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í.


Autor: Petr Krčmář, Root.cz

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).


Autor: Petr Krčmář, Root.cz

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.

root_podpora

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.

Často kladené otázky

Od které verze je v RouterOS podpora VPN WireGuard?
Podpora je dostupná od RouterOS verze 7.
Kde vezmu veřejný klíč partnera (peera)?
Každý klient je schopen vygenerovat pár klíčů, můžeme z něj tedy veřejný klíč zkopírovat a přenést na druhou stranu.
Jaké síťové porty používá WireGuard?
WireGuard vždy používá pro spojení jeden UDP port, který si zvolíte. Nejčastěji je to 51820, ale může to být libovolný jiný volný port.
Musím mít pro použití WireGuardu veřejnou IP adresu?
Obě komunikující strany musejí být síťově dostupné, musejí se tedy na síti vidět. Pokud budete spojovat dvě zařízení ve vlastní síti, stačí vám privátní adresy. Pokud se budete chtít připojovat přes internet, alespoň jedna strana musí mít veřejnou adresu.
Projde WireGuard přes překlad adres (NAT)?
WireGuard nemá s průchodem přes NAT nejmenší problém. Jediný háček je v tom, že pokud obě strany zrovna nekomunikují, nepřenášejí se po síti žádná data. To obvykle vede u uzavření cesty přes NAT. Proto je možné v konfiguraci nastavit udržování cesty pomocí periodického odesílání paketů zvaných keepalive.

Byl pro vás článek přínosný?

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.