Od WireGuard
Оборудование
- 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á (
Instalace softwaru
WireGuard poskytuje
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 wireguard
Nainstaloval jsem si aplikaci do telefonu s Androidem
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.key
Zí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/32
Pá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
/PostDown
Má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=wg0
Také jsem přidal pravidlo iptable pro povolení provozu na naslouchajícím portu UDP (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Nyní, když vše funguje, můžeme zaregistrovat automatické spuštění tunelu VPN:
$ sudo systemctl enable [email protected]
Konfigurace 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:51820
Poznámky:
- Místo edgewalker musíte zadat veřejnou IP nebo hostitele serveru VPN
- Nastavením
AllowedIPs
na10.200.200.0/24
VPN 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 [email protected]
Nastavení 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.conf
QR 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