V poslední době jsme o WireGuard hodně slyšeli, a protože byl nedávno přidán do repozitářů Kali, řekli jsme si, že to rychle zkusíme, abychom zjistili, o čem je ten povyk. Celkově jsme zjistili, že je to opravdu pěkné a rychlé řešení VPN na konfiguraci a možná by stálo za to ho vyzkoušet.
Začínáme
S WireGuard přidaným do repozitářů je instalace pěkná a snadná:
apt install wireguard resolvconf
A jsme pryč. Dále přichází čas na konfiguraci. Tady pro nás WireGuard opravdu zazářil, protože k uvedení do provozu netrvalo téměř nic.
Na serveru musíme vygenerovat pár veřejného/soukromého klíče a nastavit počáteční konfigurační soubor.
wg genkey | tee privatekey | wg pubkey > publickey
umask u=rwx,go= && cat > /etc/wireguard/wg0.conf << EOF
[Interface]
Address = 10.222.222.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = -SERVER PRIVATE KEY-
[Peer]
PublicKey = -CLIENT PUBLIC KEY-
AllowedIPs = 10.222.222.2/32
EOF
A stejný proces provedeme na klientovi, abychom vytvořili jeho pár klíčů a konfiguraci.
wg genkey | tee privatekey | wg pubkey > publickey
umask u=rwx,go= && cat /etc/wireguard/wg0.conf << EOF
[Interface]
Address = 10.222.222.2/32
PrivateKey = -CLIENT PRIVATE KEY-
DNS = 8.8.8.8
[Peer]
PublicKey = -SERVER PUBLIC KEY-
Endpoint = public.ip.of.server:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21
EOF
Jsou to docela jednoduché konfigurace, ale stojí za to upozornit na několik věcí. Nejprve musíte samozřejmě vložit výstup z párů klíčů do konfigurací podle potřeby. Řádek DNS na klientovi má navíc pomoci zabránit únikům DNS při použití vašeho místního výchozího serveru DNS. To můžete nebo nemusíte chtít změnit v závislosti na vašich potřebách.
Nejdůležitější je však řádek „AllowedIPs“. To bude řídit, co IP dělají nebo neprocházejí přes VPN. V tomto případě nastavíme klienta tak, aby vše směroval přes server VPN. Za chvíli si s tím pohrajeme více, ale podívejme se na spuštění této základní konfigurace.
Spustit a zastavit tunel je docela snadné.
# The VPN can be enabled using
wg-quick up wg0
# To disable the VPN:
wg-quick down wg0
# Information about the connection can be retrieved with following command:
wg show
A samozřejmě musíme povolit IP maškarádu a předávání IP na serveru.
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Takže máme tradiční konfiguraci VPN. Pokud hledáte pouze standardní nastavení VPN, v tomto okamžiku jste hotovi. Ve srovnání s používáním OpenVPN to má určité výhody, například toto řešení se zdá být mnohem rychlejší, konfigurace je mnohem jednodušší a je o něco nenápadnější v tom, že server nebude reagovat na pakety, které nemají správný pár klíčů s nimi spojený. Mysleli jsme si však, že by mohlo být zajímavé změnit konfiguraci tak, aby odrážela naši konfiguraci ISO of Doom, s klientem, který se automaticky připojí k serveru při spouštění a umožní serveru směrovat a přistupovat do klientské sítě.
WireGuard of DOOM!
Nejprve u našeho klienta rychle nastavíme předávání a maskování IP:
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Skvělé, když je to hotové, provádíme pár menších změn v našich konfiguracích. Nejprve na serveru změníme řádek „AllowedIPs“ tak, aby byla soukromá síť umístěna na stránce sestavy. To by vypadalo takto:
[Interface]
Address = 10.222.222.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = -SERVER PRIVATE KEY-
[Peer]
PublicKey = -CLIENT PUBLIC KEY-
AllowedIPs = 10.200.200.2/32, 192.168.2.0/24
Když se na serveru změnil jeden řádek, vyladíme klientský řádek „AllowedIPs“, abychom odstranili možnost směrovat vše na server VPN.
[Interface]
Address = 10.200.200.2/32
PrivateKey = -CLIENT PRIVATE KEY-
DNS = 8.8.8.8
[Peer]
PublicKey = -SERVER PUBLIC KEY-
Endpoint = public.ip.of.server:51820
AllowedIPs = 10.200.200.0/24
PersistentKeepalive = 21
A je to!
[email protected]:~# ping 192.168.2.22
PING 192.168.2.22 (192.168.2.22) 56(84) bytes of data.
64 bytes from 192.168.2.22: icmp_seq=19 ttl=63 time=50.2 ms
64 bytes from 192.168.2.22: icmp_seq=20 ttl=63 time=53.4 ms
64 bytes from 192.168.2.22: icmp_seq=21 ttl=63 time=48.1 ms
Nyní má server VPN přístup k podsítím na druhé straně WireGuard VPN.
Zabalení
Čas ukáže, zda WireGuard nahradí OpenVPN jako preferovanou VPN, nebo zda je poslední šuškanda jen vzrušením z používání nejnovějších hraček. V každém případě je hezké mít možnost to vyzkoušet a použít, pokud se hodí. Jak jsme zde viděli, je rozhodně snadné jej nastavit a v uživatelských případech je relativně univerzální.