Od WireGuard budoucího jádra Linuxu 5.6 jsem se rozhodl zjistit, jak nejlépe integrovat tuto VPN s mojí .
Оборудование
- Raspberry Pi 3 s LTE modulem a veřejnou IP. K dispozici bude VPN server (dále jen edgewalker)
- Telefon Android, který musí používat VPN pro veškerou komunikaci
- Linuxový notebook, který potřebuje používat VPN pouze uvnitř sítě
Každé zařízení, které se připojuje k síti VPN, se musí umět připojit ke každému jinému zařízení. Například telefon by měl být schopen se připojit k webovému serveru na notebooku, pokud jsou obě zařízení součástí sítě VPN. Pokud je nastavení dostatečně jednoduché, můžete přemýšlet o připojení k VPN a desktopu (přes Ethernet).
Vzhledem k tomu, že kabelová a bezdrátová připojení jsou postupem času méně bezpečná (, и ), vážně uvažuji o použití WireGuard pro všechna svá zařízení, bez ohledu na to, v jakém prostředí se nacházejí.
Instalace softwaru
WireGuard poskytuje pro většinu distribucí Linuxu, Windows a macOS. Aplikace pro Android a iOS jsou dodávány prostřednictvím katalogů aplikací.
Mám nejnovější Fedora Linux 31 a byl jsem líný číst manuál před instalací. Právě jsem našel balíčky wireguard-tools, nainstaloval je a pak nemohl přijít na to, proč nic nefunguje. Další šetření odhalilo, že balíček nemám nainstalovaný wireguard-dkms (se síťovým ovladačem) a nebyl v úložišti mé distribuce.
Kdybych si přečetl návod, udělal bych správné kroky:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Na svém Raspberry Pi mám nainstalovanou distribuci Raspbian Buster, je tam již balíček wireguard, nainstalujte to:
$ sudo apt install wireguardNainstaloval jsem si aplikaci do telefonu s Androidem z oficiálního katalogu Google App Store.
Instalace klíčů
K ověřování uzlů používá Wireguard jednoduché schéma soukromého/veřejného klíče k ověřování uzlů VPN. Klíče VPN můžete snadno vytvořit 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.keyZískáme tak tři páry klíčů (šest souborů). Nebudeme odkazovat na soubory v konfiguracích, ale zkopírujeme obsah sem: každý klíč je jeden řádek v base64.
Vytvoření konfiguračního souboru pro server VPN (Raspberry Pi)
Konfigurace je celkem jednoduchá, vytvořil jsem následující soubor /etc/wireguard/wg0.conf:
[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
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 = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32
[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32Pár poznámek:
- Na příslušná místa je třeba vložit řádky ze souborů s klíči
- Moje VPN používá vnitřní rozsah
10.200.200.0/24 - Pro týmy
PostUp/PostDownMám externí síťové rozhraní wwan0, můžete mít jiné (například eth0)
Síť VPN se snadno vyvolá pomocí následujícího příkazu:
$ sudo wg-quick up wg0 Jeden malý detail: jako DNS server jsem použil dnsmasq připojený k síťovému rozhraní br0, přidal jsem i zařízení wg0 do seznamu povolených zařízení. V dnsmasq se to dělá 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=wg0Také jsem přidal pravidlo iptable pro povolení provozu na naslouchajícím portu UDP (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTNyní, když vše funguje, můžeme zaregistrovat automatické spuštění tunelu VPN:
$ sudo systemctl enable wg-quick@wg0.serviceKonfigurace klienta notebooku
Na notebooku vytvořte konfigurační soubor /etc/wireguard/wg0.conf se stejným nastavením:
[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820Poznámky:
- Místo edgewalker musíte zadat veřejnou IP nebo hostitele serveru VPN
- Nastavením
AllowedIPsna10.200.200.0/24VPN používáme pouze pro přístup do vnitřní sítě. Provoz na všechny ostatní IP adresy/servery bude nadále procházet „běžnými“ otevřenými kanály. Použije se také předkonfigurovaný server DNS na notebooku.
Pro testování a automatické spouštění používáme stejné příkazy wg-quick и systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceNastavení klienta na telefonu Android
Pro telefon Android vytvoříme velmi podobný konfigurační soubor (nazvěme ho mobile.conf):
[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820 Na rozdíl od konfigurace notebooku by měl telefon používat náš server VPN jako svůj DNS server (řetězec DNS), jakož i předat veškerý provoz tunelem VPN (AllowedIPs = 0.0.0.0/0).
Místo kopírování souboru do mobilního zařízení jej můžete převést na QR kód:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confQR kód bude odeslán do konzole jako ASCII. Lze jej naskenovat z aplikace Android VPN a automaticky nastavit VPN tunel.
Výkon
Nastavení WireGuard je ve srovnání s OpenVPN prostě kouzelné.
Zdroj: www.habr.com
