Sådan konfigurerer du WireGuard VPN-server og -klient på Ubuntu 20.04

Konfigurer en selv-hostet VPN ved hjælp af Wireguard

EN VPN (Virtual Private Network) giver brugeren mulighed for at oprette forbindelse til et privat netværk eksternt, som om brugerens computer var direkte forbundet til det private netværk. Teknologien blev oprindeligt udviklet for at tillade fjernadgang til en virksomheds interne private netværk for medarbejdere, der ikke faktisk er til stede på det interne netværks placering.

En VPN-server er installeret på placeringen af ​​det interne netværk. Denne server er på det offentlige netværk og kan tilgås ved hjælp af en VPN-klient af medarbejderen. Godkendelse er nødvendig for at oprette forbindelse til VPN-serveren. Kommunikationen mellem VPN-serveren og VPN-klienten er sikret ved hjælp af en tunneling-protokol. Bemærk, at denne kommunikation muligvis er krypteret eller ikke, men normalt i de fleste VPN-protokoller er den krypteret.

En anden brug af VPN er at opnå anonymitet, når du får adgang til internettet eller for at omgå geografiske begrænsninger, der er pålagt under adgang til nogle websteder. I sådanne tilfælde er det netværk, som brugeren ønsker at oprette forbindelse til, ikke et privat netværk, men i stedet internettet.

Mange VPN-protokoller er blevet udviklet gennem årene. Disse protokoller gør brug af forskellige tunnelprotokoller og krypteringsalgoritmer til kommunikation mellem serveren og klienten.

En sådan protokol, som er ved at vinde udbredt brug for nylig, er Wireguard. Wireguard er lettere, enklere og mere ydende end velkendte traditionelt brugte VPN-protokoller såsom OpenVPN, IPSec. Det er allerede implementeret til Windows, Mac OS og et stort antal Linux-distributioner. I Linux er det implementeret som et kernemodul. Det er tilgængeligt i officielle arkiver i Ubuntu 20.04.

I denne artikel vil vi se, hvordan du opsætter en Wireguard VPN-server og -klient i Ubuntu 20.04.

Installation

Til denne artikel opsætter jeg en Wireguard Server på en Ubuntu 20.04 Linode og Wireguard Client på min lokale maskine med Ubuntu 20.04.

Pakken wireguard installerer både Wireguard Server og Client. Kør følgende kommando på både servermaskinen og klientmaskinen.

sudo apt installer wireguard

Serverkonfiguration

Sikkerhedsnøgler

Vi skal generere et sæt offentlige/private nøglepar for at godkende og sikre Wireguard-forbindelsen. Dette kan gøres ved hjælp af følgende kommandoer:

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

Bemærk, at vi udfører alle konfigurationsopgaverne som superbruger. Årsagen er, at adgang til biblioteket /etc/wireguard er forhindret for normale brugere, og biblioteksadgang kan ikke opnås med bare sudo-privilegier for en normal bruger.

Dernæst indstiller vi filoprettelsesmasken til 077. Dette betyder, at når en ny fil oprettes i denne mappe ved en hvilken som helst proces, vil dens tilladelser automatisk blive maskeret med 077. F.eks. hvis der oprettes en fil i denne mappe med tilladelser 777, maskeres den automatisk, og tilladelser bliver reelt 700. Dette gøres, så det kun er ejeren af ​​filen, der har alle tilladelser til filen, og alle andre har ingen tilladelser.

På næste linje, vi genererer det offentlige/private nøglepar for serveren. De gemmes i filer privat_nøgle og offentlig_nøgle. For at se nøglerne skal du køre:

kat privat_nøgle kat offentlig_nøgle

Kopier den private nøgle, vi skal bruge den i næste trin.

Bemærk: Del aldrig din private nøgle offentligt!

Konfigurationsfil

Lad os oprette en konfigurationsfil til Wireguard-serveren. Du kan vælge et hvilket som helst navn til filen. Vi opretter en fil wg0.conf i dette eksempel.

vim wg0.conf

Tilføj følgende til filen.

[Interface] Adresse = 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 FRAM -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE 

Indsæt den private nøgle, som vi tidligere kopierede i linje 5 i koden ovenfor.

Vi skal konfigurere Wireguard på et andet (virtuelt) undernet end serverens IP-adresse. Her har jeg brugt 10.20.43.1 til serveren og vil bruge 10.20.43.2 til klienten. Ethvert undernet kan bruges her. For at få serverens og grænsefladens IP-adresse skal du køre:

ifconfig

Bemærk serverens IP-adresse. Dette er påkrævet under klientkonfiguration.

Den grænseflade, der bruges af serveren, som det ses på billedet ovenfor, er eth0. Interfacenavnet kan variere baseret på brugerens netværk, det kan være wlan0 eller wlp2s0 i tilfælde af at brugeren er forbundet til et WiFi-netværk ved hjælp af et trådløst kort.

Udskift i PostUp og PostDown med din grænseflade; i dette eksempel er det eth0.PostUp og PostDown direktiver bruges til at angive, hvilke kommandoer der skal køres, når serveren henholdsvis starter og stopper. I vores eksempel bruger vi iptables kommando til at indstille IP-regler, således at serverens IP-adresse deles af klienterne. Reglerne vil falde, når serveren stopper.

Gem og afslut filen. Når du bruger vim, skal du trykke på Esc, og skriv derefter :wq og tryk Gå ind for at gemme og afslutte.

Hvis du bruger en ufw firewall på serveren, skal vi tillade UDP-forbindelser til porten for VPN-serveren, 51190.

ufw tillade 51190/udp

Start af tjenesten

Nu da konfigurationen er færdig, kan vi starte Wireguard VPN-tjenesten.

