Pentru că WireGuard
Оборудование
- Raspberry Pi 3 cu modul LTE și adresă IP publică. Aici va exista un server VPN (în continuare în text se numește edgewalker)
- Un telefon Android care trebuie să folosească un VPN pentru toate comunicațiile
- Laptop Linux care ar trebui să utilizeze doar un VPN în rețea
Fiecare dispozitiv care se conectează la VPN trebuie să se poată conecta la toate celelalte dispozitive. De exemplu, un telefon ar trebui să se poată conecta la un server web pe un laptop dacă ambele dispozitive fac parte dintr-o rețea VPN. Dacă configurarea se dovedește a fi destul de simplă, atunci vă puteți gândi la conectarea desktopului la VPN (prin Ethernet).
Având în vedere că conexiunile cu fir și fără fir devin din ce în ce mai puțin sigure în timp (
Instalare software
WireGuard oferă
Am cel mai recent Fedora Linux 31 și mi-a fost prea lene să citesc manualul înainte de instalare. Tocmai am găsit pachetele wireguard-tools
, le-a instalat și apoi nu și-a dat seama de ce nimic nu funcționa. Investigațiile ulterioare au arătat că nu am pachetul instalat wireguard-dkms
(cu un driver de rețea), dar nu era în depozitul distribuției mele.
Dacă aș fi citit instrucțiunile, aș fi făcut pașii corecti:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Am distribuția Raspbian Buster instalată pe Raspberry Pi, există deja un pachet acolo wireguard
, instalează-l:
$ sudo apt install wireguard
Pe telefonul meu Android am instalat aplicația
Instalarea cheilor
Pentru autentificarea de la egal la egal, Wireguard folosește o schemă simplă de chei private/publice pentru a autentifica egalii VPN. Puteți crea cu ușurință chei VPN utilizând 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.key
Acest lucru ne oferă trei perechi de chei (șase fișiere). Nu ne vom referi la fișierele din configurații, ci vom copia conținutul aici: fiecare cheie este o linie în base64.
Crearea unui fișier de configurare pentru serverul VPN (Raspberry Pi)
Configurarea este destul de simplă, am creat următorul fișier /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
Câteva note:
- În locurile potrivite, trebuie să introduceți linii din fișiere cu tastele
- VPN-ul meu folosește banda internă
10.200.200.0/24
- Pentru echipe
PostUp
/PostDown
Am interfața de rețea externă wwan0, este posibil să aveți una diferită (de exemplu, eth0)
Rețeaua VPN este ridicată cu ușurință cu următoarea comandă:
$ sudo wg-quick up wg0
Un mic detaliu: ca server DNS pe care l-am folosit dnsmasq
legat de o interfață de rețea br0
, am adăugat și dispozitive wg0
la lista de dispozitive permise. În dnsmasq, acest lucru se face prin adăugarea unei noi linii de interfață de rețea la fișierul de configurare /etc/dnsmasq.conf
, de exemplu:
interface=br0
interface=wg0
În plus, am adăugat o regulă iptable pentru a permite traficul către portul de ascultare UDP (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Acum că totul funcționează, putem configura lansarea automată a tunelului VPN:
$ sudo systemctl enable [email protected]
Configurare client pe laptop
Creați un fișier de configurare pe un laptop /etc/wireguard/wg0.conf
cu aceleasi setari:
[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
Note:
- În loc de edgewalker, trebuie să specificați IP-ul public sau gazda serverului VPN
- Prin setare
AllowedIPs
pe10.200.200.0/24
, folosim VPN doar pentru a accesa rețeaua internă. Traficul către toate celelalte adrese IP/servere va continua să treacă prin canale deschise „normale”. De asemenea, va folosi serverul DNS preconfigurat de pe laptop.
Pentru testare și lansare automată folosim aceleași comenzi wg-quick
и systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Configurarea unui client pe un telefon Android
Pentru un telefon Android creăm un fișier de configurare foarte asemănător (să-l numim 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
Spre deosebire de configurația de pe laptop, telefonul trebuie să folosească serverul nostru VPN ca server DNS (linia DNS
), și, de asemenea, trece tot traficul prin tunelul VPN (AllowedIPs = 0.0.0.0/0
).
În loc să copiați fișierul pe dispozitivul mobil, îl puteți converti într-un cod QR:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
Codul QR va fi scos pe consolă ca ASCII. Poate fi scanat din aplicația VPN Android și va configura automat un tunel VPN.
Producție
Configurarea WireGuard este pur și simplu magică în comparație cu OpenVPN.
Sursa: www.habr.com