WireGuard VPN: Instalace a konfigurace VPN serveru a klientů

WireGuard VPN je zcela bezplatná softwarová aplikace, která nám umožní vytvořit tunely VPN. Tento kompletní software zahrnuje všechny potřebné komunikační a kryptografické protokoly k vytvoření virtuální soukromé sítě mezi několika klienty a serverem. WireGuard poskytuje lepší výkon než protokol IPsec a OpenVPN (jak v rychlosti, tak v latenci připojení), dnes vysvětlíme jeho hlavní funkce, jak je snadno nainstalovat a nakonfigurovat.

drátěný strážce-14

Funkce WireGuard VPN

WireGuardVPN je software vytvořit virtuální privátní síť (VPN) velmi jednoduché nastavení , velmi rychle (rychlejší než IPsec a OpenVPN) a používá nejmodernější kryptografie ve výchozím nastavení , bez nutnosti výběru mezi různými symetrickými šifrovacími algoritmy, asymetrickými a hashovacími. Cílem WireGuard VPN je stát se standardem a více domácích uživatelů a podniků začít používat, namísto použití IPsec nebo populárního OpenVPN, které je obtížnější konfigurovat a zpomalit. Tento software je navržen tak, aby jej mohli používat všichni diváci, a to jak pro domácí uživatele, tak pro superpočítače.

S WireGuard VPN není nutné spravovat připojení , starejte se o stav samotné virtuální privátní sítě, spravujte procesy nebo vědějte, co je pod softwarem, aby to fungovalo, stejně jako IPsec, kde je často nutné podívat se na protokoly a zjistit, co se děje. Další výhodou je, že konfigurace je extrémně základní, ale velmi silná.

Tento software je L3 VPN , to je ono používá pouze tunelování , nestává se to jako OpenVPN, kde máme možnost pracovat v transportním režimu nebo v tunelovém režimu. V tomto případě budeme vždy používat režim tunelu, navíc je kompatibilní s oběma Sítě IPv4 a IPv6 , navíc může zapouzdřit pakety IPv4 do IPv6 a naopak. Protokol transportní vrstvy používaný programem WireGuard je UDP , takže v našem routeru, který provádí NAT, musíme otevřít určitý port (vybrat, lze jej změnit).

Operační systém Kompatibilita

Tento nový software VPN byl poprvé vydán pro Linux Jádro, ale je platformy , protože je kompatibilní s Windows, Linux, MacOS, FreeBSD, Android a také iOS operační systémy . Jednou ze silných stránek tohoto softwaru je to, že konfigurace klienta a serveru je v různých operačních systémech stejná, a to pomocí stejné syntaxe, takže můžete nakonfigurovat server a klienty v systému Linux a poté „předat“ konfiguraci dalším zařízením s jiné operační systémy uvnitř.

Použitá kryptografie

U protokolů IPsec a OpenVPN je nutné, aby se klient i server „dohodli“ na kryptografických protokolech, které budou použity, a to jak ve fázi 1, tak ve fázi 2 (IPsec) a v řídicím a datovém kanálu (OpenVPN) ), jinak nebude spojení navázáno správně. WireGuard poskytuje celý kryptografický „balíček“ , zajišťující připojení bez nutnosti vybírat cokoli. Pokud je v jednom bodě jeden z kryptografických protokolů používaných touto VPN považován za nezabezpečený, je stejně snadné jako spuštění druhé verze WireGuard s novým protokolem, který nemá bezpečnostní chybu, a mezi klienty a serverem bude uvedl, že používáme „verzi 2“, což je pro nás zcela transparentní.

Dalším velmi důležitým detailem je, že tato VPN používá velmi malý zdrojový kód . Ve srovnání se StrongSwan nebo OpenVPN existuje jen velmi málo řádků kódu, takže audity by mohly být prováděny ve velmi krátkém čase, bude také snazší najít možné chyby zabezpečení nebo bezpečnostní chyby. S menším počtem řádků kódu je plocha možného útoku na programování VPN také menší.

WireGuard VPN v současné době používá ChaCha20 pro symetrické šifrování, ověřeno pomocí Poly1305 , pomocí konstrukce AEAD. To také používá Curve25519 pro ECDH, BLAKE2 pro hašování, SipHash24 for hashtable klíče a HKDF pro odvozování klíčů, což znamená, že používáme nejmodernější kryptografické algoritmy s cílem zajistit maximální bezpečnost a výkon.

Podpora roamingu a zabíjení