At muliggøre tjenesten til at starte ved opstart, kør:

systemctl aktiver wg-quick@wg0

Bemærk det her wg0 er navnet på konfigurationsfilen.

At begynde tjenesten, kør:

service wg-quick@wg0 start

Verificere at tjenesten er startet med succes:

tjeneste wg-quick@wg0 status

Bekræft, at grænsefladen vi oprettede i konfigurationsfilen er startet ved hjælp af IP-kommandoen.

ip et show wg0

Wireguard VPN-serveren er nu sat op og kører. Lad os konfigurere klienten nu.

Klientkonfiguration

Klientkonfiguration for Wireguard er mere eller mindre det samme som en serverkonfiguration. Vi genererer nøglerne til klienten og opretter derefter en konfigurationsfil.

Sikkerhedsnøgler

For at generere den offentlige/private nøgle par for klienten, kør:

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

De offentlige og private nøgler til klienten genereres nu i henholdsvis filer klient_privat_nøgle og klient_offentlig_nøgle.

Tjek at de er blevet oprettet vha kat kommando.

kat klient_privat_nøgle kat klient_offentlig_nøgle

Kopier den viste private nøgle, da vi skal tilføje den til konfigurationsfilen til klienten.

Konfigurationsfil

Opret konfigurationsfilen med hvilket som helst navn du ønsker. Vi vil oprette det med navnet wg0-klient for dette eksempel.

vim wg0-client.conf

Tilføj følgende konfiguration.

[Grænseflade] # IP-adresse og privat nøgle for klientadressen = 10.20.43.2/24 PrivateKey = [Peer] # Offentlig nøgle, IP-adresse og port på serveren PublicKey = Endpoint = :51190 Tilladte IPs = 0.0.0.0/0, : :/0

Indtast undernetadressen for klienten. Som tidligere beskrevet bruger vi 10.20.43.2 for klienten i dette eksempel.

Tilføj klientens private nøgle genereret i det foregående trin i linje 4 i konfigurationskoden ovenfor.

Under 'Peer' tilføjer vi oplysninger om Wireguard VPN-serveren vi ønsker at forbinde til.

Indtast serverens offentlige nøgle. Gå ind i serverens IP-adresse, som vi tidligere har noteret, og port i det givne format imod Slutpunkt. Dette er den port, vi har angivet i serverkonfigurationsfilen, og som VPN-tjenesten på serveren startede på.

Tilladte IP'er skal indtastes som givet (0.0.0.0/0), så enhver anmodning på en dynamisk offentlig IP, der bruges af klienten, altid videresendes til VPN-serveren.

Gem og afslut filen. Når du bruger vim, skal du trykke på Esc, og skriv derefter :wq og tryk Gå ind for at gemme og afslutte.

Aktiver kundeservice at køre med hver boot, og starte den.

systemctl aktiver wg-quick@wg-client service wg-quick@wg-client start

Verificere hvis tjenesten er startet.

service wg-quick@wg-client status

Tilføjelse af peer til serveren

Nu har vi VPN-serveren og klienten op at køre. En sikker tunnel mellem de to etableres dog ikke, medmindre vi etablerer en peer-to-peer-forbindelse mellem serveren og klienten.

Gå tilbage til serveren. Først, stoppe VPN-tjenesten.

service wg-quick@wg0 stop

Åbn derefter konfigurationsfilen til tilføje konfiguration for peeren (klient).

vim /etc/wireguard/wg0.conf

Tilføj følgende linjer til filen.

[Peer] PublicKey = Tilladte IP'er = 10.20.43.2/32

Nu, start VPN-tjenesten igen.

service wg-quick@wg0 start

Det er det! Dette er al den konfiguration, der er nødvendig for Wireguard VPN-klient- og serveropsætning. Lad os nu teste vores VPN.

Test af VPN

Lad os først lave et simpelt ping fra klienten til serveren for at sikre, at VPN-tunnelkommunikationen fungerer. Kør følgende på klienten:

ping 10.20.43.1

Næste, åbne en webbrowser og åbne et hvilket som helst websted for at kontrollere, om du er i stand til at oprette forbindelse til internettet fra klientmaskinen. Du kan også kontrollere din internetforbindelse fra kommandolinjen ved hjælp af wget.

wget 

Nu har vi tjekket tunnelforbindelsen og internetforbindelsen. Hvis begge virker, skal vi nu sikre os, at al internettrafik, der kommer til klienten, passerer gennem serveren.

Til dette skal vi blot kontrollere klientens IP-adresse, som den ses af internettet. En måde at gøre det på er at gå til whatsmyip.org. Ellers fra kommandolinjen kan vi forespørge på en anden lignende tjeneste kaldet IP-info ved hjælp af Curl.

Kør følgende på klientmaskinen

krølle //ipinfo.io/ip

Ja. Det er den offentlige IP-adresse på Linode, hvor VPN-serveren er hostet. Det er sådan anonymitet opnås ved hjælp af VPN, da over hele internettet nu IP-adressen for VPN-serveren ses og ikke din computer.

Konklusion

Den nemme opsætning er en af ​​de vigtigste fordele ved Wireguard i forhold til traditionel VPN-software som OpenVPN, som har brug for et højere niveau af netværks- og routingviden for at konfigurere. Der er dog en mangel på detaljeret officiel dokumentation for Wireguard, hvilket kan forårsage problemer, hvis din Wireguard-opsætning giver fejl eller ikke fungerer som forventet.

Ikke desto mindre er Wireguard et glimrende valg, hvis du ønsker en selvstændig hostet VPN til sikker kommunikation over internettet. For at lære mere om Wireguard og de protokoller og teknologier, den bruger, kan du tjekke det officielle websted.