Siden WireGuard
Оборудование
- Raspberry Pi 3 med LTE-modul og offentlig IP. Der vil være en VPN-server (i det følgende benævnt edgewalker)
- En Android-telefon, der skal bruge en VPN til al kommunikation
- Linux bærbar, der kun skal bruge VPN inde på 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 (
Softwareinstallation
WireGuard leverer
Jeg har den seneste Fedora Linux 31, og jeg var for doven til at læse manualen før installationen. Har lige fundet 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 wireguard
Jeg installerede appen på min Android-telefon
Installation af nøgler
For at autentificere noder bruger Wireguard et simpelt privat/offentlig nøgleskema til at autentificere VPN-noder. Du kan nemt oprette 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.key
Dette 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/32
Et 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
/PostDown
Jeg 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=wg0
Jeg 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 ACCEPT
Nu hvor alt fungerer, kan vi registrere den automatiske lancering af VPN-tunnelen:
$ sudo systemctl enable [email protected]
Laptop 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:51820
Bemærkninger:
- I stedet for edgewalker skal du angive en offentlig IP- eller VPN-servervært
- Efter at have installeret
AllowedIPs
på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 [email protected]
Opsætning af en klient på en Android-telefon
For en Android-telefon opretter vi en meget lignende konfigurationsfil (lad os kalde det 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.conf
QR-koden udsendes til konsollen som ASCII. Den kan scannes fra Android VPN-appen og konfigurere en VPN-tunnel automatisk.
Output
Opsætning af WireGuard er bare magisk sammenlignet med OpenVPN.
Kilde: www.habr.com