Tento software je navržen tak, aby byl schopen snadno a rychle se potulují , pokud naše zařízení změní sítě a logicky změní veřejnou IP, například když přejdeme ze sítě Wi-Fi a sítě 4G / LTE našeho operátora, připojení VPN zůstane zrušeno, protože se rychle znovu autentizují pomocí VPN server, takže budeme vždy připojeni k VPN.

Můžeme také povolte Kill-Switch na zařízení , tímto způsobem, pokud je připojení VPN přerušeno, bude samotný software také zodpovědný za přerušení veškerého síťového provozu, dokud nebude připojení VPN obnoveno, aby nedošlo k navigaci bez ochrany, kterou nám tato VPN poskytuje.

Instalace WireGuard VPN

Instalace tohoto softwaru je opravdu snadná, stačí přejděte na oficiální web WireGuard a stáhněte spustitelný soubor pro operační systémy Windows nebo MacOS. Pokud používáte operační systém založený na Linuxu s odpovídajícími úložišti, budete pravděpodobně muset přidat konkrétní úložiště WireGuard, protože ve výchozím nastavení není ve větev „stabilní“.

Například jsme nainstalovali server VPN v nejnovější verzi systému Debian. Při instalaci jsme postupovali podle kroků uvedených na oficiálních webových stránkách. K správnému provedení instalace jsou vyžadována oprávnění superuživatele.

 sudo echo "deb http://deb.debian.org/debian/ unstable main"> /etc/apt/sources.list.d/unstable.list sudo printf 'Package: * / nPin: release a = unstable / nPin- Priorita: 90 / n '> /etc/apt/preferences.d/limit-unstable sudo apt update sudo apt install wireguard

Nesmíme zapomenout, že tato VPN je také kompatibilní s operačními systémy, jako jsou FreeBSD, OpenBSD a dokonce s OpenWRT pro směrovače, protože ji jednoduše instalujte pomocí „opkg“, protože obvykle je nainstalován veškerý další software.

Pokud se chystáte nainstalovat klienta VPN do smartphonu se systémem Android nebo iOS, máme v současné době oficiální aplikace, takže jej můžete nainstalovat bez problémů z Google Play a App Store v tomto pořadí:

Konfigurace WireGuard: veřejné, soukromé klíče a konfigurační soubory

Jakmile jsme správně nainstalovali WireGuard, jak na počítači, který funguje jako server, tak na všech klientech, které se chceme připojit, je nutné jej nakonfigurovat. První věc, kterou musíme udělat, je vytvořit pár veřejného a soukromého klíče na serveru i na všech klientech, které se chceme připojit. K vygenerování klíčů a také ke konfiguraci serveru jsme použili operační systém Debian, ale mohli jsme to udělat také přímo v softwaru Windows.

Cesta ke spuštění serveru WireGuard na Debianu je / etc / wireguard /, takže se chystáme na tuto cestu pomocí následujícího příkazu:

cd /etc/wireguard/

Generování sudého veřejného-soukromého klíče pro server

Chcete-li vygenerovat pár veřejných a soukromých klíčů přímo v tomto umístění, stačí vložit:

wg genkey | tee claveprivadaservidor | wg pubkey > clavepublicaservidor

Nyní budeme mít dva soubory, jeden s veřejným klíčem a jeden s privátním:

  • Soukromý klíč: 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
  • Veřejný klíč: xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =

Tyto klíče použijeme pro WireGuard VPN «server».

Generování soukromého a soukromého klíče pro klienta

Abychom vygenerovali další pár veřejných a soukromých klíčů, které použijeme v klientovi, můžeme je vytvořit v nové složce nebo je vytvořit ve stejném umístění, ale pod jiným jménem.

wg genkey | tee claveprivadacliente1 | wg pubkey > clavepublicacliente1

Nyní budeme mít dva soubory, jeden s veřejným klíčem a jeden s privátním:

  • Soukromý klíč: yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
  • Veřejný klíč: 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =

Tyto klíče jsou ty, které použijeme pro klienta WireGuard VPN.

Konfigurační soubor serveru

Konfigurace serveru WireGuard je ve srovnání se servery IPsec nebo OpenVPN poměrně jednoduchá, musíme však vzít v úvahu několik věcí, které vysvětlíme níže.

Na serveru budeme muset mít “ Rozhraní ”, V této sekci můžeme označit soukromá IP adresa který identifikuje server, když se klient připojí. Musíme si uvědomit, že tato VPN je L3, takže můžeme dát jakoukoli soukromou IP adresu, která se v daném okamžiku nepoužívá. Například v OpenVPN je výchozí podsíť 10.8.0.0/24, zde můžeme umístit stejnou nebo jakoukoli jinou podsíť 192.168.2.0/24 (a 192.168.2.1 je samotný server a ostatní IP, které jsou klienty). . Se syntaxí « Adresa »Umístíme VPN síť, kterou chceme.

