Pretože WireGuard
Оборудование
- Raspberry Pi 3 s LTE modulom a verejnou IP adresou. Tu bude VPN server (ďalej v texte nazývaný edgewalker)
- Telefón s Androidom, ktorý musí na všetku komunikáciu používať sieť VPN
- Linux laptop, ktorý by mal používať iba VPN v rámci siete
Každé zariadenie, ktoré sa pripája k sieti VPN, musí byť schopné pripojiť sa ku všetkým ostatným zariadeniam. Napríklad telefón by mal byť schopný pripojiť sa k webovému serveru na prenosnom počítači, ak sú obe zariadenia súčasťou siete VPN. Ak sa nastavenie ukáže ako celkom jednoduché, môžete premýšľať o pripojení pracovnej plochy k sieti VPN (cez Ethernet).
Berúc do úvahy, že káblové a bezdrôtové pripojenia sú postupom času čoraz menej bezpečné (
Inštalácia softvéru
WireGuard poskytuje
Mám najnovšiu Fedora Linux 31 a bol som príliš lenivý čítať manuál pred inštaláciou. Práve som našiel balíčky wireguard-tools
, nainštalovali ich a potom nevedeli prísť na to, prečo nič nefunguje. Ďalšie vyšetrovanie odhalilo, že balík nemám nainštalovaný wireguard-dkms
(so sieťovým ovládačom), ale nebol v úložisku mojej distribúcie.
Keby som si prečítal pokyny, urobil by som správne kroky:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Na svojom Raspberry Pi mám nainštalovanú distribúciu Raspbian Buster, je tam už balík wireguard
, nainštalujte ho:
$ sudo apt install wireguard
Na telefóne s Androidom som si nainštaloval aplikáciu
Inštalácia kľúčov
Pre peer autentifikáciu Wireguard používa jednoduchú schému súkromného/verejného kľúča na autentifikáciu VPN partnerov. Kľúče VPN môžete jednoducho vytvoriť pomocou nasledujúceho prí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ískame tak tri páry kľúčov (šesť súborov). Nebudeme odkazovať na súbory v konfiguráciách, ale skopírujeme obsah sem: každý kľúč je jeden riadok v base64.
Vytvorenie konfiguračného súboru pre server VPN (Raspberry Pi)
Konfigurácia je pomerne jednoduchá, vytvoril som nasledujúci súbor /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ámok:
- Na príslušné miesta je potrebné vložiť riadky zo súborov pomocou kľúčov
- Moja sieť VPN používa interné pásmo
10.200.200.0/24
- Pre tímy
PostUp
/PostDown
Mám externé sieťové rozhranie wwan0, môžete mať iné (napríklad eth0)
Sieť VPN sa dá ľahko zvýšiť pomocou nasledujúceho príkazu:
$ sudo wg-quick up wg0
Jeden malý detail: ako server DNS som použil dnsmasq
viazané na sieťové rozhranie br0
, pridal som aj zariadenia wg0
do zoznamu povolených zariadení. V dnsmasq sa to robí pridaním nového riadku sieťového rozhrania do konfiguračného súboru /etc/dnsmasq.conf
, napríklad:
interface=br0
interface=wg0
Okrem toho som pridal pravidlo iptable, ktoré povoľuje prenos do portu počúvania UDP (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Teraz, keď všetko funguje, môžeme nastaviť automatické spustenie tunela VPN:
$ sudo systemctl enable [email protected]
Konfigurácia klienta na notebooku
Vytvorte konfiguračný súbor na prenosnom počítači /etc/wireguard/wg0.conf
s rovnakými nastaveniami:
[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:
- Namiesto edgewalker musíte zadať verejnú IP alebo hostiteľa servera VPN
- Podľa nastavenia
AllowedIPs
na10.200.200.0/24
, VPN používame iba na prístup do internej siete. Prevádzka na všetky ostatné IP adresy/servery bude naďalej prechádzať cez „normálne“ otvorené kanály. Použije tiež vopred nakonfigurovaný server DNS na prenosnom počítači.
Na testovanie a automatické spustenie používame rovnaké príkazy wg-quick
и systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Nastavenie klienta na telefóne s Androidom
Pre telefón s Androidom vytvoríme veľmi podobný konfiguračný súbor (nazvime 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 rozdiel od konfigurácie na prenosnom počítači musí telefón používať náš server VPN ako server DNS (linka DNS
) a tiež prejsť všetku komunikáciu cez tunel VPN (AllowedIPs = 0.0.0.0/0
).
Namiesto kopírovania súboru do mobilného zariadenia ho môžete previesť na QR kód:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
QR kód bude výstupom do konzoly ako ASCII. Dá sa naskenovať z aplikácie Android VPN a automaticky nastaví VPN tunel.
Výkon
Nastavenie WireGuard je v porovnaní s OpenVPN jednoducho magické.
Zdroj: hab.com