Da WireGuard fremtidig kerne Linux 5.6, besluttede jeg mig for at se, hvordan jeg bedst kunne integrere denne VPN med min .
Оборудование
- Raspberry Pi 3 med LTE-modul og offentlig IP. Der vil være en VPN-server (i det følgende benævnt edgewalker)
- Telefonen er tændt Android, som skal bruge en VPN til al kommunikation
- notesbog Linux, som kun bør bruge VPN inden for netværket
Hver enhed, der opretter forbindelse til en VPN, skal være i stand til at oprette forbindelse til alle andre enheder. For eksempel skal en telefon være i stand til at oprette forbindelse til en webserver på en bærbar computer, hvis begge enheder er en del af et VPN-netværk. Hvis opsætningen er enkel nok, så kan du overveje at oprette forbindelse til en VPN og en desktop (via Ethernet).
I betragtning af at kablede og trådløse forbindelser bliver mindre sikre over tid (, и ), Jeg overvejer seriøst at bruge WireGuard for alle mine enheder, uanset hvilket miljø de kører i.
Softwareinstallation
WireGuard giver for de fleste distributioner Linux, Windows и macOSAnsøgninger om Android og iOS leveres via appbutikker.
Jeg har den nyeste Fedora Linux 31, og før installationen var jeg for doven til at læse manualen. Jeg fandt lige pakkerne. wireguard-tools, installerede dem og kunne så ikke finde ud af, hvorfor intet virkede. Yderligere undersøgelser viste, at jeg ikke havde pakken installeret wireguard-dkms (med en netværksdriver), og den var ikke i min distributions lager.
Hvis jeg havde læst instruktionerne, ville jeg have taget de rigtige skridt:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Jeg har Raspbian Buster-distributionen installeret på min Raspberry Pi, der er allerede en pakke wireguard, installer det:
$ sudo apt install wireguardI telefonen Android Jeg installerede applikationen fra det officielle katalog i Google App Store.
Installation af nøgler
At godkende noder Wireguard Bruger et simpelt privat/offentlig nøgleskema til at godkende VPN-noder. Du kan nemt generere VPN-nøgler med følgende kommando:
$ 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.keyDette giver os tre nøglepar (seks filer). Vi vil ikke referere til filer i configs, men kopiere indholdet her: hver nøgle er en linje i base64.
Oprettelse af en konfigurationsfil til en VPN-server (Raspberry Pi)
Konfigurationen er ret enkel, jeg oprettede følgende fil /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/32Et par noter:
- På de relevante steder skal du indsætte linjerne fra filerne med tasterne
- Min VPN bruger intern rækkevidde
10.200.200.0/24 - For hold
PostUp/PostDownJeg har en ekstern netværksgrænseflade wwan0, du kan have en anden (for eksempel eth0)
VPN-netværket opdrages nemt med følgende kommando:
$ sudo wg-quick up wg0 En lille detalje: som DNS-server brugte jeg dnsmasq tilsluttet netværksgrænsefladen br0, Jeg tilføjede også enheder wg0 til listen over tilladte enheder. I dnsmasq gøres dette ved at tilføje en ny linje med netværksgrænsefladen til konfigurationsfilen /etc/dnsmasq.conf, for eksempel:
interface=br0
interface=wg0Jeg tilføjede også en iptable-regel for at tillade trafik til den lyttende UDP-port (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTNu hvor alt fungerer, kan vi registrere den automatiske lancering af VPN-tunnelen:
$ sudo systemctl enable wg-quick@wg0.serviceLaptop klient konfiguration
Opret en konfigurationsfil på den bærbare computer /etc/wireguard/wg0.conf med samme indstillinger:
[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:51820Bemærkninger:
- I stedet for edgewalker skal du angive en offentlig IP- eller VPN-servervært
- Efter at have installeret
AllowedIPspå10.200.200.0/24, bruger vi kun VPN til at få adgang til det interne netværk. Trafik til alle andre IP-adresser/servere vil fortsat gå gennem "almindelige" åbne kanaler. Den forudkonfigurerede DNS-server på den bærbare computer vil også blive brugt.
Til test og automatisk lancering bruger vi de samme kommandoer wg-quick и systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceOpsætning af klienten til Android-telefon
Til telefon Android Vi opretter en meget lignende konfigurationsfil (lad os kalde den 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 I modsætning til den bærbare computer-konfiguration skal telefonen bruge vores VPN-server som sin DNS-server (streng DNS), samt passere al trafik gennem VPN-tunnelen (AllowedIPs = 0.0.0.0/0).
I stedet for at kopiere filen til din mobilenhed, kan du konvertere den til en QR-kode:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confQR-koden vil blive vist til konsollen som ASCII. Den kan scannes fra appen. Android VPN og konfigurerer automatisk VPN-tunnelen.
Output
justering WireGuard simpelthen magisk sammenlignet med OpenVPN.
Kilde: www.habr.com
