Od WireGuard budúce jadro Linux 5.6 som sa rozhodol zistiť, ako najlepšie integrovať túto VPN s mojou .
Оборудование
- Raspberry Pi 3 s LTE modulom a verejnou IP adresou. Tu bude VPN server (ďalej v texte nazývaný edgewalker)
- Telefón zapnutý Android, ktorý musí pre všetku komunikáciu používať VPN
- zápisník Linux, ktorý by mal používať VPN iba 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é (, и ), vážne zvažujem použitie WireGuard pre všetky moje zariadenia, bez ohľadu na to, v akom prostredí bežia.
Inštalácia softvéru
WireGuard poskytuje pre väčšinu distribúcií Linux, Windows и macOSŽiadosti o Android a iOS sú doručované prostredníctvom obchodov s aplikáciami.
Mám najnovšiu Fedoru Linux 31 a pred inštaláciou som bol príliš lenivý na to, aby som si prečítal manuál. Našiel som len 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 wireguardNa telefóne Android Nainštaloval som si aplikáciu z oficiálneho katalógu Google App Store.
Inštalácia kľúčov
Na overenie uzlov Wireguard Používa jednoduchú schému súkromného/verejného kľúča na autentifikáciu uzlov VPN. Kľúče VPN môžete jednoducho vygenerovať 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.keyZí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/32Pá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/PostDownMá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=wg0Okrem toho som pridal pravidlo iptable, ktoré povoľuje prenos do portu počúvania UDP (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTTeraz, keď všetko funguje, môžeme nastaviť automatické spustenie tunela VPN:
$ sudo systemctl enable wg-quick@wg0.serviceKonfigurá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:51820Poznámky:
- Namiesto edgewalker musíte zadať verejnú IP alebo hostiteľa servera VPN
- Podľa nastavenia
AllowedIPsna10.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 wg-quick@wg0.serviceNastavenie klienta pre Android-telefón
Pre telefón Android 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.confQR kód sa do konzoly zobrazí ako ASCII. Dá sa naskenovať z aplikácie. Android VPN a automaticky nakonfigurovať VPN tunel.
Výkon
nastavenie WireGuard jednoducho magické v porovnaní s OpenVPN.
Zdroj: hab.com
