Hur man ställer in WireGuard VPN-server och klient på Ubuntu 20.04

Konfigurera ett självvärdat VPN med Wireguard

A VPN (Virtual Private Network) låter användaren ansluta till ett privat nätverk på distans som om användarens dator var direkt ansluten till det privata nätverket. Tekniken utvecklades ursprungligen för att möjliggöra fjärråtkomst till ett företags interna privata nätverk, för anställda som faktiskt inte finns på platsen för det interna nätverket.

En VPN-server är utplacerad på platsen för det interna nätverket. Denna server är på det offentliga nätverket och kan nås med en VPN-klient av den anställde. Autentisering krävs för att ansluta till VPN-servern. Kommunikationen mellan VPN-servern och VPN-klienten säkras med ett tunnlingsprotokoll. Observera att denna kommunikation kan vara krypterad eller inte, men vanligtvis i de flesta VPN-protokoll är den krypterad.

En annan användning av VPN är att få anonymitet när du ansluter till Internet eller för att kringgå geografiska begränsningar som införs när du besöker vissa webbplatser. I sådana fall är det nätverk som användaren vill ansluta till inte ett privat nätverk utan istället är det Internet.

Många VPN-protokoll har utvecklats under åren. Dessa protokoll använder sig av olika tunnlingsprotokoll och krypteringsalgoritmer för kommunikation mellan servern och klienten.

Ett sådant protokoll, som har fått stor användning nyligen, är Trådskydd. Wireguard är lättare, enklare och mer presterande än välkända traditionellt använda VPN-protokoll som OpenVPN, IPSec. Det är redan implementerat för Windows, Mac OS och ett stort antal Linux-distributioner. I Linux är den implementerad som en kärnmodul. Det är tillgängligt i officiella arkiv för Ubuntu 20.04.

I den här artikeln kommer vi att se hur du ställer in en Wireguard VPN-server och klient i Ubuntu 20.04.

Installation

För den här artikeln ställer jag in en Wireguard Server på en Ubuntu 20.04 Linode och Wireguard Client på min lokala dator med Ubuntu 20.04.

Förpackningen trådskydd installerar både Wireguard Server och Client. Kör följande kommando på både serverdatorn och klientdatorn.

sudo apt installera wireguard

Serverkonfiguration

Säkerhetsnycklar

Vi behöver generera en uppsättning offentliga/privata nyckelpar för att autentisera och säkra Wireguard-anslutningen. Detta kan göras med hjälp av följande kommandon:

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

Observera att vi utför alla konfigurationsuppgifter som en superanvändare. Anledningen är att tillgången till katalogen /etc/wireguard förhindras för normala användare, och katalogåtkomst kan inte erhållas med bara sudo-privilegier för en normal användare.

Därefter ställer vi in ​​filskapandemasken till 077. Detta innebär att när en ny fil skapas i den här mappen av någon process, kommer dess behörigheter automatiskt att maskeras med 077. T.ex. om en fil skapas i den här mappen med behörigheter 777, maskeras den automatiskt och behörigheterna blir i praktiken 700. Detta görs så att endast ägaren av filen har alla behörigheter på filen, och alla andra har inga behörigheter.

På nästa rad, vi genererar det offentliga/privata nyckelparet för servern. De sparas i filer privat_nyckel och public_key. För att se nycklarna, kör:

katt privat_nyckel katt offentlig nyckel

Kopiera den privata nyckeln, vi behöver den i nästa steg.

Notera: Dela aldrig din privata nyckel offentligt!

Konfigurationsfil

Låt oss skapa en konfigurationsfil för Wireguard-servern. Du kan välja vilket namn som helst för filen. Vi kommer att skapa en fil wg0.conf i detta exempel.

vim wg0.conf

Lägg till följande i filen.

[Gränssnitt] Adress = 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 FRAMÅT -i wg0 -j ACCEPTERAR; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FRAMÅT -i wg0 -j ACCEPTERA; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FRAMÅT -i wg0 -j ACCEPTERAR; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE 

Klistra in den privata nyckeln som vi tidigare kopierade på rad 5 i koden ovan.

Vi måste konfigurera Wireguard på ett annat (virtuellt) subnät än serverns IP-adress. Här har jag använt 10.20.43.1 för servern och kommer att använda 10.20.43.2 för klienten. Alla undernät kan användas här. För att få serverns och gränssnittets IP-adress, kör:

ifconfig

Notera serverns IP-adress. Detta krävs under klientkonfigurationen.

Gränssnittet som används av servern, som visas i bilden ovan, är eth0. Gränssnittsnamnet kan skilja sig beroende på användarens nätverk, det kan vara det wlan0 eller wlp2s0 om användaren är ansluten till ett WiFi-nätverk med hjälp av ett trådlöst kort.

Ersätt i Skicka upp och PostDown med ditt gränssnitt; i detta exempel är det eth0.Skicka upp och PostDown direktiv används för att specificera vilka kommandon som ska köras när servern startar respektive stoppar. I vårt exempel använder vi iptables kommando för att ställa in IP-regler så att serverns IP-adress delas av klienterna. Reglerna försvinner när servern stannar.

Spara och avsluta filen. När du använder vim, tryck Esc, skriv sedan :wq och tryck Stiga på för att spara och avsluta.

Om du använder en ufw brandvägg på servern måste vi tillåta UDP-anslutningar till porten för VPN-servern, 51190.

ufw tillåt 51190/udp

Starta tjänsten

