En selvhostet WireGuard VPN giver din bærbare og din telefon en krypteret vej til en server, du selv styrer. Det er nyttigt, når du vil have en stabil udgående IP, sikker adgang på utroværdigt Wi-Fi eller en privat rute ind i et andet netværk. Det gør dig ikke anonym: websteder ser stadig én VPS-adresse, og hostingudbyderen driver stadig det underliggende netværk.
Denne guide bygger en IPv4-fuldtunnel-VPN på Ubuntu Server. Du installerer WireGuard, genererer nøgler med restriktive rettigheder, aktiverer routing, tilføjer firewall- og NAT-regler, forbinder desktop- og mobilklienter og verificerer tunnelen. Samme design kan understøtte IPv6, men først når din VPS har routet IPv6-plads, og du konfigurerer IPv6-forwarding og firewallregler separat.
Hvad er WireGuard?
WireGuard er en moderne VPN-protokol på tværs af platforme samt dens implementering, der sender krypterede IP-pakker over UDP. WireGuard-protokolspecifikationen definerer et fast sæt kryptografiske primitiver, blandt andre ChaCha20-Poly1305, Curve25519, BLAKE2s, SipHash24 og HKDF. Det bevidst lille design gør konfiguration og revision enklere end protokoller med mange udskiftelige cipher suites.
WireGuard har hverken et centralt kontosystem eller et indbygget brugerkatalog. Hver enhed er en peer med sit eget nøglepar, sin egen tunneladresse og sine egne AllowedIPs-regler. På en VPS fungerer én peer normalt som den internetvendte gateway, mens bærbare og telefoner opretter forbindelserne dertil.
Hvorfor bruge WireGuard på en VPS?
- Enkel peer-model: Hver enhed får ét nøglepar og én peer-post.
- Lille angrebsflade: WireGuard bruger en kompakt protokol og en fast kryptosuite frem for at udstille en lang menu af forældede valgmuligheder.
- God ydeevne: Kerneintegration på Linux og effektiv kryptografi kan give høj gennemstrømning, men resultatet afhænger fortsat af CPU, netværkskapacitet, latens og pakkestørrelse.
- Klienter på tværs af platforme: Der findes officielle klienter til Windows 10 og 11, macOS, Android og iOS, mens Linux og flere BSD-systemer leverer native værktøjer eller pakker.
- Roaming: En peer kan skifte netværk og kilde-IP-adresse uden at få en ny WireGuard-identitet; serveren lærer det senest autentificerede endpoint.
- Klar routingkontrol: AllowedIPs afgør både hvilke destinationer der bruger tunnelen, og hvilke tunneladresser der hører til hver peer.
Relateret læsning: Cloudzys guide til VPS til VPN. For ældre installationer, se Cloudzys guide til opsætning af PPTP; vælg ikke PPTP til en ny VPN, hvor sikkerhed betyder noget.
Spring den manuelle opsætning over: WireGuard med ét klik
Hvis du ikke har en teknisk baggrund, eller du helst ikke selv vil stå for opsætningen, tilbyder Cloudzy en WireGuard VPN-udrulning med ét klik. Resten af denne guide handler om den manuelle opbygning; dette afsnit handler om genvejen.
- Log ind på Cloudzys kontrolpanel.
- Vælg WireGuard på listen over applikationer.
- Opret en VPS i den ønskede lokation med den plan, du vælger. En Ubuntu-maskine med basisspecifikationer er nok.
Når din VPS er klar, logger du ind og kører følgende kommando for at vise din konfiguration:
cat client.conf
Du vil se noget som dette:
Brug den konfiguration til at oprette en ny tunnel i WireGuard-klienten på din pc, og forbindelsen er klar. Vil du hellere forstå hver enkelt del, eller har du brug for et opsæt, som ét-kliks-imaget ikke dækker, så fortsæt med den manuelle opbygning nedenfor.
Sådan opsætter du WireGuard på Ubuntu
Kommandoerne nedenfor er rettet mod en aktuel Ubuntu Server-udgivelse. Kør dem over SSH som bruger med sudo-adgang. Hold SSH-sessionen åben, indtil firewallen er bekræftet, og tag først et VPS-snapshot, hvis din udbyder understøtter det.
Forudsætninger
- Én Ubuntu-VPS med en offentlig IPv4-adresse
- En ikke-root-konto med sudo-adgang
- SSH-adgang og oplysninger om VPS-udbyderens recovery-konsol
- Én klientenhed med den officielle WireGuard-app eller kommandolinjeværktøjerne
Du behøver ikke en Ubuntu-server nummer to. Klienten kan være en Windows-pc, en Mac, en Linux-bærbar, en Android-telefon eller en iPhone.
Trin 1: Installer WireGuard
sudo apt update
sudo apt install wireguard -y
Bekræft, at værktøjerne er tilgængelige:
wg --version
Trin 2: Generer servernøglerne sikkert
Opret WireGuard-mappen, og generer nøgleparret med en restriktiv umask. Den private nøgle må aldrig kopieres til en klient eller havne i logfiler.
sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
Vis nøglerne, når du skal indsætte dem i konfigurationsfiler:
sudo cat /etc/wireguard/server.key
sudo cat /etc/wireguard/server.pub
Trin 3: Opret serverkonfigurationen
Åbn interfacekonfigurationen:
sudo nano /etc/wireguard/wg0.conf
Indsæt følgende blok, og erstat SERVER_PRIVATE_KEY med den private nøgle fra forrige trin:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
Tunnelnetværket 10.8.0.0/24 er blot et eksempel. Vælg et andet privat interval, hvis det overlapper med et hjemme-, kontor- eller cloudnetværk, du har brug for at nå. Tilføj ikke SaveConfig = true: det kan overskrive filen, når interfacet lukker ned, og slette dine manuelle ændringer.
sudo chmod 600 /etc/wireguard/wg0.conf
Trin 4: Aktiver IPv4-forwarding
Din VPS skal route pakker mellem wg0 og sit offentlige netværksinterface. Læg indstillingen i en dedikeret sysctl-fil:
sudo nano /etc/sysctl.d/70-wireguard-routing.conf
net.ipv4.ip_forward = 1
Anvend det, og verificer:
sudo sysctl -p /etc/sysctl.d/70-wireguard-routing.conf
sysctl net.ipv4.ip_forward
Dette følger routingmodellen i Ubuntus guide til WireGuard-gateway. IPv6 kræver et routet IPv6-præfiks, separate tunneladresser, IPv6-forwarding og IPv6-firewallregler; send ikke klienttrafik til ::/0, før den vej er helt på plads.
Trin 5: Tilføj firewall- og NAT-regler
Find navnet på VPS'ens offentlige interface. Læg i outputtet nedenfor mærke til værdien efter dev; almindelige navne er eth0, ens3 og enp1s0.
ip route show default
Åbn wg0.conf igen, og tilføj følgende linjer under [Interface]. Erstat eth0 alle steder, hvis dit offentlige interface hedder noget andet:
PostUp = iptables -I FORWARD 1 -i %i -o eth0 -j ACCEPT; iptables -I FORWARD 1 -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PreDown = iptables -D FORWARD -i %i -o eth0 -j ACCEPT; iptables -D FORWARD -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Hvis UFW er aktiv, så tillad SSH, før du rører ved dens tilstand, og åbn derefter WireGuards UDP-port:
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw status
Hvis UFW i øjeblikket er inaktiv, og du vil aktivere den, så bekræft først, at OpenSSH-reglen findes. Slå ikke UFW fra og til igen over SSH bare for at anvende disse regler; det giver en unødvendig risiko for at lukke dig selv ude.
Trin 6: Start WireGuard-interfacet
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0 --no-pager
sudo wg show
Hvis tjenesten fejler, så kør journalctl, før du ændrer noget andet:
sudo journalctl -u wg-quick@wg0 -n 50 --no-pager
Tilføj en WireGuard-klient
Hver enhed skal have sit eget nøglepar og sin egen tunnel-IP. Genbrug aldrig én klientkonfiguration på to enheder: dublerede nøgler og adresser gør routingen uforudsigelig og forhindrer en ren tilbagekaldelse.
Trin 1: Generer klientnøglerne
De officielle desktop- og mobilapps kan generere nøgler, når du opretter en tom tunnel. På en Linux-klient bruger du:
umask 077
wg genkey | tee client.key | wg pubkey > client.pub
Behold client.key på den enhed. Kopiér kun client.pub til serveren.
Trin 2: Tilføj peer'en på serveren
sudo nano /etc/wireguard/wg0.conf
Tilføj én peer-blok. Erstat CLIENT_PUBLIC_KEY med klientens offentlige nøgle:
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
Linjen Address = 10.8.0.2/32 tildeler tunneladressen på klienten. I serverens [Peer]-blok knytter AllowedIPs = 10.8.0.2/32 den adresse til denne peer med henblik på routing og kildevalidering. Brug 10.8.0.3/32 til den næste enhed, og fortsæt opad uden dubletter.
sudo systemctl restart wg-quick@wg0
Trin 3: Byg klientkonfigurationen
Opret client.conf på klienten, og erstat alle pladsholdere:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = VPS_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0 gør dette til en IPv4-fuldtunnel. Vil du kun have adgang til VPN-netværket, så brug AllowedIPs = 10.8.0.0/24. PersistentKeepalive er nyttig for en klient bag NAT, hvis mapping skal forblive tilgængelig i tomgang; WireGuards quickstart-guide påpeger, at de fleste peers ikke har brug for den.
Trin 4: Importer konfigurationen
Brug installationsguiden til WireGuard-klienter for at hente den understøttede klient til din platform.
- Windows: Vælg Add Tunnel, og importér derefter client.conf.
- macOS: Vælg Import tunnel(s) from file, og vælg client.conf.
- Android eller iOS: Importér filen, eller scan en QR-kode genereret ud fra den.
På en Ubuntu- eller Debian-klient, der har client.conf, installerer du qrencode og viser filen i den klients terminal:
sudo apt install qrencode -y
qrencode -t ansiutf8 < client.conf
QR-koden indeholder klientens private nøgle. Vis den kun i en betroet terminal, gem ikke skærmbilleder, og ryd terminalen, når telefonen har importeret den.
Trin 5: Verificer tunnelen
Aktiver tunnelen, generer trafik fra klienten, og kør disse tjek på din VPS:
sudo wg show
ip -brief address show wg0
Et nyligt handshake og stigende overførselstællere bekræfter, at WireGuard udveksler pakker. Verificer derefter fuldtunnel-udgangen fra klienten:
curl -4 https://api.ipify.org; echo
Kommandoen bør returnere VPS'ens offentlige IPv4-adresse. Er der intet handshake, så tjek endpointadressen, UDP-porten, cloud-firewallen, UFW-reglen og nøglerne. Er der handshake, men ingen internetadgang, så tjek IP-forwarding, navnet på det offentlige interface, NAT-reglerne og DNS.
Kan man placere WireGuard bag Nginx?
Den dokumentationen for NGINX' stream-modul forklarer, hvordan NGINX kan videresende UDP fra én port til en anden, så den kan sende UDP/80 eller UDP/443 videre til WireGuard på UDP/51820. Det er et UDP-relay, ikke en HTTP-reverse-proxy. Det laver ikke WireGuard om til TCP eller HTTPS, og det får ikke protokollen til at ligne almindelig webtrafik.
I de fleste installationer er det enklere at ændre WireGuards ListenPort og åbne den tilsvarende UDP-port end at tilføje NGINX. Hvis et netværk blokerer UDP helt eller bruger deep packet inspection, løser et NGINX UDP-relay ikke problemet. dokumentationen om WireGuards begrænsninger fastslår, at obfuskering ligger uden for protokollens formål.
Forbind din VPS til et hjemmenetværk
En VPS kan fungere som knudepunkt mellem en klient på farten og en enhed hjemme hos dig. Peer'en i hjemmet opretter selv en udgående WireGuard-forbindelse til din VPS, så du slipper for en offentlig IP derhjemme. Sæt PersistentKeepalive på den hjemme-peer, når den sidder bag NAT.
At nå hele hjemme-LAN'et kræver mere end at tilføje en peer. Peer-posten på din VPS for hjemme-gatewayen skal have hjemmesubnettet med i AllowedIPs, for eksempel 192.168.1.0/24. En fjernklient med fuldtunnel (AllowedIPs = 0.0.0.0/0) sender allerede den trafik gennem din VPS; tilføj kun 192.168.1.0/24 på klienten, hvis du bruger split tunneling. Hjemme-gatewayen skal desuden viderestille trafik mellem WireGuard og LAN'et. Tilføj enten en rute på hjemmerouteren eller en omhyggeligt afgrænset NAT-regel på hjemme-gatewayen. Tjek først for overlap: en klient, der er forbundet til et andet 192.168.1.0/24-netværk, kan ikke route begge netværk rent uden omnummerering eller mere avanceret policy routing.
Selvhostet WireGuard kontra en kommerciel VPN
Selvhosting ændrer, hvem der driver din VPN, men forbedrer ikke automatisk anonymiteten. En personlig VPS giver dig én stabil udgående IP, som er let at knytte til et hostingnetværk. En kommerciel tjeneste giver typisk delte udgangsadresser og nem skift af lokation, men du må stole på dens politikker, drift og de uafhængige revisioner, den offentliggør.
WireGuard er i sig selv let, og en lille VPS er ofte et fornuftigt udgangspunkt for én person og et par enheder. Betragt ikke et fast RAM- eller vCPU-tal som en garanti for gennemstrømning. Test med dit reelle antal enheder, din region, pakkestørrelsen og den forventede båndbredde, og skalér så op, hvis CPU-mætning, pakketab eller latens bliver begrænsningen.
Vælg selvhosting, når en stabil personlig udgående IP, fjernadgang eller kontrol over serveren betyder mere end valg af lokation og bekvemmelighed. Vælg en kommerciel VPN, når du vil have mange lande, delte udgange, bred understøttelse af forbrugerenheder og en anden til at håndtere nedbrud.
| Beslutningsfaktor | Selvhostet WireGuard | Kommerciel VPN |
|---|---|---|
| Omkostningsmodel | Én server plus din administrationstid | Abonnement, ofte med rabat ved længere perioder |
| Udgangslokationer | Én lokation pr. server | Mange lokationer tilgængelige i appen |
| Opsætning | Du konfigurerer nøgler, routing, firewallregler og klienter | Installer appen, og log ind |
| Vedligeholdelse | Du patcher, overvåger, tager backup og fejlfinder | Udbyderen driver tjenesten |
| Privatlivsmodel | Du styrer serveren, men hostingudbyderen kan stadig se metadata | Du stoler på udbyderens politikker og de uafhængige revisioner, den offentliggør |
| Bedst egnet | Stabil personlig udgående IP, fjernadgang og kontrol over infrastrukturen | Skift af lokation, lidt vedligeholdelse og bred enhedsunderstøttelse |
Konklusion
En pålidelig WireGuard-installation koger ned til fem ting: beskyttede private nøgler, unikke peer-adresser, korrekte AllowedIPs, fungerende forwarding og NAT samt en firewallregel til den lyttende UDP-port. Verificer både handshake og den offentlige udgangsadresse, før du stoler på tunnelen, og hold din VPS opdateret efter udrulningen.
Vil du bygge serveren manuelt, så start med en ren Cloudzy Ubuntu VPS-løsning. Vil du hellere springe installationstrinnene over, så brug Cloudzys WireGuard-udrulning med ét klik og gå direkte videre til klientkonfiguration og verifikation.
Ofte stillede spørgsmål
Hvorfor viser WireGuard en peer, men intet handshake?
En peer-post beviser kun, at konfigurationen blev indlæst. Intet handshake betyder som regel, at klienten ikke når serveren, eller at nøglerne ikke matcher. Tjek klientens Endpoint, serverens offentlige IP, UDP/51820 i både udbyderens firewall og UFW samt de offentlige nøgler i begge ender. Generer trafik fra klienten, før du tjekker, for WireGuard er stille i tomgang.
Hvorfor forbinder tunnelen, mens internetadgangen stopper?
Et handshake uden internetadgang peger som regel på routing snarere end kryptering. Verificer net.ipv4.ip_forward, bekræft navnet på det offentlige interface i NAT-reglen, tjek FORWARD-reglerne, og test DNS adskilt fra ren IP-forbindelse. Sørg også for, at AllowedIPs på klienten passer til den tilsigtede fuldtunnel- eller split-tunnel-opsætning.
Har alle klienter brug for PersistentKeepalive?
Nej. Tilføj den, når en peer bag NAT skal holde sin mapping åben i tomgangsperioder, hvilket er almindeligt for telefoner, hjemme-gateways og visse restriktive netværk. Undlad den, når peer'en kommunikerer hyppigt eller ikke behøver at kunne nås fra den anden side i tomgang.