Jelikož se WireGuard budoucího jádra Linux 5.6, rozhodl jsem se podívat, jak nejlépe integrovat tuto VPN s mým .
Hardware
- Raspberry Pi 3 s LTE modulem a veřejnou IP adresou. Zde bude VPN server (dále v textu nazýván edgewalker)
- Telefon s Androidem, který by měl používat VPN pro veškerou komunikaci
- Notebook s Linuxem, který by měl používat VPN pouze v rámci sítě
Každé zařízení, které se připojuje k VPN, by mělo mít možnost připojit se ke všem ostatním zařízením. Například telefon by se měl moci připojit k webovému serveru na notebooku, pokud jsou obě zařízení součástí sítě VPN. Pokud bude nastavení dostatečně jednoduché, možná zvážím připojení k VPN i desktopu (přes Ethernet).
Vzhledem k tomu, že drátová a bezdrátová připojení se s časem stávají stále méně bezpečnými (, a ), vážně zvažuji možnost použití WireGuard pro všechna má zařízení, bez ohledu na to, v jakém prostředí pracují.
Instalace softwaru
WireGuard poskytuje pro většinu distribucí Linuxu, Windows a macOS. Aplikace pro Android a iOS jsou k dispozici prostřednictvím aplikačních obchodů.
Mám poslední Fedora Linux 31, a před instalací jsem si lenivě nepřečetl příručku. Jen jsem našel balíčky wireguard-tools, nainstaloval je a pak jsem nechápal, proč nic nefunguje. Další výzkum ukázal, že nemám nainstalovaný balíček wireguard-dkms (s síťovým ovladačem), a ten nebyl v repozitáři mé distribuce.
Kdybych si přečetl pokyny, udělal bych správné kroky:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Na Raspberry Pi mám nainstalovanou distribuci Raspbian Buster, tam už je balíček wireguard, nainstalujeme ho:
$ sudo apt install wireguardNa telefonu Android jsem nainstaloval aplikaci z oficiálního katalogu Google App Store.
Instalace klíčů
Pro autentizaci uzlů WireGuard používá jednoduchý systém privátního/publicního klíče pro autentizaci uzlů VPN. Můžete snadno vytvořit VPN klíče pomocí následujícího příkazu:
$ wg genkey | tee wg-laptop-private.key | wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key | wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key | wg pubkey > wg-mobile-public.keyTohoto získáváme tři páry klíčů (šest souborů). Nebudeme odkazovat na soubory v konfiguracích, ale zkopírujeme sem obsah: každý klíč je jedna řádka v base64.
Vytvoření konfiguračního souboru pro VPN server (Raspberry Pi)
Konfigurace je docela jednoduchá, vytvořil jsem následující soubor /etc/wireguard/wg0.conf:
[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey =
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE
[Peer]
# laptop
PublicKey =
AllowedIPs = 10.200.200.2/32
[Peer]
# mobilní telefon
PublicKey =
AllowedIPs = 10.200.200.3/32Několik poznámek:
- Do příslušných míst je nutné vložit řádky ze souborů s klíči.
- Moje VPN používá interní rozsah.
10.200.200.0/24 - Pro příkazy
PostUp/PostDownmám uvedený externí síťový rozhraní wwan0, u vás to může být jiné (např. eth0).
VPN síť se snadno spouští následujícím příkazem:
$ sudo wg-quick up wg0 Jedna maličkost: jako DNS server jsem použil dnsmasq s vázáním na síťové rozhraní br0, také jsem přidal zařízení wg0 na seznam povolených zařízení. V dnsmasq se to provádí přidáním nového řádku se síťovým rozhraním do konfiguračního souboru. /etc/dnsmasq.conf, například:
interface=br0
interface=wg0Kromě toho jsem přidal pravidlo iptable, aby povolil provoz na naslouchajícím UDP portu (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTNyní, když vše funguje, můžeme nastavit automatické spuštění VPN tunelu:
$ sudo systemctl enable wg-quick@wg0.serviceKonfigurace klienta na notebooku
Na notebooku vytvoříme konfigurační soubor /etc/wireguard/wg0.conf s těmito stejnými nastaveními:
[Interface]
Address = 10.200.200.2/24
PrivateKey =
[Peer]
PublicKey =
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820Poznámky:
- Místo edgewalker je nutné uvést veřejnou IP nebo hostitele VPN serveru.
- Pokud jsme nainstalovali
AllowedIPsna10.200.200.0/24, používáme VPN pouze pro přístup k interní síti. Provoz na všechny ostatní IP adresy/serverů poputuje stále přes "běžné" otevřené kanály. Také bude použit přednastavený DNS server na notebooku.
Pro testování a automatické spuštění použijeme stejné příkazy. wg-quick a systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceNastavení klienta na Android telefonu
Pro telefon Android vytvoříme velmi podobný konfigurační soubor (pojmenujme ho mobile.conf):
[Interface]
Address = 10.200.200.3/24
PrivateKey =
DNS = 10.200.200.1
[Peer]
PublicKey =
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820 Na rozdíl od konfigurace na notebooku by měl telefon používat náš VPN server jako DNS server (řádek . Vytvořte A-záznam blog a určete pro něj nějakou fiktivní IP (to je oficiální), a také přesměrovávat veškerý provoz přes VPN tunel (AllowedIPs = 0.0.0.0/0).
Místo kopírování souboru na mobilní zařízení jej lze převést na QR kód:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confQR kód se zobrazí v konzoli jako ASCII. Lze jej naskenovat z aplikace Android VPN a automaticky nastavit VPN tunel.
Výstup
Nastavení WireGuard je ve srovnání s OpenVPN prostě kouzelné.
Zdroj: habr.com