Nu när konfigurationen är klar kan vi starta Wireguard VPN-tjänsten.

Att möjliggöra tjänsten för att starta vid uppstart, kör:

systemctl aktivera wg-quick@wg0

Notera det här wg0 är namnet på konfigurationsfilen.

Att börja tjänsten, kör:

tjänsten wg-quick@wg0 start

Kontrollera att tjänsten har startat framgångsrikt:

tjänsten wg-quick@wg0 status

Kontrollera att gränssnittet vi skapade i konfigurationsfilen har startat med IP-kommandot.

ip en show wg0

Wireguard VPN-servern är nu konfigurerad och igång. Låt oss konfigurera klienten nu.

Klientkonfiguration

Klientkonfiguration för Wireguard är mer eller mindre densamma som en serverkonfiguration. Vi genererar nycklarna för klienten och skapar sedan en konfigurationsfil.

Säkerhetsnycklar

För att generera den offentliga/privata nyckeln par för klienten, kör:

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

De offentliga och privata nycklarna för klienten genereras nu i respektive filer client_private_key och client_public_key.

Kontrollera att de har skapats med hjälp av katt kommando.

cat client_private_key cat client_public_key

Kopiera den visade privata nyckeln eftersom vi behöver lägga till den i konfigurationsfilen för klienten.

Konfigurationsfil

Skapa konfigurationsfilen med vilket namn du vill. Vi kommer att skapa den med namnet wg0-klient för detta exempel.

vim wg0-client.conf

Lägg till följande konfiguration.

[Gränssnitt] # IP-adress och privat nyckel för klientadressen = 10.20.43.2/24 PrivateKey = [Peer] # Offentlig nyckel, IP-adress och port för servern PublicKey = Endpoint = :51190 AllowedIPs = 0.0.0.0/0, : :/0

Ange subnätadressen för klienten. Som beskrivits tidigare använder vi 10.20.43.2 för kunden i detta exempel.

Lägg till klientens privata nyckel genererade i föregående steg på rad 4 i konfigurationskoden ovan.

Under "Peer" lägger vi till information om Wireguard VPN-servern vi vill ansluta till.

Ange serverns publika nyckel. Gå in i serverns IP-adress, som vi tidigare noterat, och port i det givna formatet mot Slutpunkt. Detta är den port som vi angav i serverkonfigurationsfilen och på vilken VPN-tjänst på servern startade.

Tillåtna IP-adresser bör anges som givna (0.0.0.0/0) så att varje begäran på en dynamisk publik IP som används av klienten alltid kommer att vidarebefordras till VPN-servern.

Spara och avsluta filen. När du använder vim, tryck Esc, skriv sedan :wq och tryck Stiga på för att spara och avsluta.

Aktivera kundtjänsten att köra med varje start och starta den.

systemctl aktivera wg-quick@wg-client-tjänsten wg-quick@wg-client start

Kontrollera om tjänsten har startat.

tjänsten wg-quick@wg-client status

Lägger till Peer till servern

Nu har vi VPN-servern och klienten igång. En säker tunnel mellan de två upprättas dock inte om vi inte upprättar en peer-to-peer-anslutning mellan servern och klienten.

Gå tillbaka till servern. Först, stoppa VPN-tjänsten.

tjänsten wg-quick@wg0 stopp

Öppna sedan konfigurationsfilen till lägga till konfiguration för peer (klient).

vim /etc/wireguard/wg0.conf

Bifoga följande rader till filen.

[Peer] PublicKey = AllowedIPs = 10.20.43.2/32

Nu, starta VPN-tjänsten igen.

tjänsten wg-quick@wg0 start

Det är allt! Detta är all konfiguration som behövs för Wireguard VPN-klient och serverinstallation. Låt oss nu testa vår VPN.

Testar VPN

Låt oss först göra en enkel ping från klienten till servern för att säkerställa att VPN-tunnelkommunikationen fungerar. Kör följande på klienten:

ping 10.20.43.1

Nästa, öppna en webbläsare och öppna valfri webbplats för att kontrollera om du kan ansluta till Internet från klientdatorn. Du kan också kontrollera din internetanslutning från kommandoraden med hjälp av wget.

wget 

Nu har vi kontrollerat tunnelanslutningen och internetanslutningen. Om båda fungerar måste vi nu se till att all internettrafik som kommer till klienten passerar genom servern.

För detta behöver vi helt enkelt kontrollera klientens IP-adress som ses av Internet. Ett sätt att göra det är att gå till whatsmyip.org. Eller från kommandoraden kan vi fråga en annan liknande tjänst som heter IP-info, med hjälp av Curl.

Kör följande på klientdatorn

curl //ipinfo.io/ip

Ja. Det är den offentliga IP-adressen för Linode där VPN-servern är värd. Detta är hur anonymitet uppnås med VPN, eftersom över hela Internet nu IP-adressen för VPN-servern ses och inte för din dator.

Slutsats

Den enkla installationen är en av de viktigaste fördelarna med Wireguard jämfört med traditionell VPN-programvara som OpenVPN, som behöver en högre nivå av nätverks- och routingkunskaper för att ställa in. Det finns dock en brist på detaljerad officiell dokumentation för Wireguard vilket kan orsaka problem om din Wireguard-installation ger fel eller inte fungerar som förväntat.

Ändå är Wireguard ett utmärkt val om du vill ha en självvärd VPN för säker kommunikation över Internet. För att lära dig mer om Wireguard och de protokoll och tekniker den använder kan du kolla in den officiella webbplatsen.