Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

Stel een zelf-gehoste VPN in met Wireguard

Met een VPN (Virtual Private Network) kan de gebruiker op afstand verbinding maken met een privénetwerk alsof de computer van de gebruiker rechtstreeks is verbonden met het privénetwerk. De technologie is oorspronkelijk ontwikkeld om externe toegang tot het interne privénetwerk van een bedrijf mogelijk te maken voor werknemers die niet daadwerkelijk aanwezig zijn op de locatie van het interne netwerk.

Op de locatie van het interne netwerk wordt een VPN Server ingezet. Deze server bevindt zich op het openbare netwerk en is door de medewerker via een VPN-client te benaderen. Authenticatie is nodig om verbinding te maken met de VPN-server. De communicatie tussen de VPN-server en VPN-client is beveiligd met behulp van een tunnelingprotocol. Merk op dat deze communicatie al dan niet versleuteld kan zijn, maar meestal in de meeste VPN-protocollen is het versleuteld.

Een ander gebruik van VPN is om anonimiteit te verkrijgen bij toegang tot internet of om geografische beperkingen te omzeilen die zijn opgelegd bij het bezoeken van sommige websites. In dergelijke gevallen is het netwerk waarmee de gebruiker verbinding wil maken geen particulier netwerk, maar internet.

In de loop der jaren zijn er veel VPN-protocollen ontwikkeld. Deze protocollen maken gebruik van verschillende tunnelingprotocollen en encryptie-algoritmen voor communicatie tussen de server en de client.

Een voorbeeld van zo'n protocol, dat de laatste tijd veel gebruikt wordt, is Wireguard . Wireguard is lichter, eenvoudiger en krachtiger dan de bekende traditioneel gebruikte VPN-protocollen zoals OpenVPN, IPSec. Het is al geïmplementeerd voor Windows, Mac OS en een groot aantal Linux-distributies. In Linux is het geïmplementeerd als een kernelmodule. Het is beschikbaar in officiële repositories van Ubuntu 20.04.

In dit artikel zullen we zien hoe u een Wireguard VPN-server en -client in Ubuntu 20.04 kunt instellen.

Installatie

Voor dit artikel ben ik een Wireguard-server aan het opzetten op een Ubuntu 20.04 Linode en Wireguard Client op mijn lokale computer met Ubuntu 20.04.

Het pakket wireguardinstalleert zowel Wireguard Server als Client. Voer de volgende opdracht uit op zowel de servercomputer als de clientcomputer.

sudo apt install wireguard

Serverconfiguratie

Beveiligingssleutels

We moeten een set openbare/private sleutelparen genereren om de Wireguard-verbinding te verifiëren en te beveiligen. Dit kan met de volgende commando's:

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key

Merk op dat we alle configuratietaken als superuser uitvoeren. De reden is dat toegang tot de directory /etc/wireguardwordt voorkomen voor normale gebruikers, en directory-toegang kan niet worden verkregen met alleen sudo-privileges voor een normale gebruiker.

Vervolgens stellen we het masker voor het maken van bestanden in op077 . Dit betekent dat wanneer door een proces een nieuw bestand in deze map wordt gemaakt, de machtigingen automatisch worden gemaskeerd met 077. Bv. als een bestand in deze map wordt gemaakt met machtigingen 777, wordt het automatisch gemaskeerd en worden de machtigingen effectief 700. Dit wordt gedaan zodat alleen de eigenaar van het bestand alle machtigingen voor het bestand heeft en alle anderen geen machtigingen.

Op de volgende regel genereren we het openbare/private sleutelpaar voor de server. Ze worden opgeslagen in bestanden private_keyen public_key. Voer het volgende uit om de sleutels te bekijken:

cat private_key
cat public_key

Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

Kopieer de privésleutel, we hebben deze nodig in de volgende stap.

Opmerking: deel uw privésleutel nooit openbaar!

Configuratiebestand

Laten we een configuratiebestand maken voor de Wireguard Server. U kunt elke naam voor het bestand kiezen. In wg0.confdit voorbeeld maken we een bestand aan.

vim wg0.conf

Voeg het volgende toe aan het bestand.