V " PrivateKey »Budeme muset zadat soukromý klíč, který jsme dříve pro server vygenerovali. V " Poslouchej »Umístíme UDP port, který chceme použít pro server, tento port je ten, který budeme muset později„ otevřít “v NAT, pokud budeme za routerem s NAT.

Nakonec v této sekci «Rozhraní» můžeme také definovat příkazy, které mají být provedeny po zvednutí virtuálního rozhraní pomocí «PostUp» a po vyvolání virtuálního rozhraní pomocí «PostDown». Jak vidíte, máme to v současné době komentováno, protože nechceme dělat NAT proti tomuto rozhraní, ale mohlo by to být dokonale provedeno.

V sekci “ Peer ”Je místo, kde budeme muset dát seznam klientů, kterým se můžeme připojit. V tomto případě připojíme pouze «peer», takže váš veřejný klíč definujeme pomocí « veřejný klíč »Které jsme vytvořili dříve (nebo že nám klient poskytl, protože je možné, že ho vygeneroval), a také můžeme uvést, zda povolíme připojení tohoto klienta se specifickou IP adresou. S « PovolenéIPs »Direktivu můžeme filtrovat zdrojové IP adresy, pokud vložíme 0.0.0.0/0, znamená to, že povolíme jakoukoli IP adresu.

[Rozhraní] Adresa = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

#PostUp = iptables -A dopředu -i% i -j PŘIJMOUT; iptables -A dopředu -o% i -j PŘIJMOUT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
#PostDown = iptables -D dopředu -i% i -j PŘIJMOUT; iptables -D dopředu -o% i -j PŘIJMOUT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
PovolenéIPs = 0.0.0.0/0

Pokud chceme přidat více „vrstevníků“, jednoduše je definujte jednotlivě v konfiguračním souboru takto:

[Rozhraní] Adresa = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

#PostUp = iptables -A dopředu -i% i -j PŘIJMOUT; iptables -A dopředu -o% i -j PŘIJMOUT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
#PostDown = iptables -D dopředu -i% i -j PŘIJMOUT; iptables -D dopředu -o% i -j PŘIJMOUT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
PovolenéIPs = 0.0.0.0/0

[Peer] PublicKey = veřejný klíč klienta 2
PovolenéIPs = 0.0.0.0/0

[Peer] PublicKey = veřejný klíč zákazníka 3
PovolenéIPs = 0.0.0.0/0

[/ kód]

Konfigurační soubor lze nazvat «wg0.conf», protože WireGuard vytváří virtuální rozhraní s tímto názvem, což je ideální pro jejich dokonalé rozlišení. Chcete-li spustit tento konfigurační soubor, stačí spustit:

root@debian-vm:/etc/wireguard# wg-quick up wg0

Když ji spustíte, WireGuard bude mít na starosti vytváření virtuálního rozhraní, vkládání IP adresy, MTU a dokonce vytváření odpovídajících tras ve směrovací tabulce:

root@debian-vm:/etc/wireguard# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.2.1 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Konfigurační soubor pro klienty

Konfigurace klienta WireGuard je ve srovnání se servery IPsec nebo OpenVPN poměrně jednoduchá, musíme však vzít v úvahu několik věcí, které vysvětlíme níže.

