Întrucât WireGuard nucleul viitor Linux 5.6, am decis să văd cum să integrez cel mai bine acest VPN cu al meu .
Оборудование
- Raspberry Pi 3 cu modul LTE și adresă IP publică. Aici va exista un server VPN (în continuare în text se numește edgewalker)
- Telefon pornit Android, care trebuie să utilizeze o rețea VPN pentru toate comunicațiile
- caiet Linux, care ar trebui să utilizeze VPN doar în cadrul rețelei
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 (, и ), mă gândesc serios să folosesc WireGuard pentru toate dispozitivele mele, indiferent de mediul în care rulează.
Instalare software
WireGuard furnizează pentru majoritatea distribuțiilor Linux, Windows и macOSCereri pentru Android și iOS sunt livrate prin intermediul magazinelor de aplicații.
Am cea mai recentă versiune de Fedora Linux 31, iar înainte de instalare mi-a fost prea leneș să citesc manualul. 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 wireguardLa telefon Android Am instalat aplicația din catalogul oficial Google App Store.
Instalarea cheilor
Pentru autentificarea nodurilor Wireguard Folosește o schemă simplă de chei private/publice pentru autentificarea nodurilor VPN. Puteți genera cu ușurință chei VPN cu 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.keyAcest 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/32Câ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/PostDownAm 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 ACCEPTAcum că totul funcționează, putem configura lansarea automată a tunelului VPN:
$ sudo systemctl enable wg-quick@wg0.serviceConfigurare 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:51820Note:
- În loc de edgewalker, trebuie să specificați IP-ul public sau gazda serverului VPN
- Prin setare
AllowedIPspe10.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 wg-quick@wg0.serviceConfigurarea clientului pentru Android-telefon
Pentru telefon Android Creăm un fișier de configurare foarte similar (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.confCodul QR va fi afișat în consolă ca ASCII. Acesta poate fi scanat din aplicație. Android VPN și configurați automat tunelul VPN.
Producție
ajustare WireGuard pur și simplu magic în comparație cu OpenVPN.
Sursa: www.habr.com