[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey = 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o  -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o  -j MASQUERADE

Plak de privésleutel die we eerder in regel 5 in de bovenstaande code hebben gekopieerd.

We moeten Wireguard configureren op een ander (virtueel) subnet dan het IP-adres van de server. Hier heb ik 10.20.43.1 voor de server gebruikt en 10.20.43.2 voor de client. Elk subnet kan hier worden gebruikt. Voer het volgende uit om het IP-adres van de server en de interface te krijgen:

ifconfig

Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

Het gemarkeerde deel is het IP-adres

Noteer het IP-adres van de server. Dit is vereist tijdens de clientconfiguratie.

De interface die door de server wordt gebruikt, zoals te zien is in de bovenstaande afbeelding, is eth0. De interfacenaam kan verschillen op basis van het netwerk van de gebruiker, wlan0of wlp2s0indien de gebruiker is verbonden met een WiFi-netwerk met behulp van een draadloze kaart.

Vervang de in PostUpen PostDowndoor uw interface; in dit voorbeeld is het eth0. PostUpen PostDownrichtlijnen worden gebruikt om aan te geven welke opdrachten moeten worden uitgevoerd wanneer de server respectievelijk start en stopt. In ons voorbeeld gebruiken we de iptablesopdracht om IP-regels zo in te stellen dat het IP-adres van de server wordt gedeeld door de clients. De regels vallen weg zodra de server stopt.

Sla het bestand op en sluit het af. Als u vim gebruikt, drukt u op Esc , typt u :wqen drukt u op Enter om op te slaan en af ​​te sluiten.

Als u een ufwfirewall op de server gebruikt, moeten we UDP-verbindingen toestaan ​​met de poort voor VPN-server, 51190.

ufw allow 51190/udp

De dienst starten

Nu de configuratie is voltooid, kunnen we de Wireguard VPN-service starten.

Voer het volgende uit om de service te laten starten tijdens het opstarten:

systemctl enable [email protected]

Merk op dat hier wg0de naam van het configuratiebestand is.

Voer het volgende uit om de service te starten:

service [email protected] start

Controleer of de service succesvol is gestart:

service [email protected] status

Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

Controleer met de IP-opdracht of de interface die we in het configuratiebestand hebben gemaakt, is gestart.

ip a show wg0

Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

De Wireguard VPN-server is nu ingesteld en actief. Laten we nu de client configureren.

Clientconfiguratie

Clientconfiguratie voor Wireguard is min of meer hetzelfde als een serverconfiguratie. We genereren de sleutels voor de client en maken vervolgens een configuratiebestand.

Beveiligingssleutels

Voer het volgende uit om het openbare/private sleutelpaar voor de client te genereren :

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key

De publieke en private sleutels voor de client worden nu respectievelijk gegenereerd in bestanden client_private_keyen client_public_key.

Controleer met de catopdracht of ze zijn gemaakt .

cat client_private_key
cat client_public_key

Kopieer de weergegeven privésleutel omdat we deze moeten toevoegen aan het configuratiebestand voor de klant.

Configuratiebestand

Maak het configuratiebestand met elke gewenste naam. We zullen het maken met de naam wg0-clientvoor dit voorbeeld.

vim wg0-client.conf

Voeg de volgende configuratie toe.

[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey = 

[Peer]
# Public key, IP Address and Port of the Server
PublicKey = 
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0

Voer het subnetadres voor de client in. Zoals eerder beschreven, gebruiken we 10.20.43.2 voor de klant in dit voorbeeld.

Voeg de persoonlijke sleutel van de klant die in de vorige stap is gegenereerd toe aan regel 4 in de bovenstaande configuratiecode.

Onder 'Peer' voegen we informatie toe over de Wireguard VPN-server waarmee we verbinding willen maken.

Voer de openbare sleutel van de server in. Voer het IP-adres van de server in , zoals we eerder hebben opgemerkt, en poort in het opgegeven formaat tegen Endpoint . Dit is de poort die we hebben opgegeven in het serverconfiguratiebestand en waarop de VPN-service op de server is gestart.

Toegestane IP's moeten worden ingevoerd zoals opgegeven (0.0.0.0/0), zodat elk verzoek op een dynamisch openbaar IP-adres dat door de client wordt gebruikt, altijd wordt doorgestuurd naar de VPN-server.

Sla het bestand op en sluit het af. Als u vim gebruikt, drukt u op Esc , typt u :wqen drukt u op Enter om op te slaan en af ​​te sluiten.

Schakel de clientservice in om bij elke opstart te worden uitgevoerd en start deze.

systemctl enable [email protected]
service [email protected] start

Controleer of de service is gestart.

service [email protected] status

Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

Peer aan de server toevoegen

Nu hebben we de VPN-server en -client in gebruik. Er wordt echter geen veilige tunnel tussen de twee tot stand gebracht, tenzij we een peer-to-peer-verbinding tot stand brengen tussen de server en de client.

Ga terug naar de server. Ten eerste, stop de VPN-dienst .

service [email protected] stop

Open vervolgens het configuratiebestand om configuratie voor de peer (client) toe te voegen .

vim /etc/wireguard/wg0.conf

Voeg de volgende regels toe aan het bestand.

[Peer]
PublicKey = 
AllowedIPs = 10.20.43.2/32

Nu start de VPN-service opnieuw .

service [email protected] start

Dat is het! Dit is alle configuratie die nodig is voor de installatie van de Wireguard VPN-client en -server. Laten we nu onze VPN testen.

De VPN testen

Laten we eerst een simpele ping doen van de client naar de server, om er zeker van te zijn dat de VPN-tunnelcommunicatie werkt. Voer het volgende uit op de client :

ping 10.20.43.1

Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

Vervolgens opent u een webbrowser en open een website om te controleren of je in staat om verbinding met het internet van de client machine. U kunt uw internetverbinding ook controleren vanaf de opdrachtregel met wget.

wget 

Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

Nu hebben we de tunnelconnectiviteit en de internetverbinding gecontroleerd. Als beide werken, moeten we er nu voor zorgen dat al het internetverkeer dat naar de client komt via de server gaat.

Hiervoor hoeven we alleen het IP-adres van de client te controleren zoals dit op internet wordt gezien. Een manier om dit te doen is door naar whatsmyip.org te gaan . Of anders kunnen we vanaf de opdrachtregel een andere soortgelijke service opvragen, genaamd IP-info, met behulp van Curl.

Voer het volgende uit op de clientcomputer:

curl https://ipinfo.io/ip

Hoe WireGuard VPN-server en -client op Ubuntu 20.04 in te stellen?

Ja. Het is het openbare IP-adres van de Linode waar de VPN-server wordt gehost. Dit is hoe anonimiteit wordt bereikt met behulp van VPN, aangezien nu overal op internet het IP-adres van de VPN-server wordt gezien en niet van uw computer.

Conclusie

Het installatiegemak is een van de belangrijkste voordelen van Wireguard ten opzichte van traditionele VPN-software zoals OpenVPN, waarvoor een hoger niveau van netwerk- en routeringskennis nodig is om in te stellen. Er is echter een gebrek aan gedetailleerde officiële documentatie voor Wireguard, wat problemen kan veroorzaken als uw Wireguard-configuratie fouten veroorzaakt of niet werkt zoals verwacht.

Desalniettemin is Wireguard een uitstekende keuze als u een zelf gehoste VPN wilt voor veilige communicatie via internet. Voor meer informatie over Wireguard en de protocollen en technologieën die het gebruikt, kun je de officiële site bezoeken .


Wi-Fi werkt niet op Ubuntu? Hier is hoe het te repareren

Wi-Fi werkt niet op Ubuntu? Hier is hoe het te repareren

Ubuntu is populair vanwege zijn robuustheid en relatief minder fouten. Maar het is zeker niet zonder problemen. Een voorbeeld van zo'n probleem is met zijn Wi-Fi-stuurprogramma. U kunt uw systeem alleen inschakelen om te ontdekken dat uw wifi niet werkt.

Hoe Linux-bestanden te verplaatsen met het Mv-commando

Hoe Linux-bestanden te verplaatsen met het Mv-commando

Hoewel je waarschijnlijk al weet hoe je een bestand in Linux moet verplaatsen met behulp van de GUI-bestandsbrowser, vraag je je misschien af ​​of er een verplaatsingsopdracht in de terminal is waarmee je snel bestanden naar verschillende mappen kunt verplaatsen. De mv-opdracht is degene die je wilt, en het is gemakkelijk te gebruiken met zijn eenvoudige syntaxis en een paar optionele veiligheidsvlaggen.

De 10 beste op Debian gebaseerde Linux-distributies

De 10 beste op Debian gebaseerde Linux-distributies

De standaard Debian en zijn populaire uitloper Ubuntu zijn geweldige, veelzijdige keuzes voor een Linux-systeem, maar als je meer gespecialiseerde behoeften hebt, wil je misschien een Debian-alternatief.

10 beste Linux-distributies voor ontwikkelaars

10 beste Linux-distributies voor ontwikkelaars

Hoewel Linux misschien niet het favoriete besturingssysteem is voor gewone gebruikers, is het de eerste keuze voor de meeste ontwikkelaars en programmeurs. Linux is een praktischer besturingssysteem dat expliciet is ontworpen met het oog op programmering en ontwikkelaars.

Leer hoe u Npm en Node.js op Ubuntu installeert

Leer hoe u Npm en Node.js op Ubuntu installeert

Node.js is in feite een open-source platformonafhankelijke JavaScript-runtimeomgeving. Als Node.js is ingeschakeld, kunt u JavaScript op uw Ubuntu-machine uitvoeren zonder dat u zich zorgen hoeft te maken over het openen van browsers. Het is gebouwd op Chrome's V8 JavaScript-engine en kan op meerdere manieren op Linux worden geïnstalleerd.

Een Sudo-gebruiker maken op Ubuntu 20.04 LTS

Een Sudo-gebruiker maken op Ubuntu 20.04 LTS

Geef root-privileges aan elke gebruiker met sudo op Ubuntu 20.04 LTS

Hoe het root-wachtwoord op Ubuntu 20.04 te wijzigen?

Hoe het root-wachtwoord op Ubuntu 20.04 te wijzigen?

Stel het root-wachtwoord in, reset en wijzig het in Ubuntu 20.04

Hoe Google Chrome te installeren op Ubuntu 20.04

Hoe Google Chrome te installeren op Ubuntu 20.04

Beknopte handleiding om Google Chrome te installeren vanaf de opdrachtregel op Ubuntu 20.04

Een FTP-server op Ubuntu installeren in 5 stappen

Een FTP-server op Ubuntu installeren in 5 stappen

Als je een Linux-server opzet, heb je FTP-toegang nodig. Dit betekent eerst een FTP-server installeren op Linux. Het zou een van de eerste dingen moeten zijn die u doet na het installeren van uw serverbesturingssysteem.

Hoe Ubuntu Dock op Ubuntu 20.04 uit te schakelen?

Hoe Ubuntu Dock op Ubuntu 20.04 uit te schakelen?

Soms is het beter om het dok te verlaten en weg te varen!

SSH inschakelen op Ubuntu 20.04

SSH inschakelen op Ubuntu 20.04

Overal veilig toegang tot uw Ubuntu-machine

Hoe Notepadqq te installeren op Ubuntu 20.04, een waardig Notepad ++ alternatief

Hoe Notepadqq te installeren op Ubuntu 20.04, een waardig Notepad ++ alternatief

Op zoek naar een waardig alternatief voor Notepad++ op Ubuntu? Zoek niet verder dan de gratis Notepadqq-app

Firefox bijwerken vanaf Terminal op Ubuntu Linux-pcs

Firefox bijwerken vanaf Terminal op Ubuntu Linux-pcs

Leer hoe u Firefox kunt bijwerken vanaf Terminal op een Ubuntu Linux-pc

Git installeren op Ubuntu 20.04 LTS

Git installeren op Ubuntu 20.04 LTS

Een van de eerste dingen die u op uw Linux-machine moet installeren:

Hoe het merk te repareren: opdracht niet gevonden Fout in Ubuntu

Hoe het merk te repareren: opdracht niet gevonden Fout in Ubuntu

Het make-commando is waarschijnlijk een van de meest gebruikte commando's in het Linux-ecosysteem. Deze opdracht wordt gebruikt om programma's rechtstreeks vanuit de broncode te bouwen en te compileren.

Kopiëren en plakken op Chromebook

Kopiëren en plakken op Chromebook

Het eerste dat u zich misschien afvraagt ​​bij het overschakelen naar een Chromebook, is hoe u de basisdingen moet doen: het soort dingen dat u in uw vorige besturingssysteem binnen handbereik had. Kopiëren en plakken is zo'n fundamentele functie die u op een of ander moment moet gebruiken.

Een typtest op Linux doen met tt

Een typtest op Linux doen met tt

In het moderne tijdperk van technologie is typen een van de meest voorkomende activiteiten voor veel beroepen geworden. Door sneller en nauwkeuriger te leren typen, kunt u meer dingen gedaan krijgen in dezelfde tijd.

Wi-Fi werkt niet op Ubuntu? Hier is hoe het te repareren

Wi-Fi werkt niet op Ubuntu? Hier is hoe het te repareren

Ubuntu is populair vanwege zijn robuustheid en relatief minder fouten. Maar het is zeker niet zonder problemen. Een voorbeeld van zo'n probleem is met zijn Wi-Fi-stuurprogramma. U kunt uw systeem alleen inschakelen om te ontdekken dat uw wifi niet werkt.

Hoe QR-codes op Chromebook te maken en te scannen

Hoe QR-codes op Chromebook te maken en te scannen

Quick Response-codes, of kortweg QR-codes, zijn geavanceerde barcodes die meer informatie bevatten dan een traditionele barcode. Deze codes zijn tweedimensionaal, zodat u ze verticaal of horizontaal kunt scannen.

Pakketten installeren en verwijderen in Arch Linux

Pakketten installeren en verwijderen in Arch Linux

Wilt u pakketten installeren op Arch Linux, maar weet u niet hoe? Veel mensen worden met dit probleem geconfronteerd wanneer ze voor het eerst migreren van op Debian gebaseerde distributies naar Arch. U kunt echter eenvoudig pakketten op uw Arch-gebaseerde systeem beheren met behulp van pakketbeheerders.

Hoe Spotify op Linux te installeren

Hoe Spotify op Linux te installeren

Spotify is een van de grootste muziekstreamingdiensten die er zijn. Het heeft native clients voor zowel mobiele (Android en iOS) als desktop (Mac en Windows) apparaten.

Beste gratis video-editor voor Ubuntu in 2020

Beste gratis video-editor voor Ubuntu in 2020

Afgezien van alle pluisjes, hier is een lijst met de beste gratis video-editors voor Ubuntu die je kunt gebruiken om verbluffende video's te maken.

9 basiscommandos om aan de slag te gaan met Linux

9 basiscommandos om aan de slag te gaan met Linux

Linux-handleidingen verwachten vaak dat je bepaalde bewerkingen in de terminal uitvoert, wat in eerste instantie intimiderend kan lijken. Maar maak je geen zorgen; deze cheatsheet voor Linux-opdrachten behandelt het proces van het openen van een terminal en het geven van een paar nuttige opdrachten.

Hoe Linux-bestanden te verplaatsen met het Mv-commando

Hoe Linux-bestanden te verplaatsen met het Mv-commando

Hoewel je waarschijnlijk al weet hoe je een bestand in Linux moet verplaatsen met behulp van de GUI-bestandsbrowser, vraag je je misschien af ​​of er een verplaatsingsopdracht in de terminal is waarmee je snel bestanden naar verschillende mappen kunt verplaatsen. De mv-opdracht is degene die je wilt, en het is gemakkelijk te gebruiken met zijn eenvoudige syntaxis en een paar optionele veiligheidsvlaggen.

De 10 beste op Debian gebaseerde Linux-distributies

De 10 beste op Debian gebaseerde Linux-distributies

De standaard Debian en zijn populaire uitloper Ubuntu zijn geweldige, veelzijdige keuzes voor een Linux-systeem, maar als je meer gespecialiseerde behoeften hebt, wil je misschien een Debian-alternatief.