Siden WireGuard будущего ядра Linux 5.6, я решил посмотреть, как лучше всего интегрировать этот VPN с моим .
Оборудование
- Raspberry Pi 3 med LTE-modul og offentlig IP-adresse. Det vil være en VPN-server her (heretter i teksten heter den edgewalker)
- Телефон на Android, который должен использовать VPN для всех коммуникаций
- bærbare Linux, который должен использовать VPN только внутри сети
Hver enhet som kobler til VPN må kunne koble til alle andre enheter. For eksempel skal en telefon kunne koble til en webserver på en bærbar datamaskin hvis begge enhetene er en del av et VPN-nettverk. Hvis oppsettet viser seg å være ganske enkelt, kan du tenke på å koble skrivebordet til VPN (via Ethernet).
Tatt i betraktning at kablede og trådløse tilkoblinger blir mindre og mindre sikre over tid (, и ), я всерьёз рассматриваю возможность использования WireGuard для всех моих устройств, независимо от того, в какой среде они работают.
Programvareinstallasjon
WireGuard gir для большинства дистрибутивов Linux, Windows и macOSSøknader om Android и iOS поставляются через каталоги приложений.
У меня последняя Fedora Linux 31, а перед установкой я поленился прочитать руководство. Просто нашёл пакеты wireguard-tools, installerte dem, og kunne ikke finne ut hvorfor ingenting fungerte. Ytterligere undersøkelser viste at jeg ikke har pakken installert wireguard-dkms (med en nettverksdriver), men den var ikke i depotet til distribusjonen min.
Hvis jeg hadde lest instruksjonene, ville jeg ha tatt de riktige trinnene:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Jeg har Raspbian Buster-distribusjonen installert på min Raspberry Pi, det er allerede en pakke der wireguard, installer det:
$ sudo apt install wireguardPå telefonen Android я установил приложение fra den offisielle Google App Store-katalogen.
Montering av nøkler
Для аутентификации узлов Wireguard использует простую схему закрытого/открытого ключей для аутентификации узлов VPN. Можете легко создать ключи VPN с помощью следующей команды:
$ 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 gir oss tre nøkkelpar (seks filer). Vi vil ikke referere til filene i konfigurasjonene, men kopier innholdet her: hver nøkkel er én linje i base64.
Opprette en konfigurasjonsfil for VPN-serveren (Raspberry Pi)
Konfigurasjonen er ganske enkel, jeg opprettet 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 merknader:
- På de riktige stedene må du sette inn linjer fra filene med tastene
- VPN-en min bruker internt bånd
10.200.200.0/24 - For lag
PostUp/PostDownJeg har det eksterne nettverksgrensesnittet wwan0, du kan ha et annet (for eksempel eth0)
VPN-nettverket heves enkelt med følgende kommando:
$ sudo wg-quick up wg0 En liten detalj: som DNS-serveren jeg brukte dnsmasq knyttet til et nettverksgrensesnitt br0, Jeg har også lagt til enheter wg0 til listen over tillatte enheter. I dnsmasq gjøres dette ved å legge til en ny nettverksgrensesnittlinje i konfigurasjonsfilen /etc/dnsmasq.conf, for eksempel:
interface=br0
interface=wg0I tillegg la jeg til en iptable-regel for å tillate trafikk til UDP-lytteporten (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTNå som alt fungerer, kan vi sette opp den automatiske lanseringen av VPN-tunnelen:
$ sudo systemctl enable wg-quick@wg0.serviceKlientkonfigurasjon på bærbar PC
Lag en konfigurasjonsfil på en bærbar datamaskin /etc/wireguard/wg0.conf med samme innstillinger:
[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:51820Merknader:
- I stedet for edgewalker må du spesifisere den offentlige IP- eller VPN-serververten
- Ved å sette
AllowedIPspå10.200.200.0/24, bruker vi kun VPN for å få tilgang til det interne nettverket. Trafikk til alle andre IP-adresser/servere vil fortsette å gå gjennom "normale" åpne kanaler. Den vil også bruke den forhåndskonfigurerte DNS-serveren på den bærbare datamaskinen.
For testing og automatisk oppstart bruker vi de samme kommandoene wg-quick и systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceSette opp klienten for Android-телефоне
For telefon Android создаём очень похожий файл конфигурации (назовём его 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 motsetning til konfigurasjonen på den bærbare datamaskinen, må telefonen bruke vår VPN-server som DNS-server (linje DNS), og passerer også all trafikk gjennom VPN-tunnelen (AllowedIPs = 0.0.0.0/0).
I stedet for å kopiere filen til mobilenheten din, kan du konvertere den til en QR-kode:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confQR-код выйдет в консоль как ASCII. Его можно отсканировать из приложения Android VPN и автоматически настроить VPN-туннель.
Utgang
justering WireGuard просто волшебна по сравнению с OpenVPN.
Kilde: www.habr.com
