zondag 18 februari 2024

Wireguard, de Fritzbox en Linux Mint

Eerst moet je Wireguard installeren. Daarna de GUI compileren vanaf de broncode. Dat gaat alsvolgt:

cd ~/
sudo apt install wireguard git dh-autoreconf libglib2.0-dev intltool build-essential libgtk-3-dev libnma-dev libsecret-1-dev network-manager-dev resolvconf

git clone https://github.com/max-moser/network-manager-wireguard
cd network-manager-wireguard
./autogen.sh --without-libnm-glib

./configure --without-libnm-glib --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/NetworkManager --localstatedir=/var

make
sudo make install

Als alles goed geïnstalleerd is, zou de WireGuard optie in het netwerkmenu zichtbaar moeten worden. (Settings -> Network -> VPN)

Als je Wireguard GUI wilt de-installeren geef in de directory waarin network-manager-wireguard staat in de terminal dan dit commando:

sudo make uninstall

Nu voer je de config file in:

nmcli connection import type wireguard file wg_config.conf

Om de wireguard verbinding te starten:

#!/bin/bash
nmcli connection up wg_config

en om deze weer te stoppen:

#!/bin/bash
nmcli connection down wg_config

Deze commando's kun je in een bash script stoppen om ze vanuit de command line te starten en stoppen.

Gedetailleerde installatie van WireGuard in Linux Mint

WireGuard is een open-source VPN-protocolimplementatie die snel aan populariteit wint onder VPN-gebruikers vanwege de snelheid, het gebruiksgemak en de goed ontworpen codebasis. De WireGuard-kernelmodule wordt geleverd met de hoofdlijn Linux-kernel 5.6 of hoger, en de gebruikerstools zijn al opgenomen in de basisrepository’s van alle moderne Linux-distributies. Als je een doe-het-zelf-VPN-router wilt opzetten op een openbare VPS die je beheert, is er echt geen reden om WireGuard niet te proberen.

Het opzetten van een WireGuard VPN-router vereist geen specialistische kennis van het onderliggende VPN-protocol, noch het leren van cryptische configuratietaal of het verkennen van enorme configuratieruimte. Er zijn ook verschillende gebruiksvriendelijke frontends in de maak die de VPN-configuratie aan de clientzijde eenvoudig maken.

Deze tutorial richt zich op het instellen van de WireGuard VPN-client met behulp van een populaire netwerkbeheertool naar keuze: NetworkManager GUI.
Aannames

In deze tutorial ga ik ervan uit dat je al ergens een WireGuard VPN-router hebt opgezet (bijvoorbeeld een publiek toegankelijke VPS).

Ik ga ook uit van de volgende instellingen.

 WAN-adres van de WireGuard VPN-server: 192.168.122.104
 Luister-UDP-poort van de WireGuard VPN-server: 51820
 VPN-adres van de WireGuard VPN-server: 10.0.0.1/24
 VPN-adres van WireGuard VPN-client: 10.0.0.2/24Stap één: Controleer de vereiste

Om de WireGuard VPN-client met NetworkManager GUI te kunnen configureren, heeft u NetworkManager met versie 1.26.2 of hoger nodig. Controleer dus eerst de versie van uw NetworkManager voordat u verdergaat. Ubuntu 20.10 en Linux Mint 21 of later voldoen aan deze vereiste. Deze tutorial is dus alleen van toepassing op een van die Linux-desktopomgevingen.

Stap twee: Installeer WireGuard

Installeer WireGuard met de standaard pakketbeheerder.
Voor Ubuntu:

sudo apt install wireguard

Stap drie: maak een cryptografisch sleutelpaar

Maak vervolgens een openbaar/privaat sleutelpaar voor de WireGuard VPN-client. Laten we hiervoor eerst naar de root overschakelen. De rest van de stappen in de zelfstudie worden uitgevoerd als root.

sudo -i

Gebruik de opdracht wg om een sleutelpaar te maken en deze op te slaan in /etc/wireguard.

cd /etc/wireguard
umask 077
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Stap vier: Voeg de openbare sleutel van de client toe aan de WireGuard VPN-server

Om ervoor te zorgen dat de WireGuard-client met de WireGuard VPN-server kan praten, moet u expliciet de openbare sleutel van de client aan de VPN-server toevoegen. WireGuard is tenslotte een peer-to-peer VPN. Log dus in op de WireGuard VPN-serverhost en voer de volgende opdracht uit.

wg set wg0 peer <client-public-key> allowed-ips <client-VPN-address>

Houd er rekening mee dat in dit voorbeeld het VPN-IP-adres van de client 10.0.0.2 is.

Stap vijf: Maak een netwerkverbinding met de GUI van NetworkManager’s Connection Editor

Voer vervolgens nm-connection-editor uit vanaf de opdrachtregel en voeg een nieuwe netwerkverbinding toe voor WireGuard VPN. Zorg ervoor dat u nm-connection-editor als root start, omdat er een configuratiebestand moet worden gemaakt in

/etc/NetworkManager/system-connections

Klik in de GUI van Netwerkverbindingen op de knop +.



Met NetworkManager versie 1.26.2 en hoger kunt u een WireGuard-type verbinding tot stand brengen. Ga dus door en kies WireGuard als verbindingstype.

Hierdoor wordt als volgt een venster voor de verbindingseditor geopend. Stel op het tabblad WireGuard de interfacenaam in op wg0 en vul de privatekey in. Deze privésleutel moet afkomstig zijn uit de inhoud van /etc/wireguard/privatekey die u zojuist in stap 3 hebt aangemaakt. Klik vervolgens onderaan op de knop Toevoegen / Add, waarmee u een WireGuard VPN-server als peer kunt specificeren.

