En VPN du selv hoster, giver dig en krypteret tunnel mellem din telefon, din bærbare og en server du selv kontrollerer. Ingen tredjepart logger din trafik, og du betaler ikke et månedligt abonnement. WireGuard har gjort den slags opsætning enkel nok til at klares på cirka 20 minutter. Protokollen er en del af Linux-kernen siden version 5.6, bruger moderne kryptografi og fylder kun omkring 4.000 linjer kode, langt mindre end OpenVPN og IPsec.
Denne guide tager dig gennem 12 konkrete trin: fra en frisk Ubuntu- eller Debian-server til en fungerende WireGuard VPN med både desktop- og mobilklienter, NAT, DNS og automatisk start ved boot. Hver kommando kan kopieres direkte. Til sidst finder du et komplet opsætningsscript, en tabel over alle konfigurationsnøgler og en fejlfindingssektion med de problemer folk oftest løber ind i.
Hvad er WireGuard, og hvorfor hoste din egen VPN i 2026
WireGuard er en moderne VPN-protokol, der flytter IP-pakker gennem en krypteret tunnel på Layer 3. Den blev skabt af Jason Donenfeld og blev flettet ind i mainline Linux-kernen i 2020 med kerneversion 5.6. Det betyder, at protokollen kører i kernen på langt de fleste moderne Linux-servere uden ekstra moduler. Resultatet er lavere latenstid og højere gennemløb end brugerland-VPN’er som OpenVPN.
Den lille kodebase er ikke kun en teknisk kuriositet. Færre linjer kode betyder færre fejl og en angrebsflade, som en enkelt person realistisk kan revidere. OpenVPN og de klassiske IPsec-stakke tæller titusindvis af linjer. WireGuard nøjes med cirka 4.000, og det er en stor del af grunden til, at protokollen vandt frem så hurtigt.
Hvorfor selv-hoste i stedet for at købe et VPN-abonnement? Tre grunde dominerer. For det første kontrol: din trafik forlader serveren under din egen IP, og ingen kommerciel udbyder sidder mellem dig og internettet. For det andet pris: en billig virtuel server koster typisk 25 til 50 kroner om måneden og kan betjene hele husstanden. For det tredje læring: når du selv sætter tunnelen op, forstår du præcis, hvad der krypteres, hvor det dirigeres hen, og hvilke porte der er åbne. Det er den samme tankegang, der ligger bag HTTPS og TLS, hvor du flytter tillid fra en udbyder til verificerbar kryptografi.
En selv-hostet WireGuard VPN erstatter ikke en no-log-udbyder, hvis dit mål er at skjule, at du overhovedet bruger en VPN, for din serverudbyder kender din identitet. Men til at sikre din trafik på et offentligt WiFi, nå hjemmenetværket på afstand eller samle flere maskiner i ét privat net er den svær at slå.
Sådan fungerer WireGuard: kryptografi og arkitektur
WireGuard adskiller sig fra ældre VPN’er ved ikke at lade brugeren vælge cipher-suiter. Der er ét fast sæt primitiver, valgt af protokollens designere. Det fjerner hele klassen af fejl, hvor en administrator ved et uheld aktiverer en svag algoritme. Hver peer identificeres udelukkende af sin offentlige nøgle, præcis som med SSH-nøgler, og der er ingen certifikater eller centrale myndigheder involveret.
| Funktion | Algoritme | Rolle i tunnelen |
|---|---|---|
| Nøgleudveksling | Curve25519 | Etablerer delt hemmelighed mellem to peers |
| Symmetrisk kryptering | ChaCha20 | Krypterer selve pakkernes indhold |
| Autentificering | Poly1305 | Sikrer at pakker ikke er ændret undervejs |
| Hashing | BLAKE2s | Bruges i håndtrykket og nøgleafledning |
| Hashtabelbeskyttelse | SipHash24 | Beskytter interne datastrukturer mod DoS |
Kombinationen ChaCha20-Poly1305 er en autentificeret kryptering (AEAD), som både skjuler og beskytter pakker i én operation. Curve25519 håndterer Diffie-Hellman-nøgleudveksling med kurver, der er kendt for at være hurtige og modstandsdygtige over for implementeringsfejl. Hvis du vil forstå, hvorfor valg af hashfunktion betyder noget, så dækker vores artikel om hashfunktioner egenskaberne i detaljer.
Arkitektonisk er WireGuard tavs. Serveren svarer ikke på pakker fra ukendte nøgler, så en port-scanner kan ikke umiddelbart se, at der kører en VPN. Hver peer har en liste af AllowedIPs, der både fungerer som adgangskontrol og som routingtabel. På serveren betyder en peers AllowedIPs, hvilke tunnel-IP’er der hører til netop den klient. På klienten betyder den, hvilken trafik der skal sendes ind i tunnelen. Den dobbelte rolle forvirrer mange begyndere, så hold den for øje gennem hele opsætningen.
Forudsætninger og versioner
Inden du går i gang, skal følgende være på plads. Versionerne herunder er testet i 2026, men WireGuard er stabilt, så lidt ældre eller nyere versioner virker fint.
- En virtuel server (VPS) med en offentlig IPv4-adresse. Ubuntu 24.04 LTS eller Debian 12 anbefales. Begge har en kerne nyere end 5.6, så WireGuard er indbygget.
- Root-adgang eller en bruger med sudo. Alle kommandoer herunder forudsætter, at du kan køre
sudo. - SSH-adgang til serveren. Hvis du endnu ikke har hærdet SSH, så gør det først, og brug gerne kodeordsråd fra kodeordssikkerhed.
- WireGuard-tools. Kommandoerne
wgogwg-quickfølger med pakkenwireguardpå Ubuntu og Debian. - En klient. Den officielle WireGuard-app til Android, iOS, Windows og macOS, eller pakken
wireguardpå en Linux-klient. - Adgang til serverens firewall. Du skal kunne åbne UDP-port 51820 (standardporten), både i serverens eget firewall og i udbyderens eventuelle netværksfilter.
Du kan tjekke din kerneversion med uname -r. Får du et tal på 5.6 eller højere, er du klar. Næsten alle servere udlejet i 2025 og 2026 kører kerner langt over dette, typisk 6.x.
Trin 1: Opdater serveren og installer WireGuard
Start med at opdatere pakkelisterne og installere WireGuard. På Ubuntu og Debian trækker pakken wireguard de nødvendige værktøjer med, inklusive wg og wg-quick.
sudo apt update
sudo apt install -y wireguard qrencode
# Bekraeft installationen
wg --version
Pakken qrencode tager vi med nu, fordi vi senere bruger den til at vise mobilklientens konfiguration som en QR-kode. Outputtet fra wg --version ser typisk sådan ud:
wireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/
Ser du en version, er kerneunderstøttelsen til stede, og du kan fortsætte. Hvis kommandoen ikke findes, kører du sandsynligvis en meget gammel distribution. Opgrader til Ubuntu 24.04 LTS eller Debian 12 frem for at kæmpe med backports.
Trin 2: Aktivér IP-forwarding på serveren
For at serveren kan videresende klienternes trafik ud på internettet, skal IP-forwarding være slået til. Som standard er det deaktiveret af sikkerhedsgrunde. Vi aktiverer det permanent via en fil i /etc/sysctl.d/.
# Opret en dedikeret sysctl-fil
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-wireguard.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-wireguard.conf
# Indlaes aendringerne uden reboot
sudo sysctl --system
# Bekraeft at vaerdien nu er 1
sysctl net.ipv4.ip_forward
Den sidste kommando skal returnere net.ipv4.ip_forward = 1. Glemmer du dette trin, vil klienter kunne oprette håndtryk med serveren og pinge tunnel-IP’en, men de får ikke adgang til internettet. Det er en af de mest almindelige fejl, og vi vender tilbage til den i fejlfindingsafsnittet.
Trin 3: Generér serverens nøglepar
Hver peer i et WireGuard-netværk har et nøglepar: en privat nøgle, der aldrig forlader maskinen, og en offentlig nøgle, der deles med modparten. Vi genererer serverens par i /etc/wireguard og strammer rettighederne, så kun root kan læse den private nøgle.
# Skift til konfigurationsmappen og saet en stram umask
cd /etc/wireguard
umask 077
# Generer privat og offentlig noegle i en arbejdsgang
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
# Se den offentlige noegle (den private skal forblive hemmelig)
sudo cat server_public.key
Kommandoen wg genkey producerer en tilfældig privat nøgle, og wg pubkey afleder den matchende offentlige nøgle. umask 077 sikrer, at filerne kun kan læses af ejeren. Noter den offentlige nøgle, for du skal indsætte den i hver klients konfiguration. Den private nøgle skal du behandle som en adgangskode: den må aldrig deles eller commites til et repository.
Princippet med offentlige og private nøgler er det samme, som driver digitale signaturer. Den offentlige nøgle kan deles frit, mens den private bevarer hemmeligheden, der gør hele systemet sikkert.
Trin 4: Opret serverkonfigurationen wg0.conf
Nu samler vi det hele i konfigurationsfilen /etc/wireguard/wg0.conf. Navnet wg0 bliver navnet på netværksgrænsefladen. Vi vælger et privat subnet til tunnelen, her 10.8.0.0/24, hvor serveren får 10.8.0.1.
sudo nano /etc/wireguard/wg0.conf
Indsæt følgende, og udskift SERVERENS_PRIVATE_NOEGLE med indholdet af server_private.key. Tilpas eth0 til navnet på serverens offentlige grænseflade (find det med ip route get 1.1.1.1).
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVERENS_PRIVATE_NOEGLE
# NAT og forwarding aktiveres naar tunnelen kommer op
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -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
# Klienter tilfoejes som [Peer]-blokke laengere nede
Linjerne PostUp og PostDown kører automatisk, når tunnelen henholdsvis startes og stoppes. De tilføjer og fjerner NAT-reglerne, så vi ikke skal vedligeholde firewall-regler manuelt. Tabellen herunder forklarer de vigtigste nøgler i konfigurationen.
| Nøgle | Sektion | Betydning |
|---|---|---|
| Address | [Interface] | Tunnel-IP for denne maskine |
| ListenPort | [Interface] | UDP-port serveren lytter på (standard 51820) |
| PrivateKey | [Interface] | Maskinens egen private nøgle |
| DNS | [Interface] | DNS-server klienten bruger i tunnelen |
| PublicKey | [Peer] | Modpartens offentlige nøgle |
| AllowedIPs | [Peer] | Hvilke IP’er der hører til/dirigeres til denne peer |
| Endpoint | [Peer] | Modpartens offentlige adresse og port |
| PersistentKeepalive | [Peer] | Sekunder mellem keepalive-pakker (typisk 25) |
Trin 5: NAT og firewall
NAT-reglerne i PostUp sørger for masquerading, så pakker fra tunnel-subnettet 10.8.0.0/24 får serverens offentlige IP som afsender. Uden masquerading ville svarpakker aldrig finde tilbage til klienten. Vi skal også åbne selve VPN-porten i firewallen. Bruger du UFW, ser det sådan ud.
# Tillad WireGuard-porten ind
sudo ufw allow 51820/udp
# Sikr at SSH stadig er aabent, saa du ikke laaser dig selv ude
sudo ufw allow OpenSSH
# Aktiver firewallen hvis den ikke koerer
sudo ufw enable
sudo ufw status verbose
Foretrækker du nftables frem for iptables, kan du erstatte masquerade-reglerne med en tilsvarende NAT-regel i nftables. På de fleste moderne systemer oversætter iptables alligevel til nftables bagved, så kommandoerne ovenfor virker. Det vigtige er, at både serverens lokale firewall og din udbyders eventuelle netværksfilter slipper UDP 51820 igennem. Mange fejlsøgningssessioner ender med, at porten var blokeret hos hosting-udbyderen, ikke på serveren selv.
Trin 6: Start tunnelen og aktivér ved boot
Med konfigurationen på plads kan vi bringe grænsefladen op. Værktøjet wg-quick læser /etc/wireguard/wg0.conf, opretter grænsefladen, sætter IP-adressen og kører PostUp-reglerne i ét hug.
# Bring tunnelen op manuelt foerste gang
sudo wg-quick up wg0
# Faa den til at starte automatisk ved hver opstart
sudo systemctl enable wg-quick@wg0
# Bekraeft at tjenesten koerer
sudo systemctl status wg-quick@wg0 --no-pager
Instansnavnet @wg0 skal matche filnavnet wg0.conf. Vil du senere stoppe tunnelen, bruger du sudo wg-quick down wg0. Et vellykket up giver et output, der bekræfter, at grænsefladen og reglerne blev oprettet:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Serveren er nu klar og lytter på UDP 51820. Næste skridt er at oprette den første klient og give den adgang.
Trin 7: Opret den første klient som peer
En klient har sit eget nøglepar, ligesom serveren. Generér det enten på selve klienten eller på serveren, hvis det er lettere at administrere centralt. Her genererer vi på serveren for overskuelighedens skyld.
cd /etc/wireguard
umask 077
# Generer noeglepar til foerste klient (telefon)
wg genkey | sudo tee phone_private.key | wg pubkey | sudo tee phone_public.key
Tilføj nu klienten som en [Peer]-blok i serverens wg0.conf. Klienten får tunnel-IP’en 10.8.0.2. Bemærk, at AllowedIPs her er /32, fordi det på serversiden kun betyder “denne ene IP tilhører denne klient”.
# Tilfoej til bunden af /etc/wireguard/wg0.conf
[Peer]
# Telefon
PublicKey = INDHOLD_AF_phone_public.key
AllowedIPs = 10.8.0.2/32
Genindlæs konfigurationen uden at afbryde eksisterende forbindelser med en syntaks, der kombinerer wg og wg-quick:
sudo wg syncconf wg0 <(wg-quick strip wg0)
Selve klientkonfigurationen, som telefonen skal bruge, ser sådan ud. Udskift pladsholderne, og brug serverens offentlige IP i Endpoint. AllowedIPs = 0.0.0.0/0 dirigerer al klientens trafik gennem tunnelen, en fuld VPN.
[Interface]
PrivateKey = INDHOLD_AF_phone_private.key
Address = 10.8.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = SERVERENS_OFFENTLIGE_NOEGLE
Endpoint = DIN_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
PersistentKeepalive = 25 sender en lille pakke hvert 25. sekund, så NAT-mappingen mellem klient og server holdes åben. Det er vigtigt for mobile klienter og maskiner bag NAT, ellers falder forbindelsen efter et stykke inaktivitet.
Trin 8: Mobilklient med QR-kode
I stedet for at taste den lange klientkonfiguration ind på telefonen kan du vise den som en QR-kode i terminalen. Gem klientkonfigurationen fra forrige trin som phone.conf, og kør qrencode.
# Vis konfigurationen som QR-kode direkte i terminalen
qrencode -t ansiutf8 < phone.conf
# Eller gem den som et PNG-billede til senere
qrencode -o phone.png < phone.conf
Åbn den officielle WireGuard-app på Android eller iOS, vælg "Tilføj tunnel" og derefter "Scan fra QR-kode", og ret kameraet mod terminalen. Profilen importeres på sekunder, og du kan slå tunnelen til. Outputtet i terminalen er et blokmønster i sort og hvidt, som app-kameraet læser direkte.
Husk at slette phone.png bagefter, hvis du gemte den som fil. Billedet indeholder klientens private nøgle i klartekst og bør behandles lige så fortroligt som en adgangskode.
Trin 9: DNS, kill switch og split tunneling
Linjen DNS = 1.1.1.1 i klientkonfigurationen bestemmer, hvilken resolver klienten bruger, mens tunnelen er aktiv. Det forhindrer DNS-lækager, hvor opslag ellers ville gå uden om VPN'en og afsløre, hvilke domæner du besøger. Vil du have endnu mere privatliv, kan du pege på en resolver, der understøtter DNS over HTTPS.
WireGuard-appen indeholder en indbygget kill switch. Aktiverer du "Block untrusted networks", afvises al trafik, hvis tunnelen falder, så intet siver ud udenom. På desktop opnår du samme effekt med firewall-regler, der kun tillader trafik gennem wg0.
Split tunneling i praksis
Vil du kun sende noget trafik gennem VPN'en, for eksempel trafik til dit hjemmenetværk, men lade resten gå direkte, justerer du AllowedIPs på klienten. I stedet for 0.0.0.0/0 angiver du de specifikke subnet, der skal i tunnelen.
# Kun trafik til hjemmenettet og tunnelen gaar gennem VPN
AllowedIPs = 10.8.0.0/24, 192.168.1.0/24
Det er nyttigt på en mobil, hvor du vil nå hjemmeserveren uden at dirigere streaming og opdateringer gennem din egen VPS. Split tunneling sparer båndbredde og holder din IP uændret for almindelig surf.
Trin 10: Verificér forbindelsen
Kommandoen wg show er dit primære diagnoseværktøj. Den viser peers, seneste håndtryk og overførte bytes. Kør den på serveren, efter du har forbundet en klient.
sudo wg show
Et sundt output ser sådan ud. Linjen latest handshake og stigende transfer-tal bekræfter, at tunnelen fungerer:
interface: wg0
public key: Hk7c...serverens offentlige noegle...=
private key: (hidden)
listening port: 51820
peer: 9bT2...telefonens offentlige noegle...=
endpoint: 87.51.xx.xx:48213
allowed ips: 10.8.0.2/32
latest handshake: 18 seconds ago
transfer: 1.42 MiB received, 9.81 MiB sent
Fra klienten kan du teste, at du faktisk når internettet gennem serveren, ved at slå op, hvilken offentlig IP du fremstår med. Den skal matche serverens IP, ikke dit lokale net.
# Skal returnere serverens offentlige IP, ikke din egen
curl https://api.ipify.org
echo
ping -c 3 10.8.0.1
Trin 11: Tilføj flere klienter
At tilføje en bærbar, en tablet eller et familiemedlems telefon følger nøjagtig samme mønster som telefonen. Generér et nyt nøglepar, giv klienten den næste ledige tunnel-IP, og tilføj en [Peer]-blok. Hver klient skal have en unik AllowedIPs på serversiden, ellers kolliderer routingen.
# Noeglepar til baerbar
wg genkey | sudo tee laptop_private.key | wg pubkey | sudo tee laptop_public.key
# Tilfoej som peer med naeste IP, 10.8.0.3
sudo tee -a /etc/wireguard/wg0.conf > /dev/null <<'EOF'
[Peer]
# Baerbar
PublicKey = INDHOLD_AF_laptop_public.key
AllowedIPs = 10.8.0.3/32
EOF
# Genindlaes uden at afbryde de andre
sudo wg syncconf wg0 <(wg-quick strip wg0)
En praktisk regel er at føre en simpel liste over, hvilken IP der hører til hvilken enhed, for eksempel 10.8.0.2 telefon, 10.8.0.3 baerbar. Med et /24-subnet har du plads til 253 klienter, rigeligt til en husstand eller et lille team.
Trin 12: Komplet projekt, scriptet fra A til Z
Her er hele opsætningen samlet i ét script til en frisk Ubuntu- eller Debian-server. Det installerer WireGuard, genererer servernøgler, skriver konfigurationen, aktiverer forwarding og starter tunnelen. Læs det igennem, tilpas WAN_IF og din serveradresse, og kør det med sudo bash setup-wg.sh.
#!/usr/bin/env bash
set -euo pipefail
# === Tilpas disse vaerdier ===
WG_NET="10.8.0.1/24"
WG_PORT="51820"
WAN_IF="$(ip route get 1.1.1.1 | awk '{print $5; exit}')"
echo "[*] Installerer WireGuard paa graenseflade $WAN_IF"
apt update && apt install -y wireguard qrencode
echo "[*] Aktiverer IP-forwarding"
cat > /etc/sysctl.d/99-wireguard.conf </dev/null
echo "[*] Genererer servernoegler"
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
SERVER_PRIV="$(cat server_private.key)"
echo "[*] Skriver wg0.conf"
cat > /etc/wireguard/wg0.conf <
Efter scriptet har kørt, mangler du blot at tilføje klienter, præcis som i trin 7 og 11. Gem scriptet i et privat repository, aldrig et offentligt, da det rører ved nøgler. Med dette grundlag har du en fuldt fungerende WireGuard VPN, der overlever genstart og videresender trafik korrekt.
Almindelige faldgruber
Disse fem fejl står for langt størstedelen af de mislykkede opsætninger. Tjek dem først, hvis noget ikke virker.
- IP-forwarding glemt. Klienten får håndtryk og kan pinge
10.8.0.1, men ikke nå internettet. Løsning: bekræftsysctl net.ipv4.ip_forwardreturnerer 1, som i trin 2. - Forkert WAN-grænseflade i NAT-reglen. Hvis
eth0i virkeligheden hedderens3ellerenp1s0, fejler masquerading lydløst. Find det rigtige navn medip route get 1.1.1.1. - Overlappende AllowedIPs. To peers med samme
AllowedIPspå serveren ødelægger routingen. Hver klient skal have sin egen unikke/32. - Manglende PersistentKeepalive. Mobile klienter bag NAT mister forbindelsen efter inaktivitet uden
PersistentKeepalive = 25. - Port blokeret hos udbyderen. Serverens firewall tillader UDP 51820, men hosting-udbyderens netværksfilter gør ikke. Tjek udbyderens kontrolpanel, ikke kun
ufw.
Fejlfinding: 8 konkrete problemer
Når wg show ikke viser det forventede, så arbejd systematisk gennem denne liste. De fleste problemer falder i en af otte kategorier.
- Intet håndtryk overhovedet. Linjen
latest handshakemangler. Tjek at klientensEndpointpeger på serverens korrekte offentlige IP og port, og at UDP 51820 er åben hele vejen. - Håndtryk, men ingen internetadgang. Næsten altid IP-forwarding eller NAT. Bekræft
net.ipv4.ip_forward = 1og at masquerade-reglen bruger den rigtige WAN-grænseflade. - Forbindelsen falder efter et par minutter. Tilføj
PersistentKeepalive = 25på klienten bag NAT. - DNS virker ikke i tunnelen. Sæt en gyldig
DNS-linje i klientens[Interface], for eksempel1.1.1.1. Uden DNS kan navne ikke slås op, selvom IP-trafik virker. - "RTNETLINK answers: File exists". Grænsefladen er allerede oppe. Kør
sudo wg-quick down wg0før et nytup. - Forkert MTU og hakkende forbindelse. På nogle netværk hjælper det at sætte
MTU = 1380i klientens[Interface], hvis store pakker tabes. - Tjenesten starter ikke ved boot. Bekræft
systemctl is-enabled wg-quick@wg0returnererenabled. Ellers kørsystemctl enable wg-quick@wg0. - Permission denied på nøglefiler. Hvis
wg-quickklager over rettigheder, så sætchmod 600på de private nøgler og påwg0.conf.
Et godt generelt værktøj er at se på systemloggen med journalctl -u wg-quick@wg0 --no-pager. Den viser præcis, hvilken kommando i PostUp der eventuelt fejlede, og sparer dig for gætteri.
Avancerede tips
Når grundopsætningen kører, kan du stramme og udvide den. Her er teknikker, der løfter en hjemmelavet WireGuard-server til noget mere robust.
Preshared key som ekstra lag
Du kan tilføje en symmetrisk delt nøgle oven på den asymmetriske kryptering. Det giver et ekstra lag mod fremtidige kvantecomputere, der måtte true Curve25519. Generér med wg genpsk, og tilføj PresharedKey i både serverens og klientens peer-blok.
# Generer en preshared key
wg genpsk | sudo tee /etc/wireguard/phone_psk.key
# Tilfoej linjen i begge peer-blokke
# PresharedKey = INDHOLD_AF_phone_psk.key
Emnet kvanteresistens er værd at følge. Vores gennemgang af principperne bag moderne hashing i SHA-256 giver baggrunden for, hvorfor algoritmevalg betyder noget på den lange bane.
IPv6 og administrationsværktøjer
Tilføj et IPv6-subnet til tunnelen, for eksempel fd86:ea04:1115::1/64 på Address-linjen, hvis dine klienter har brug for IPv6. Til større opsætninger findes færdige administrationspaneler som wg-easy, der giver et webinterface til at oprette og tilbagekalde klienter. For en husstand er manuel redigering af wg0.conf dog både hurtigere og mere gennemskueligt.
Vil du tilbagekalde en klient, fjerner du blot dens [Peer]-blok og kører wg syncconf igen. Adgangen forsvinder øjeblikkeligt, fordi serveren ikke længere anerkender den offentlige nøgle. Det er enklere end at trække certifikater tilbage i en klassisk PKI, og det er relevant i konteksten af datalæk og hvordan kompromitterede nøgler bør håndteres.
Sådan vælger du server og placering
Kvaliteten af din WireGuard VPN afhænger lige så meget af serveren som af konfigurationen. Til en husstand eller en enkelt bruger rækker den mindste virtuelle server hos de fleste udbydere, typisk en maskine med én vCPU, 1 GB RAM og et par hundrede GB trafik om måneden. WireGuard kører i kernen og bruger næsten ingen CPU, så flaskehalsen bliver din båndbredde, ikke processorkraften.
Placeringen betyder noget for både hastighed og jura. Vælger du en server i Danmark eller et nabolandsdatacenter, får du lav latenstid og hører under europæisk databeskyttelse. Vil du fremstå med en IP fra et bestemt land, for eksempel for at nå tjenester, der kun virker dér, vælger du en server placeret tilsvarende. Husk, at din serverudbyder ser din trafik på samme måde, som et internetudbyder ville, så vælg en udbyder, du har tillid til.
- Latenstid. Jo tættere serveren er fysisk på dig, desto hurtigere føles forbindelsen. En server i Norden er ideel for danske brugere.
- Trafikgrænse. Tjek udbyderens månedlige datakvote. Streaming gennem tunnelen tæller med, så vælg rigeligt med trafik, hvis hele husstanden bruger den.
- IPv4 inkluderet. Bekræft at serveren får en dedikeret offentlig IPv4-adresse. Nogle billige planer deler IP, hvilket bryder indgående VPN.
- Jurisdiktion. En server i EU er underlagt GDPR. Det giver et forudsigeligt retsgrundlag for, hvordan dine data behandles.
Mange danske brugere vælger en nordisk udbyder af både hensyn til hastighed og databeskyttelse. Når serveren først er sat op, kan den køre i årevis med minimal vedligeholdelse, fordi WireGuard selv er stabilt og sjældent kræver opdatering ud over de almindelige systempatches.
Sikkerhed og vedligeholdelse af din WireGuard-server
En VPN-server, der er åben mod internettet, skal holdes hærdet. Selve WireGuard er svær at angribe direkte, fordi den ignorerer pakker fra ukendte nøgler, men resten af serveren skal også passes. Den vigtigste enkeltvane er at holde systemet opdateret, så kendte sårbarheder lukkes løbende.
# Hold serveren opdateret og aktiver automatiske sikkerhedsopdateringer
sudo apt update && sudo apt upgrade -y
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Beskyt SSH-adgangen, så serveren ikke kompromitteres ad bagvejen. Slå adgangskodelogin fra til fordel for nøgler, skift eventuelt SSH-porten, og overvej et værktøj som fail2ban, der blokerer IP-adresser efter gentagne mislykkede loginforsøg. Kombineret med en stram firewall, der kun tillader SSH og UDP 51820, reducerer du angrebsfladen markant. De samme principper om stærke nøgler og adgangskoder gælder her som i kodeordssikkerhed.
- Roter nøgler ved mistanke. Hvis en enheds private nøgle kan være lækket, fjern dens peer-blok og udsted et nyt nøglepar. Tilbagekaldelse virker øjeblikkeligt.
- Tag backup af wg0.conf. Gem en krypteret kopi af serverkonfigurationen, så du hurtigt kan genskabe opsætningen på en ny server.
- Overvåg håndtryk. Et hurtigt
wg showafslører ukendte peers eller forbindelser fra uventede endpoints. - Begræns adgang. Brug
AllowedIPsstramt, så hver klient kun kan nå det, den faktisk har brug for, frem for hele netværket.
Med disse vaner kører en selv-hostet WireGuard VPN sikkert i lang tid. Den månedlige vedligeholdelse er reelt blot at lade de automatiske opdateringer køre og kaste et blik på wg show en gang imellem. Det er en af de mest robuste sikkerhedsinvesteringer, en privat bruger eller et lille team kan lave.
WireGuard mod OpenVPN og IPsec
Hvorfor vælge WireGuard frem for de etablerede alternativer? Tabellen sammenfatter de praktiske forskelle, der betyder noget for en selv-hostet opsætning.
| Egenskab | WireGuard | OpenVPN | IPsec/IKEv2 |
|---|---|---|---|
| Kodebase | ~4.000 linjer | Titusindvis af linjer | Meget stor, flere komponenter |
| Placering | Linux-kernen (5.6+) | Brugerland | Kerne plus dæmoner |
| Kryptografi | Fast, moderne sæt | Konfigurerbar | Konfigurerbar |
| Opsætningstid | Cirka 20 minutter | Længere, flere filer | Kompleks |
| Transport | UDP | UDP eller TCP | UDP/ESP |
| Roaming | Indbygget, sømløst | Begrænset | God med MOBIKE |
OpenVPN har stadig en plads, hvor man skal igennem aggressive firewalls, fordi det kan køre over TCP-port 443 og ligne almindelig HTTPS-trafik. IPsec er dybt integreret i virksomhedsudstyr. Men til en personlig eller lille teamopsætning vinder WireGuard på enkelhed, ydelse og en kodebase, der er til at overskue. Den lave kompleksitet er i sig selv en sikkerhedsfordel, fordi der simpelthen er mindre, der kan gå galt.
Ofte stillede spørgsmål
Er WireGuard sikkert nok til daglig brug?
Ja. WireGuard bruger moderne, velgennemgåede primitiver som Curve25519, ChaCha20 og Poly1305, og protokollens lille kodebase gør den lettere at revidere end ældre VPN'er. Den er en del af mainline Linux-kernen, hvilket betyder bred granskning fra kerneudviklere.
Hvilken port bruger WireGuard?
Standardporten er UDP 51820. Du kan ændre den med ListenPort i serverens konfiguration og Endpoint i klientens, hvis du vil bruge en anden port for at undgå blokering.
Kan jeg køre WireGuard på Windows og macOS?
Ja. Der findes officielle WireGuard-apps til Windows, macOS, Android og iOS. Klientkonfigurationen er den samme uanset platform, og på mobil kan du importere den via QR-kode.
Hvad koster det at hoste sin egen WireGuard VPN?
En lille virtuel server, der er rigeligt til formålet, koster typisk 25 til 50 kroner om måneden hos en europæisk udbyder. Selve WireGuard-softwaren er gratis og open source.
Skjuler en selv-hostet VPN min identitet?
Den krypterer din trafik og skjuler din rigtige IP for de sider, du besøger, men din serverudbyder kender dig. Hvis målet er anonymitet over for selve udbyderen, er en revideret no-log-tjeneste eller Tor en bedre tilgang.
Hvorfor får jeg håndtryk, men ingen internetadgang?
Det skyldes næsten altid manglende IP-forwarding eller en forkert NAT-regel. Bekræft, at net.ipv4.ip_forward er 1, og at masquerade-reglen peger på serverens rigtige WAN-grænseflade.
Hvor mange klienter kan en server håndtere?
Med et /24-subnet har du plads til 253 klient-IP'er. Ydelsesmæssigt kan selv en lille server betjene en husstand eller et lille team uden problemer, fordi WireGuard kører effektivt i kernen.
Relateret indhold
- HTTPS og TLS: sådan beskyttes din forbindelse
- Gratis SSL/TLS-certifikat med Certbot
- Kodeordssikkerhed: længde, hashing og 2FA
- Digitale signaturer: hvordan nøgler skaber tillid
- Datalæk: sådan opstår de, og sådan beskytter du dig
- Phishing og social engineering: kend forsøget
Eksterne kilder
- WireGuard officielt websted
- WireGuard Quick Start
- WireGuard protokol og kryptografi
- wg(8) Linux manualside
- wireguard-tools kildekode
Sidst opdateret juni 2026. Denne guide er testet på Ubuntu 24.04 LTS og Debian 12. Kommandoer kan kræve mindre tilpasning afhængigt af din udbyder og netværksopsætning.




