Deoarece WireGuard viitorul kernel-ului Linux 5.6, am decis să văd cum să integrez cel mai bine acest VPN cu .
Echipament
- Raspberry Pi 3 cu modul LTE și adresa IP publică. Aici va fi serverul VPN (denumit în continuare edgewalker)
- Telefonul Android, care trebuie să folosească VPN-ul pentru toate comunicațiile
- Laptop Linux, care trebuie să folosească VPN-ul doar în rețea
Fiecare dispozitiv care se conectează la VPN ar trebui să aibă capacitatea de a se conecta la toate celelalte dispozitive. De exemplu, telefonul ar trebui să poată accesa serverul web de pe laptop, dacă ambele dispozitive fac parte din rețeaua VPN. Dacă configurarea va fi suficient de simplă, putem lua în considerare conectarea unui desktop la VPN (prin Ethernet).
Ținând cont că conexiunile prin cablu și wireless devin din ce în ce mai puțin sigure (, și ), iau în serios utilizarea WireGuard pentru toate dispozitivele mele, indiferent de mediul în care funcționează.
Instalarea software-ului
WireGuard oferă pentru cele mai multe distribuții Linux, Windows și macOS. Aplicațiile pentru Android și iOS sunt disponibile prin intermediul magazinelor de aplicații.
Am ultima versiune Fedora Linux 31, iar înainte de instalare mi-am găsit prea multă lene să citesc manualul. Pur și simplu am găsit pachetele wireguard-tools, le-am instalat și apoi nu am putut înțelege de ce nimic nu funcționează. O cercetare ulterioară a arătat că nu am instalat pachetul wireguard-dkms (cu driverul rețelei), iar acesta nu era în depozitul distribuției mele.
Dacă aș fi citit instrucțiunile, aș fi făcut pașii corecți:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Pe Raspberry Pi am instalat distribuția Raspbian Buster, acolo este deja pachetul wireguard, îl instalăm:
$ sudo apt install wireguardPe telefonul Android am instalat aplicația din magazinul oficial Google App Store.
Instalarea cheilor
Pentru autentificarea nodurilor, WireGuard utilizează o schemă simplă de chei private/publice pentru a autentifica nodurile VPN. Puteți crea cu ușurință chei VPN folosind următoarea comandă:
$ 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.keyAcesta ne oferă trei perechi de chei (șase fișiere). Nu vom face referire la fișiere în configurații, ci vom copia aici conținutul: fiecare cheie este un singur rând în base64.
Crearea fișierului de configurare pentru serverul VPN (Raspberry Pi)
Configurația este destul de simplă, am creat următorul fișier /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]
# mobile phone
PublicKey =
AllowedIPs = 10.200.200.3/32Câteva observații:
- Trebuie să inserați liniile din fișierele cu chei în locurile corespunzătoare
- Rețeaua mea VPN folosește o gamă interioară
10.200.200.0/24 - Pentru comenzile
PostUp/PostDownam specificat interfața de rețea externă wwan0, a dumneavoastră poate fi diferită (de exemplu, eth0)
Rețeaua VPN poate fi activată cu următoarea comandă:
$ sudo wg-quick up wg0 Un mic detaliu: ca server DNS am folosit dnsmasq legat de interfața de rețea br0, de asemenea, am adăugat dispozitive wg0 în lista dispozitivelor permise. În dnsmasq, acest lucru se face prin adăugarea unei noi linii cu interfața de rețea în fișierul de configurare /etc/dnsmasq.conf, de exemplu:
interface=br0
interface=wg0De asemenea, am adăugat o regulă iptable pentru a permite traficul pe portul UDP de ascultare (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTAcum, când totul funcționează, putem configura pornirea automată a tunelului VPN:
$ sudo systemctl enable wg-quick@wg0.serviceConfigurația clientului pe laptop
Pe laptop creăm un fișier de configurare /etc/wireguard/wg0.conf cu aceleași setări:
[Interface]
Address = 10.200.200.2/24
PrivateKey =
[Peer]
PublicKey =
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820Observații:
- În loc de edgewalker, trebuie să specificați IP-ul public sau host-ul serverului VPN
- După ce am instalat
AllowedIPspe10.200.200.0/24, folosim VPN-ul doar pentru acces la rețeaua internă. Traficul pentru toate celelalte IP-uri/servere va continua să circule prin canale deschise "obișnuite". De asemenea, se va folosi serverul DNS pre-configurat pe laptop.
Pentru testare și pornire automată folosim aceleași comenzi wg-quick și systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceConfigurarea clientului pe telefonul Android
Pentru telefonul Android, creăm un fișier de configurare foarte similar (îl vom numi 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 Spre deosebire de configurația de pe laptop, telefonul trebuie să folosească serverul nostru VPN ca server DNS (linia DNS), precum și să permită trecerea întregului trafic prin tunelul VPN (AllowedIPs = 0.0.0.0/0).
În loc să copiați fișierul pe dispozitivul mobil, îl puteți transforma într-un cod QR:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confCodul QR va apărea în consolă ca ASCII. Poate fi scanat din aplicația VPN Android și va configura automat tunelul VPN.
Ieșire
Configurarea WireGuard este pur și simplu magică în comparație cu OpenVPN.
Sursa: habr.com
