WireGuard je z dobrimi razlogi zamenjal OpenVPN kot privzeto izbiro za samogostujoče VPN-je: koda obsega okrog 4.000 vrstic (proti več sto tisočim), teče v jedru Linuxa, rokovanje se konča v dveh povratnih krogih, pravilno nastavljen tunel pa na skromni strojni opremi potiska promet z linijsko hitrostjo. Ta vodnik vas v približno desetih minutah pripelje od svežega VPS do delujočega tunela z mobilnimi in namiznimi odjemalci, nato pa doda stvari, ki štejejo pri vsakdanji uporabi: generiranje QR kod, pravila požarnega zidu in nastavitev kill switch na odjemalcih.
Kaj boste zgradili
WireGuard strežnik na vašem VPS, tri odjemalske konfiguracije (telefon, prenosnik, rezerva), QR provisioning za mobilne, NAT pravila za poln tunel za internet preko VPN-ja in nastavitve kill switch, tako da naprave odjemalcev padejo v zaprto stanje, če tunel pade.
Predpogoji
- VPS z Debian 12 ali Ubuntu 24.04
- SSH dostop kot root
- Javen IPv4 naslov (IPv6 podprt, tu neobvezno)
- Odprta UDP vrata 51820 v morebitnem zgornjem požarnem zidu
Za večino osebnih primerov je vstopni Cloud VPS več kot dovolj. WireGuard promet ne obremenjuje CPU.
Korak 1: Namestite WireGuard
apt update && apt upgrade -y
apt install -y wireguard wireguard-tools qrencode iptables-persistent
qrencode generira QR kode za mobilne odjemalce. iptables-persistent ohrani NAT pravila čez ponovne zagone.
Korak 2: Vklopite posredovanje IP
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wireguard.conf
echo 'net.ipv6.conf.all.forwarding=1' >> /etc/sysctl.d/99-wireguard.conf
sysctl --system
Brez tega jedro ne bo posredovalo paketov med WireGuard vmesnikom in javnim NIC.
Korak 3: Generirajte strežniške ključe
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
umask 077 zagotovi, da je zasebni ključ berljiv samo za root. Preverite z ls -la.
Korak 4: Identificirajte izhodni vmesnik
ip route | grep default
Izpis je oblike default via 192.0.2.1 dev eth0. Zabeležite ime vmesnika (eth0 tu; na cloud VPS pogosto ens3, enp1s0 ali podobno). Uporabili ga boste v naslednjem koraku za NAT.
Korak 5: Napišite strežniško konfiguracijo
Ustvarite /etc/wireguard/wg0.conf:
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = <vsebina server_private.key>
SaveConfig = false
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -A FORWARD -o wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -o wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
<vsebina server_private.key> zamenjajte z dejanskim ključem (cat server_private.key in prilepite). eth0 zamenjajte z imenom vašega vmesnika. Zaklenite datoteko: chmod 600 wg0.conf.
Razpon 10.66.66.0/24 je poljuben. Izogibajte se 10.0.0.0/24 in 192.168.1.0/24, ker se pogosto trkata z domačimi omrežji odjemalcev.
Korak 6: Zaženite strežnik
systemctl enable --now wg-quick@wg0
wg show
Če wg show izpiše ime vmesnika, javni ključ in poslušajoča vrata, strežnik deluje.
Korak 7: Generirajte prvega odjemalca
Za vsakega odjemalca generirajte unikatne ključe:
mkdir -p /etc/wireguard/clients
cd /etc/wireguard/clients
wg genkey | tee phone_private.key | wg pubkey > phone_public.key
wg genpsk > phone_preshared.key
Predizmenjani ključ doda dodatno plast simetričnega šifriranja za blažitev morebitne prihodnje kvantne dešifracije prestreženih rokovanj. Nič ne stane in vedno ga vključujemo.
Korak 8: Napišite konfiguracijo odjemalca
Ustvarite /etc/wireguard/clients/phone.conf:
[Interface]
PrivateKey = <vsebina phone_private.key>
Address = 10.66.66.2/32
DNS = 1.1.1.1, 9.9.9.9
[Peer]
PublicKey = <vsebina server_public.key>
PresharedKey = <vsebina phone_preshared.key>
Endpoint = vps.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0, ::/0 naredi tunel za poln tunel: ves promet naprave gre preko VPS. Za deljen tunel (samo določena omrežja) zamenjajte z npr. AllowedIPs = 10.66.66.0/24, 192.168.50.0/24.
PersistentKeepalive = 25 pošlje majhen utripaj vsakih 25 sekund. Ohranja NAT mapiranja na domačem usmerjevalniku odjemalca in je obvezen za mobilne odjemalce v mobilnih omrežjih.
Korak 9: Registrirajte odjemalca na strežniku
V /etc/wireguard/wg0.conf dodajte blok [Peer]:
[Peer]
PublicKey = <vsebina phone_public.key>
PresharedKey = <vsebina phone_preshared.key>
AllowedIPs = 10.66.66.2/32
Naložite konfiguracijo brez prekinitve tunela:
wg syncconf wg0 <(wg-quick strip wg0)
Preverite z wg show. Nov peer se pojavi takoj.
Korak 10: Generirajte QR kodo
Za telefone je skeniranje QR kode hitrejše in manj nagnjeno k napakam kot prepisovanje:
qrencode -t ansiutf8 < /etc/wireguard/clients/phone.conf
QR koda se izpiše neposredno v terminalu. Odprite WireGuard aplikacijo na telefonu, tapnite "Add tunnel" in "Scan from QR code", usmerite kamero v terminal in tunel se uvozi v enem koraku. Vklopite ga in promet teče preko VPS.
Pomembno: nato pobrišite terminal (clear in history -c), da zasebni ključ ni viden komurkoli s prihodnjim dostopom do lupine.
Korak 11: Dodajte namizne in rezervne odjemalce
Korake 7 do 9 ponovite za vsakega dodatnega odjemalca. Naslov IP povečujte (10.66.66.3, 10.66.66.4 itd.). Za prenosnike datoteko .conf neposredno kopirajte na odjemalca in jo uvozite v namizno WireGuard aplikacijo.
Preprost skript za avtomatizacijo ustvarjanja odjemalcev:
#!/bin/bash
# /etc/wireguard/new-client.sh
NAME=$1
IP=$2
if [ -z "$NAME" ] || [ -z "$IP" ]; then
echo "Uporaba: $0 <ime> <ip_pripona>"
exit 1
fi
cd /etc/wireguard/clients
umask 077
wg genkey | tee "${NAME}_private.key" | wg pubkey > "${NAME}_public.key"
wg genpsk > "${NAME}_preshared.key"
SERVER_PUBLIC=$(cat /etc/wireguard/server_public.key)
PRIV=$(cat "${NAME}_private.key")
PSK=$(cat "${NAME}_preshared.key")
PUB=$(cat "${NAME}_public.key")
cat > "${NAME}.conf" <<EOF
[Interface]
PrivateKey = ${PRIV}
Address = 10.66.66.${IP}/32
DNS = 1.1.1.1, 9.9.9.9
[Peer]
PublicKey = ${SERVER_PUBLIC}
PresharedKey = ${PSK}
Endpoint = vps.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
EOF
cat >> /etc/wireguard/wg0.conf <<EOF
[Peer]
# ${NAME}
PublicKey = ${PUB}
PresharedKey = ${PSK}
AllowedIPs = 10.66.66.${IP}/32
EOF
wg syncconf wg0 <(wg-quick strip wg0)
echo "Odjemalec ${NAME} ustvarjen. QR koda:"
qrencode -t ansiutf8 < "${NAME}.conf"
Zaženete z ./new-client.sh laptop 3 in v nekaj sekundah dobite pripravljenega odjemalca.
Pravila požarnega zidu
Če uporabljate UFW, dovolite WireGuard in SSH:
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 51820/udp
ufw enable
UFW ne moti MASQUERADE pravila, definiranega v PostUp, ker to pravilo deluje v tabeli nat, ne v tabeli filter, ki jo upravlja UFW.
Kill switch na odjemalcih
Kill switch blokira ves internetni promet, ko VPN pade, in preprečuje uhajanje IP. Izvedba se razlikuje po odjemalcu.
Mobilno (iOS in Android WireGuard aplikacija): vklopite "On-Demand" (iOS) ali "Auto-connect" (Android), nato nastavite sprožilec na "Always on" ali za določena Wi-Fi omrežja, ki jim ne zaupate. Obe aplikaciji blokirata promet, kadar je tunel zahtevan, a ne deluje.
Linux (NetworkManager ali wg-quick): v konfiguracijo odjemalca pod [Interface] dodajte:
PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
To zavrne ves promet, ki med aktivnim tunelom ne izstopi skozi WireGuard vmesnik.
Windows (WireGuard for Windows): uredite tunel in obkljukajte "Block untunneled traffic (kill-switch)". Aplikacija samodejno upravlja pravila požarnega zidu.
Testiranje tunela
Z odjemalca v povezavi:
- Obiščite
https://ifconfig.mein potrdite, da se IP ujema z vašim VPS - Naredite DNS leak test na
https://dnsleaktest.com - Preverite latenco:
ping 10.66.66.1z odjemalca naj zadene enomestne milisekunde na bližnjem VPS
Če se IP ujema z VPS, a DNS uhaja k vašemu ISP, vrstica DNS = v konfiguraciji odjemalca ni bila uporabljena. Nekateri operacijski sistemi zahtevajo dodatno konfiguracijo, da spoštujejo DNS strežnik iz VPN.
FAQ
Koliko odjemalcev zmore en WireGuard strežnik? Na 1 vCPU VPS so realistični stotine sočasnih peerjev in 500 Mbit prepustnosti. Ozko grlo je običajno mrežni vmesnik VPS, ne WireGuard sam.
Ali WireGuard deluje za CGNAT ali restriktivnimi korporativnimi požarnimi zidovi? Potreben je izhodni UDP na vrata 51820. Če omrežje odjemalca blokira poljubni UDP, lahko ListenPort strežnika spremenite na 443 ali 53, kar večina omrežij dovoljuje.
Lahko WireGuard teče vzporedno z OpenVPN na istem VPS? Da. Uporabljata različna vrata in module v jedru. Mnogi uporabniki med selitvijo ohranijo oba.
Ali WireGuard beleži promet? WireGuard sam ne beleži ničesar o vsebini prometa. Strežnik shranjuje samo javne ključe peerjev in čas zadnjega rokovanja, vidne preko wg show.
Razlika med polnim in deljenim tunelom? Polni tunel usmeri ves promet odjemalca skozi VPN. Deljeni tunel usmeri samo določena omrežja. Polni tunel je primeren za zasebnost ali geo-omejene vsebine; deljeni za dostop do zasebnih storitev brez vpliva na splošno uporabo interneta.
Kje ga gostiti
CPU odtis WireGuarda je majhen, vendar sta prepustnost in stabilnost odvisni od omrežja pod njim. EU VPS vam daje predvidljivo peeranje do večine evropskih omrežij in vaš promet ohranja znotraj EU jurisdikcije. Naše Cloud VPS instance so primerno dimenzionirane za osebni ali družinski VPN, z vključenimi varnostnimi kopijami, tako da seznam peerjev in konfiguracije preživijo morebitno nesrečno brisanje.