Vul in de GUI van de WireGuard -peereditor de velden Publieke sleutel, Toegestane IP’s en Eindpunt in. De publieke sleutel moet afkomstig zijn van de WireGuard-server. Het eindpunt bestaat uit het WAN IP-adres van de VPN-server en de UDP-poort waarop de server luistert. Nadat u ze heeft ingediend, klikt u op de knop Toepassen.


Op dit punt ziet u dat de VPN-server als peer is toegevoegd:


Ga vervolgens naar het tabblad IPv4-instellingen/IPv4Settings en configureer een privé VPN IP-adres dat moet worden toegewezen aan de WireGuard VPN-client, namelijk 10.0.0.2/24. Geef als gateway het VPN IP-adres van de WireGuard VPN-server op, namelijk 10.0.0.1/24. Voor DNS-servers kunt u elke openbare DNS-server kiezen (bijvoorbeeld 8.8.8.8). Klik op de knop Opslaan.



Ga nu naar het tabblad Algemeen en schakel het selectievakje naast Automatisch verbinden met prioriteit in. Hierdoor wordt deze WireGuard-verbinding automatisch geactiveerd en wordt er een VPN-verbinding tot stand gebracht met de WireGuard VPN-server. Klik op de knop Opslaan om te voltooien.




Stap zes: Controleer de WireGuard VPN-connectiviteit

Op dit punt zou er een WireGuard VPN-verbinding actief moeten zijn en al het uitgaande verkeer van de client zou via de WireGuard VPN-server moeten worden gerouteerd.



Om de WireGuard VPN-connectiviteit aan de clientzijde te controleren, kunt u proberen een externe host (bijvoorbeeld 8.8.8.8) te pingen vanaf de host van de client. Om te verifiëren dat het pingverkeer via de WireGuard VPN-server wordt geleid, gebruikt u de ip-opdracht.

ping 8.8.8.8
ip route get 8.8.8.8

De opdracht ip route get toont de route die wordt gebruikt om de opgegeven bestemming te bereiken. De uitvoer van het bovenstaande commando bevestigt dat verkeer dat bestemd is voor 8.8.8.8 wordt gerouteerd via de wg0-interface, en niet via de WAN-interface van de host.

Een andere manier om de VPN-connectiviteit te verifiëren is door tcpdump uit te voeren op de virtuele interface wg0 van WireGuard en te controleren of de interface ICMP-verzoek- en responsverkeer ziet dat wordt gegenereerd door de ping-opdracht.

tcpdump -i wg0

Optioneel: Beheer een WireGuard-verbinding vanaf de opdrachtregel

Zodra een WireGuard-verbinding met succes tot stand is gebracht met Network Manager GUI, kunt u de verbinding als volgt vanaf de opdrachtregel beheren met nmcli.

Voer eenvoudigweg nmcli uit om de status van de VPN-verbinding te zien.

nmcli


Om de gedetailleerde verbindingseigenschappen van WireGuard VPN te bekijken:

nmcli --overview connection show 'WireGuard connection 1'

WireGuard VPN starten of stoppen:

nmcli connection up 'WireGuard connection 1'
nmcli connection down 'WireGuard connection 1'

Om de automatische startstatus van WireGuard VPN te controleren:

nmcli connection show 'WireGuard connection 1' | grep autoconnect

Om het automatisch starten van WireGuard VPN in/uit te schakelen:

nmcli connection modify 'WireGuard connection 1' connection.autoconnect yes
nmcli connection modify 'WireGuard connection 1' connection.autoconnect no

Om de WireGuard VPN-verbinding te verwijderen:

nmcli connection delete 'WireGuard connection 1'

WireGuard VPN-probleemoplossing


Symptoom: u kunt het privé-IP-adres van de WireGuard VPN-server (10.0.0.1) niet pingen.

Oplossing 1: controleer de bereikbaarheid van de UDP-poortZorg ervoor dat de UDP-luisterpoort van de VPN-server toegankelijk is voor de client. Om te controleren of dat het geval is, gebruikt u het nc-commando.

nc -zvu <VPN-server's-WAN-address> <UDP-port>

In ons voorbeeld:

nc -zvu 192.168.122.104 51820

Verbinding met 192.168.122.240 51820 poort [udp/*] gelukt!

Als u de UDP-poort niet kunt bereiken, is dat waarschijnlijk de firewall op de server die inkomend verkeer naar de UDP-poort blokkeert. Zorg ervoor dat u de poort in de firewall aan de serverzijde openzet.

Oplossing 2: Controleer of de openbare sleutel van de client is toegevoegd aan de VPN-server

Een andere mogelijkheid is dat u bent vergeten de openbare sleutel van de klant toe te voegen aan de WireGuard VPN-server. Zoals beschreven in stap 4 van deze tutorial, gebruik je de opdracht wg om dat te doen:

wg set wg0 peer  allowed-ips

Samenvatting

Deze tutorial heeft je opnieuw bewezen hoe eenvoudig het is om WireGuard VPN op een moderne Linux-desktop in te stellen. Hoewel NetworkManager voldoende ondersteuning biedt voor WireGuard VPN, is de volledige desktopintegratie (tenminste op de GNOME-desktop) nog steeds niet aanwezig.

Vanaf NetworkManager 1.26.2, wanneer WireGuard VPN actief is, toont de netwerkindicator bijvoorbeeld niet het statuspictogram voor WireGuard.

Linux Mint 21.2 gebruikt networkmanager 1.36.6



Geen opmerkingen:

Een reactie posten

Opmerking: Alleen leden van deze blog kunnen een reactie posten.

Copy a website with Httrack

Met de applicatie httrack kunt u eenvoudig een gehele website naar uw harde schijf kopiëren. Hoewel httrack een terminalapplicatie is zonder...