Od WireGuard buduće jezgro Linux 5.6, odlučio sam vidjeti kako najbolje integrirati ovaj VPN s mojim .
Oprema
- Raspberry Pi 3 sa LTE modulom i javnim IP-om. Postojaće VPN server (u daljem tekstu edgewalker)
- Telefon uključen Android, koji mora koristiti VPN za svu komunikaciju
- Laptop Linux, koji bi trebao koristiti VPN samo unutar mreže
Svaki uređaj koji se povezuje na VPN mora biti u mogućnosti da se poveže sa svakim drugim uređajem. Na primjer, telefon bi trebao biti u mogućnosti da se poveže na web server na laptopu ako su oba uređaja dio VPN mreže. Ako je podešavanje dovoljno jednostavno, onda možete razmišljati o povezivanju na VPN i desktop (preko Etherneta).
S obzirom da žičane i bežične veze vremenom postaju sve manje sigurne (, и ), ozbiljno razmišljam o korištenju WireGuard za sve moje uređaje, bez obzira u kakvom okruženju rade.
Instalacija softvera
WireGuard pruža za većinu distribucija Linux, Windows и macOSPrijave za Android i iOS se isporučuju putem prodavnica aplikacija.
Imam najnoviju Fedoru Linux 31, i prije instalacije bio sam previše lijen da pročitam uputstvo. Samo sam pronašao pakete. wireguard-tools, instalirao ih, a onda nisam mogao shvatiti zašto ništa ne radi. Dalja istraga je pokazala da nisam instalirao paket wireguard-dkms (sa mrežnim drajverom), a nije ga bilo u spremištu moje distribucije.
Da sam pročitao uputstva, preduzeo bih prave korake:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Imam instaliranu Raspbian Buster distribuciju na svom Raspberry Pi, već postoji paket wireguard, instalirajte ga:
$ sudo apt install wireguardNa telefonu Android Instalirao/la sam aplikaciju iz zvaničnog kataloga Google App Store-a.
Instaliranje ključeva
Za autentifikaciju čvorova Wireguard Koristi jednostavnu shemu privatnog/javnog ključa za autentifikaciju VPN čvorova. VPN ključeve možete jednostavno generirati sljedećom naredbom:
$ 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.keyOvo nam daje tri para ključeva (šest fajlova). Nećemo se pozivati na datoteke u konfiguracijama, ali kopirajte sadržaj ovdje: svaki ključ je jedan red u base64.
Kreiranje konfiguracijske datoteke za VPN server (Raspberry Pi)
Konfiguracija je prilično jednostavna, kreirao sam sljedeći fajl /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/32Par napomena:
- Na odgovarajuća mjesta trebate umetnuti linije iz datoteka sa ključevima
- Moj VPN koristi interni domet
10.200.200.0/24 - Za timove
PostUp/PostDownImam eksterno mrežno sučelje wwan0, vi možda imate drugi (na primjer, eth0)
VPN mreža se lako pokreće sljedećom naredbom:
$ sudo wg-quick up wg0 Jedan mali detalj: koristio sam kao DNS server dnsmasq povezan na mrežni interfejs br0, dodao sam i uređaje wg0 na listu dozvoljenih uređaja. U dnsmasq-u, ovo se radi dodavanjem nove linije sa mrežnim interfejsom u konfiguracioni fajl /etc/dnsmasq.conf, na primjer:
interface=br0
interface=wg0Takođe, dodao sam iptable pravilo da dozvoli saobraćaj na UDP port za slušanje (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTSada kada sve radi, možemo registrirati automatsko pokretanje VPN tunela:
$ sudo systemctl enable wg-quick@wg0.serviceKonfiguracija klijenta za laptop
Na laptopu kreirajte konfiguracionu datoteku /etc/wireguard/wg0.conf sa istim postavkama:
[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:51820Napomene:
- Umjesto edgewalker-a, trebate navesti javni IP ili VPN server host
- Postavljanjem
AllowedIPsna10.200.200.0/24, koristimo samo VPN za pristup internoj mreži. Saobraćaj ka svim ostalim IP adresama/serverima će i dalje ići kroz "obične" otvorene kanale. Koristiće se i unapred konfigurisani DNS server na laptopu.
Za testiranje i automatsko pokretanje koristimo iste komande wg-quick и systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.servicePodešavanje klijenta za Android-telefon
Za telefon Android Kreiramo vrlo sličnu konfiguracijsku datoteku (nazovimo je 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 Za razliku od konfiguracije laptopa, telefon bi trebao koristiti naš VPN server kao svoj DNS server (string DNS), kao i proći sav promet kroz VPN tunel (AllowedIPs = 0.0.0.0/0).
Umjesto kopiranja datoteke na svoj mobilni uređaj, možete je pretvoriti u QR kod:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confQR kod će biti ispisan na konzoli kao ASCII. Može se skenirati iz aplikacije. Android VPN i automatski konfigurirajte VPN tunel.
zaključak
podešavanje WireGuard jednostavno magično u poređenju sa OpenVPN.
izvor: www.habr.com
