Eftersom WireGuard den framtida Linux 5.6-kÀrnan, beslutade jag mig för att se hur jag bÀst kan integrera denna VPN med min .
Utrustning
- Raspberry Pi 3 med LTE-modul och offentlig IP-adress. HĂ€r kommer VPN-servern att finnas (i texten kommer den att kallas edgewalker)
- En Android-telefon som ska anvÀnda VPN för all kommunikation
- En Linux-laptop som endast ska anvÀnda VPN inom nÀtverket
Varje enhet som ansluter till VPN mÄste kunna nÄ alla andra enheter. Till exempel, telefonen mÄste kunna ansluta till webbservern pÄ laptopen, om bÄda enheterna Àr en del av VPN-nÀtverket. Om installationen visar sig tillrÀckligt enkel kan man övervÀga att ansluta Àven skrivbordet (via Ethernet).
Med tanke pÄ att trÄdbundna och trÄdlösa anslutningar blir allt mindre sÀkra över tid (, och ), övervÀger jag allvarligt att anvÀnda WireGuard för alla mina enheter, oavsett i vilken miljö de fungerar.
Installation av programvara
WireGuard erbjuder för de flesta distributioner av Linux, Windows och macOS. Appar för Android och iOS levereras via appbutiker.
Jag har den senaste Fedora Linux 31, och innan installationen orkade jag inte lÀsa manualen. Jag hittade bara paketen wireguard-tools, installerade dem, och kunde sedan inte förstÄ varför ingenting fungerade. Vid vidare undersökning visade det sig att jag inte hade paketet wireguard-dkms (med nÀtverksdrivrutin), och det fanns inte i mitt distributionsförrÄd.
Om jag hade lÀst instruktionen, skulle jag ha gjort rÀtt steg:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools PÄ Raspberry Pi har jag distributionen Raspbian Buster, dÀr paketet redan finns wireguard, vi installerar det:
$ sudo apt install wireguardPÄ Android-telefonen installerade jag appen frÄn den officiella Google App Store-katalogen.
Installation av nycklar
För autentisering av noder anvÀnder Wireguard ett enkelt system med privat/offentlig nyckel för autentisering av VPN-noder. Du kan enkelt skapa VPN-nycklar med följande 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.keyDet ger oss tre nyckelpar (sex filer). Vi kommer inte att hÀnvisa till filerna i konfigurationerna, utan vi kopierar hit innehÄllet: varje nyckel Àr en rad i base64.
Skapa konfigurationsfil för VPN-server (Raspberry Pi)
Konfigurationen Àr ganska enkel, jag har skapat följande fil /etc/wireguard/wg0.conf:
[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey =
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 =
AllowedIPs = 10.200.200.2/32
[Peer]
# mobiltelefon
PublicKey =
AllowedIPs = 10.200.200.3/32NÄgra anteckningar:
- StrÀngarna frÄn nyckelfilerna mÄste sÀttas in pÄ de relevanta stÀllena
- NÀtverket för min VPN anvÀnder ett internt intervall
10.200.200.0/24 - För kommandon
PostUp/PostDownjag har angett det externa nÀtverksgrÀnssnittet wwan0, du kan ha ett annat (t.ex. eth0)
VPN-nÀtverket startas enkelt med följande kommando:
$ sudo wg-quick up wg0 En liten detalj: jag anvÀnde en DNS-server dnsmasq kopplad till nÀtverksgrÀnssnittet br0, jag la Àven till enheter wg0 i listan över tillÄtna enheter. I dnsmasq görs detta genom att lÀgga till en ny rad med nÀtverksgrÀnssnittet i konfigurationsfilen /etc/dnsmasq.conf, till exempel:
interface=br0
interface=wg0Dessutom har jag lagt till en iptable-regel för att tillÄta trafik till den lyssnande UDP-porten (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTNu nÀr allt fungerar kan vi ange automatisk uppstart av VPN-tunneln:
$ sudo systemctl enable wg-quick@wg0.serviceKlientkonfiguration pÄ bÀrbara datorn
PÄ bÀrbara datorn skapar vi en konfigurationsfil /etc/wireguard/wg0.conf med samma instÀllningar:
[Interface]
Address = 10.200.200.2/24
PrivateKey =
[Peer]
PublicKey =
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820Noteringar:
- IstÀllet för edgewalker mÄste du ange den offentliga IP-adressen eller vÀrden pÄ VPN-servern
- Genom att installera
AllowedIPstill10.200.200.0/24, anvÀnder vi VPN endast för att fÄ Ätkomst till det interna nÀtverket. Trafiken till alla andra IP-adresser/serverar kommer fortfarande att gÄ genom "vanliga" öppna kanaler. En förkonfigurerad DNS-server pÄ den bÀrbara datorn kommer ocksÄ att anvÀndas.
För test och automatisk uppstart anvÀnder vi samma kommandon wg-quick och systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceKlientinstÀllning pÄ Android-telefon
För Android-telefonen skapar vi en mycket liknande konfigurationsfil (vi kallar den mobile.conf):
[Interface]
Address = 10.200.200.3/24
PrivateKey =
DNS = 10.200.200.1
[Peer]
PublicKey =
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820 Till skillnad frÄn konfigurationen pÄ bÀrbara datorer bör telefonen anvÀnda vÄr VPN-server som DNS-server (rad DNS), samt dirigera all trafik genom VPN-tunneln (AllowedIPs = 0.0.0.0/0).
IstÀllet för att kopiera filen till den mobila enheten kan den omvandlas till en QR-kod:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confQR-koden kommer att visas i konsolen som ASCII. Den kan skannas frÄn Android VPN-appen och automatiskt konfigurera VPN-tunneln.
Utdata
InstÀllningen av WireGuard Àr helt magisk jÀmfört med OpenVPN.
KĂ€lla: habr.com
