Sinds WireGuard toekomstige kern Linux 5.6 Ik besloot te kijken hoe ik deze VPN het beste kon integreren met mijn .
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)
- Telefoon aan Android, die voor alle communicatie een VPN moet gebruiken
- notitieboekje Linux, die alleen VPN binnen het netwerk zou moeten 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 (, и ), overweeg ik serieus om te gebruiken WireGuard voor al mijn apparaten, ongeacht in welke omgeving ze draaien.
Software installatie
WireGuard biedt voor de meeste verdelingen Linux, Windows и macOSAanvragen voor Android iOS en iOS worden via appwinkels aangeboden.
Ik heb de nieuwste versie van Fedora. Linux 31, en voordat ik het installeerde, was ik te lui om de handleiding te lezen. Ik heb de pakketten gewoon 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 wireguardAan de telefoon Android Ik heb de applicatie geïnstalleerd. uit de officiële Google App Store-catalogus.
Installatie van sleutels
Om knooppunten te authenticeren Wireguard Maakt gebruik van een eenvoudig schema met privé- en publieke sleutels om VPN-nodes te authenticeren. U kunt eenvoudig VPN-sleutels genereren met 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.keyDit 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/32Een 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/PostDownIk 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=wg0Daarnaast 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 ACCEPTNu alles werkt, kunnen we de automatische lancering van de VPN-tunnel instellen:
$ sudo systemctl enable wg-quick@wg0.serviceClientconfiguratie 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:51820Opmerkingen:
- In plaats van edgewalker moet u de openbare IP- of VPN-serverhost opgeven
- Door instelling
AllowedIPsop10.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 wg-quick@wg0.serviceDe client instellen voor Android-telefoon
Voor telefoon Android We maken een vergelijkbaar configuratiebestand aan (laten we het noemen...). 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.confDe QR-code wordt als ASCII-teken op de console weergegeven. Deze kan vanuit de app worden gescand. Android VPN en configureer de VPN-tunnel automatisch.
Uitgang
afstelling WireGuard gewoonweg magisch vergeleken met OpenVPN.
Bron: www.habr.com