V klientovi budeme muset mít “ Rozhraní ”, V této sekci můžeme označit soukromá IP adresa který identifikuje klienta, když se připojíme. Musíme si uvědomit, že tato VPN je L3, takže můžeme dát libovolnou soukromou IP adresu, která se v daném okamžiku nepoužívá. Například v OpenVPN je výchozí podsíť 10.8.0.0/24, zde můžeme také dát stejnou nebo jakoukoli jinou podsíť 192.168.2.0/24 (a 192.168.2.1 je samotný server a adresa 192.168.2.2 od nynějška , být klienty, se syntaxí “ Adresa „Umístíme VPN síť, kterou chceme.

V " PrivateKey »Budeme muset zadat soukromý klíč, který jsme pro klienta dříve vygenerovali.

V sekci “ Peer „Tam budeme muset dát veřejný klíč“ veřejný klíč “Serveru WireGuard, ke kterému se chystáme připojit, to znamená, že nám musel tento veřejný klíč poskytnout server. Při této příležitosti můžeme také použít PovolenéIPs “, Ale operace je jiná, při této příležitosti můžeme definovat, zda chceme pouze procházet VPN do určité podsítě (nebo několika podsítí), nebo chceme přesměrovat veškerý internetový provoz pomocí virtuální privátní sítě. Pokud umístíme podsítě oddělené čárkami, můžeme získat přístup k několika serverům, které máme na serveru, pokud chceme přeposlat veškerý provoz, jednoduše vložíme 0.0.0.0/0, jak se to stane u IPsec.

Nakonec s « Konečný bod »Direktivu definujeme veřejnou IP adresu serveru, na kterém běží WireGuard VPN, následovaný dvěma body (:) použitého portu UDP. Musíme si uvědomit, že WireGuard používá UDP, takže bychom jej neměli filtrovat na firewallech.

Software a komunikace s WireGuard se snaží předat co nejvíce nepozorovaně, pokud se nepoužívá, to znamená, že neprovádí nepřetržité odesílání dat přes VPN, aby byl tunel aktivní, ideální pro úsporu baterie a mobilních dat na smartphonech. Ve většině obvyklých konfigurací to funguje perfektně, ale pokud jsme za NAT nebo firewall, je možné, že se komunikace přeruší, protože se nepřenášejí žádná data, takže je nutné nakonfigurovat „keep alive“. Chcete-li konfigurovat Keep Alive, jednoduše označte direktivu „PersistentKeepAlive“ a zadejte celé číslo, které znamená sekundy udržení života. Podle oficiální dokumentace je nastavení 25 sekund dostatečné pro většinu bran firewall a systémů NAT, pokud nastavíme 0, deaktivuje tuto funkci. Pokud jsme za NATem nebo firewallem a chceme přijímat příchozí spojení po dlouhé době bez provozu, bude tato směrnice nutná, jinak ji nemusíme dát.

[Rozhraní] PrivateKey = yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
Adresa = 192.168.2.2/32

[Peer] PublicKey = xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =
PovolenéIPs = 0.0.0.0/0
Koncový bod = 10.10.2.86:51820

#PersistentKeepalive = 25

V operačních systémech Windows můžeme importovat stejnou konfiguraci a budeme ji mít připravenou k připojení, i když se můžeme připojit od nuly, ale generovaný veřejný klíč musíme „předat“ serveru WireGuard.

Je také velmi důležité podívat se na protokoly WireGuard, abyste ověřili, zda bylo připojení VPN správně navázáno. Nemůžeme vložit do sekce „Interface / Address“ soukromou IP adresu, která je již používána u klientů Windows, protože budeme mít chybu v připojení.

Jak jste viděli, konfigurace WireGuard VPN je opravdu jednoduchá a rychlá

Výkon WireGuard VPN ve srovnání s L2TP / IPsec a OpenVPN

V RedesZone jsme zkontrolovali výkon WireGuard VPN ve srovnání s L2TP / IPsec a OpenVPN, testy byly provedeny v místní síti, abychom se vyhnuli problémům s operátorem, takže můžeme změřit skutečný maximální výkon, který nám dokáže poskytnout hardware specifický.

Konfigurace serveru VPN, kterou jsme použili (pro L2TP / IPsec, OpenVPN a WireGuard), je následující:

  • QNAP TS-1277: procesor AMD Ryzen 7 2700; Paměť RAM: 64 GB RAM DDR4; Připojení k síti: QNAP QXG-10G2T-107 při 10 Gb / s kabelem Cat7 a Přepínač D-Link DXS-1210-10TS .
  • Software VPN pro L2TP / IPsec a OpenVPN (pomocí UDP) je QVPN 2 z QNAP
  • Ve druhém testu s OpenVPN (pomocí UDP) a AES-256-GCM jsme použili Virtualization Station s Debianem.
  • iperf3 nainstalován ručně v QTS a také ve virtualizovaném Debianu.

Konfigurace klienta VPN, kterou jsme použili (pro L2TP / IPsec, OpenVPN a WireGuard), je následující:

  • PC s procesorem AMD Ryzen 7 3800x; Paměť RAM: 32 GB RAM DDR4 3200 MHz; Připojení k síti: ASUS XG-C100C při 10 Gbps s kabelem CAT7 a Přepínač D-Link DXS-1210-10TS pro spojení obou zařízení . Operační systém používaný v testech: Windows 10 1909.
  • Klient Windows 10 L2TP / IPsec
  • Poslední verze OpenVPN (2.4.8)
  • iperf 3 ve Windows 10.

Výkon získaný při zkouškách je následující:

Jak vidíte, skutečná rychlost WireGuard je dvojnásobná oproti L2TP / IPsec nebo OpenVPN, takže můžeme říci, že tato VPN je opravdu rychlá.

Doufáme, že vám tento instalační návod pomůže, a vy můžete snadno nasadit servery a klienty WireGuard pro bezpečné připojení k našemu domovu, podnikání nebo internetu odkudkoli bezpečným způsobem.