Det här sätter du upp
En WireGuard-server som din telefon, dator eller router ansluter till. När en enhet är ansluten:
- surfar den på internet över IPv4 via din servers adress, och
- får den en egen publik IPv6-adress ur det /64-nät som följer med din server.
Varje kommando nedan har körts på en nyinstallerad server hos Melonslab med Debian 13, och resultatet har kontrollerats från en ansluten enhet.
Innan du börjar
Du behöver:
- en server med Debian 13 och root-åtkomst,
- en IPv4-adress på servern, så att enheter kan nå den från alla nät, och
- WireGuard-appen på varje enhet (för Android, iOS, Windows, macOS och Linux, från wireguard.com).
Exemplen använder 203.0.113.10 som serverns IPv4-adress och 2001:db8:1f::/64 som dess IPv6-nät. Byt ut dem mot dina egna genomgående.
1. Installera WireGuard
apt update
apt install -y wireguard nftables qrencode
nftables delar serverns IPv4-adress med dina enheter, och qrencode visar en konfiguration som QR-kod på skärmen, för telefonen.
2. Ta reda på gränssnitt och IPv6-nät
ip route show default
ip -6 addr show scope global
Det första kommandot visar ditt nätverksgränssnitt efter dev, oftast eth0. Det andra visar din IPv6-adress och ditt nät, till exempel 2001:db8:1f::a/64. Nätet är delen före sista ::, här 2001:db8:1f::/64. Exemplen använder eth0; heter ditt något annat, byt det överallt nedan.
3. Skapa nycklar
Varje sida av tunneln har en privat nyckel, som aldrig lämnar den, och en publik nyckel, som du ger till den andra sidan.
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee phone.key | wg pubkey > phone.pub
umask 077 gör att bara root kan läsa nyckelfilerna.
4. Slå på vidarebefordring
Servern måste skicka trafik mellan tunneln och internet:
cat > /etc/sysctl.d/99-wireguard.conf <<EOF
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.eth0.proxy_ndp = 1
EOF
sysctl --system
Den sista raden är viktig för IPv6. Hos Melonslab ligger ditt /64-nät på nätverkslänken i stället för att routas till din server: routern frågar på nätet vilken maskin som har varje adress. Servern måste svara å enheternas vägnar, och det kan den tack vare proxy_ndp och en post per enhet, som du lägger till i nästa steg. Utan den raden fungerar IPv4 i tunneln, men IPv6 fungerar inte, och inget felmeddelande visar varför.
Serverns egen IPv6-route är statiskt inställd, så vidarebefordringen påverkar den inte.
5. Konfigurera servern
Skapa /etc/wireguard/wg0.conf:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
# IPv4: enheterna delar serverns adress
PostUp = nft add table ip wireguard
PostUp = nft add chain ip wireguard postrouting "{ type nat hook postrouting priority srcnat; }"
PostUp = nft add rule ip wireguard postrouting ip saddr 10.8.0.0/24 oifname eth0 masquerade
PostDown = nft delete table ip wireguard
# IPv6: varje enhet har en egen adress ur ditt /64-nät
PostUp = ip -6 neigh add proxy 2001:db8:1f::100 dev eth0
PostDown = ip -6 neigh del proxy 2001:db8:1f::100 dev eth0
[Peer]
# telefon
PublicKey = PHONE_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32, 2001:db8:1f::100/128
Byt SERVER_PRIVATE_KEY mot det som cat server.key skriver ut och PHONE_PUBLIC_KEY mot det som cat phone.pub skriver ut. Telefonen får 10.8.0.2 i tunneln och 2001:db8:1f::100 som publik IPv6-adress.
6. Starta WireGuard
systemctl enable --now wg-quick@wg0
wg show
wg show visar gränssnittet och telefonen som peer. WireGuard startar nu också vid varje uppstart.
7. Anslut din första enhet
Skapa /etc/wireguard/phone.conf, konfigurationen som telefonen ska använda:
[Interface]
PrivateKey = PHONE_PRIVATE_KEY
Address = 10.8.0.2/32, 2001:db8:1f::100/128
DNS = 1.1.1.1, 2606:4700:4700::1111
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Byt PHONE_PRIVATE_KEY mot cat phone.key och SERVER_PUBLIC_KEY mot cat server.pub. AllowedIPs = 0.0.0.0/0, ::/0 skickar all telefonens trafik genom tunneln, och DNS anger vilka resolvrar WireGuard-appen använder när den är ansluten. Vill du att din egen server ska besvara uppslagningarna i stället, se Unbound-guiden.
Visa den som QR-kod och skanna den med WireGuard-appen för att få över den till telefonen:
qrencode -t ansiutf8 < phone.conf
På en dator importerar du i stället phone.conf i WireGuard-appen.
8. Kontrollera att det fungerar
Anslut och öppna ifconfig.co i enhetens webbläsare. Den visar adressen som enheten använder, normalt dess egen IPv6-adress, 2001:db8:1f::100.
Är enheten en dator kan du kontrollera båda:
curl -4 ifconfig.co
curl -6 ifconfig.co
Den första ska skriva ut din servers IPv4-adress, 203.0.113.10, och den andra datorns egen IPv6-adress.
Lägg till fler enheter
Varje enhet behöver egna nycklar och adresser. Skapa nycklar för en dator:
cd /etc/wireguard
umask 077
wg genkey | tee laptop.key | wg pubkey > laptop.pub
Lägg till en peer sist i wg0.conf, med nästa lediga adresser:
[Peer]
# dator
PublicKey = LAPTOP_PUBLIC_KEY
AllowedIPs = 10.8.0.3/32, 2001:db8:1f::101/128
Lägg till datorns IPv6-adress i avsnittet [Interface], under telefonens rader:
PostUp = ip -6 neigh add proxy 2001:db8:1f::101 dev eth0
PostDown = ip -6 neigh del proxy 2001:db8:1f::101 dev eth0
Starta sedan om WireGuard, vilket kopplar ner anslutna enheter en kort stund:
systemctl restart wg-quick@wg0
Datorns konfiguration är densamma som telefonens, men med datorns privata nyckel och adresser.
Felsökning
Enheten ansluter aldrig. wg show på servern visar ingen "latest handshake" för den. Kontrollera att Endpoint är serverns IPv4-adress och att UDP-port 51820 når servern. Debian slår inte på någon brandvägg som standard. Använder du ufw som i säkerhetsguiden, lägg till dess två regler för WireGuard.
IPv4 fungerar, men inte IPv6. Kontrollera att vidarebefordring och proxy_ndp är påslagna, och att enhetens adress har en proxypost:
sysctl net.ipv6.conf.all.forwarding net.ipv6.conf.eth0.proxy_ndp
ip -6 neigh show proxy
Varje enhets IPv6-adress ska finnas med i listan. Saknas en, saknas dess PostUp-rad i wg0.conf.
Driver du en VPN för kunder?
De här stegen gäller en VPN som du, ditt hushåll eller ditt team använder. En VPN-, proxy- eller exit-tjänst för kunder behöver kapacitet som planeras och prissätts för den, så prata med vårt säljteam innan du börjar.