Omdat WireGuard
Uitrusting
- Raspberry Pi 3 met LTE-module en openbaar IP-adres. Er zal hier een VPN-server aanwezig zijn (hierna in de tekst genoemd). randloper)
- Een Android-telefoon die voor alle communicatie een VPN moet gebruiken
- Linux-laptop die alleen een VPN binnen het netwerk mag gebruiken
Elk apparaat dat verbinding maakt met de VPN moet verbinding kunnen maken met alle andere apparaten. Een telefoon moet bijvoorbeeld verbinding kunnen maken met een webserver op een laptop als beide apparaten deel uitmaken van een VPN-netwerk. Als de installatie vrij eenvoudig blijkt te zijn, kun je overwegen om de desktop op de VPN aan te sluiten (via Ethernet).
Gezien het feit dat bekabelde en draadloze verbindingen in de loop van de tijd steeds minder veilig worden (
Software installatie
WireGuard biedt
Ik heb de nieuwste Fedora Linux 31 en ik was te lui om de handleiding te lezen voordat ik installeerde. Ik heb net de pakketten gevonden wireguard-tools
, installeerde ze en kon toen niet achterhalen waarom niets werkte. Nader onderzoek wees uit dat ik het pakket niet geïnstalleerd heb wireguard-dkms
(met een netwerkstuurprogramma), maar het stond niet in de repository van mijn distributie.
Als ik de instructies had gelezen, had ik de juiste stappen ondernomen:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Ik heb de Raspbian Buster-distributie op mijn Raspberry Pi geïnstalleerd, daar staat al een pakket wireguard
, installeer het:
$ sudo apt install wireguard
Op mijn Android telefoon heb ik de applicatie geïnstalleerd
Installatie van sleutels
Voor peer-authenticatie gebruikt Wireguard een eenvoudig privé/publiek sleutelschema om VPN-peers te authenticeren. U kunt eenvoudig VPN-sleutels maken met behulp van de volgende opdracht:
$ 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
Dit geeft ons drie sleutelparen (zes bestanden). We zullen niet verwijzen naar de bestanden in de configuraties, maar kopiëren de inhoud hier: elke sleutel is één regel in base64.
Een configuratiebestand maken voor de VPN-server (Raspberry Pi)
De configuratie is vrij eenvoudig, ik heb het volgende bestand gemaakt /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
Een paar opmerkingen:
- Op de juiste plaatsen moet u met de toetsen regels uit de bestanden invoegen
- Mijn VPN gebruikt de interne band
10.200.200.0/24
- Voor teams
PostUp
/PostDown
Ik heb de externe netwerkinterface wwan0, het kan zijn dat u een andere heeft (bijvoorbeeld eth0)
Het VPN-netwerk is eenvoudig op te zetten met het volgende commando:
$ sudo wg-quick up wg0
Een klein detail: als de DNS-server die ik gebruikte dnsmasq
gekoppeld aan een netwerkinterface br0
, Ik heb ook apparaten toegevoegd wg0
naar de lijst met toegestane apparaten. In dnsmasq wordt dit gedaan door een nieuwe netwerkinterfaceregel aan het configuratiebestand toe te voegen /etc/dnsmasq.conf
, bijvoorbeeld:
interface=br0
interface=wg0
Daarnaast heb ik een iptable-regel toegevoegd om verkeer naar de UDP-luisterpoort (51280) toe te staan:
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Nu alles werkt, kunnen we de automatische lancering van de VPN-tunnel instellen:
$ sudo systemctl enable [email protected]
Clientconfiguratie op laptop
Maak een configuratiebestand op een laptop /etc/wireguard/wg0.conf
met dezelfde instellingen:
[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
Opmerkingen:
- In plaats van edgewalker moet u de openbare IP- of VPN-serverhost opgeven
- Door instelling
AllowedIPs
op10.200.200.0/24
, gebruiken we alleen VPN om toegang te krijgen tot het interne netwerk. Verkeer naar alle andere IP-adressen/servers blijft via “normale” open kanalen lopen. Het maakt ook gebruik van de vooraf geconfigureerde DNS-server op de laptop.
Voor testen en automatisch starten gebruiken we dezelfde commando's wg-quick
и systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Een client instellen op een Android-telefoon
Voor een Android-telefoon maken we een zeer vergelijkbaar configuratiebestand (laten we het 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
In tegenstelling tot de configuratie op de laptop moet de telefoon onze VPN-server als DNS-server gebruiken (line DNS
), en laat ook al het verkeer door de VPN-tunnel (AllowedIPs = 0.0.0.0/0
).
In plaats van het bestand naar uw mobiele apparaat te kopiëren, kunt u het naar een QR-code converteren:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
De QR-code wordt als ASCII naar de console uitgevoerd. Het kan worden gescand vanuit de Android VPN-app en zal automatisch een VPN-tunnel opzetten.
Uitgang
Het instellen van WireGuard is eenvoudigweg magisch vergeleken met OpenVPN.
Bron: www.habr.com