Oma VPN VPS-il WireGuardiga: seadistus samm-sammult
Käivita serveris ühe käsuga (kontrolli enne skripti sisu allpool):
curl -sSL https://cp.lv/scripts/svoj-vpn-wireguard.sh | sudo bash…või wgetiga:
wget -qO- https://cp.lv/scripts/svoj-vpn-wireguard.sh | sudo bashSkripti sisu svoj-vpn-wireguard.sh:
#!/usr/bin/env bash
# Your own WireGuard VPN: server plus the first client (Ubuntu/Debian)
set -euo pipefail
WG_DIR=/etc/wireguard
SERVER_IP=$(curl -s ifconfig.me)
WAN_IF=$(ip route list default | awk '{print $5; exit}')
# 1. Install
sudo apt update && sudo apt install -y wireguard wireguard-tools qrencode
# 2. Server and client keys
cd "$WG_DIR"
umask 077
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
wg genkey | sudo tee client_private.key | wg pubkey | sudo tee client_public.key
SRV_PRIV=$(sudo cat server_private.key)
SRV_PUB=$(sudo cat server_public.key)
CLI_PRIV=$(sudo cat client_private.key)
CLI_PUB=$(sudo cat client_public.key)
# 3. Server config (variables are expanded)
sudo tee "$WG_DIR/wg0.conf" > /dev/null << EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = ${SRV_PRIV}
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ${WAN_IF} -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ${WAN_IF} -j MASQUERADE
[Peer]
PublicKey = ${CLI_PUB}
AllowedIPs = 10.8.0.2/32
EOF
# 4. Enable IP forwarding
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf
# 5. Client config
sudo tee "$WG_DIR/client.conf" > /dev/null << EOF
[Interface]
PrivateKey = ${CLI_PRIV}
Address = 10.8.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = ${SRV_PUB}
Endpoint = ${SERVER_IP}:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
# 6. Firewall and start
sudo ufw allow 51820/udp || true
sudo systemctl enable --now wg-quick@wg0
sudo qrencode -t ansiutf8 < "$WG_DIR/client.conf"
echo "Done: the VPN is up, client config is at $WG_DIR/client.conf"
Oma VPN WireGuardiga saab püsti panna 15 minutiga: paigaldada pakett, genereerida võtmepaar, kirjeldada serveris liides wg0, lülitada sisse IP-edastus ja lisada klient. Allpool on täielik käskude jada Ubuntu/Debiani jaoks mis tahes VPS-il.
Miks just WireGuard
WireGuard on sisse ehitatud Linuxi tuuma, kasutab kaasaegset krüptograafiat (Curve25519, ChaCha20) ja töötab OpenVPN-ist kiiremini, kuigi koodi on kordades vähem. Konfiguratsioon on kaks lühikest faili. Isikliku VPN-i jaoks on sellest enam kui küll.
Miinimumnõuded: VPS 1 vCPU ja 512 MB RAM-iga, avalik IPv4, root-ligipääs. VPN-i jaoks sobib iga soodne pakett — krüpteerimine protsessorit peaaegu ei koorma.
1. samm. Paigaldamine
apt update && apt upgrade -y
apt install -y wireguard wireguard-tools
2. samm. Serveri võtmete genereerimine
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
cat server_private.key
cat server_public.key
umask 077 kaitseb privaatvõtit teiste kasutajate eest. Salvestage mõlemad väärtused — need lähevad konfiguratsioonis vaja.
3. samm. Serveri konfiguratsioon
Tuvastage välimine võrguliides:
ip route list default
Tavaliselt on see eth0 või ens3. Avage /etc/wireguard/wg0.conf redaktoris (sudo nano /etc/wireguard/wg0.conf) ja lisage sisu:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <server_private.key>
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
Või looge fail tervikuna ühe käsuga — kopeerige ja kleepige konsooli (jutumärgid 'EOF' hoiavad kohatäited muutumatuna):
sudo tee /etc/wireguard/wg0.conf > /dev/null << 'EOF'
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <server_private.key>
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
EOF
Asendage eth0 oma liidese nimega ja lisage serveri privaatvõti.
4. samm. IP-edastuse sisselülitamine
Ilma selleta ei suuna server klientide liiklust internetti:
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-wireguard.conf
sysctl -p /etc/sysctl.d/99-wireguard.conf
5. samm. Kliendi võtmed ja konfiguratsioon
Genereerige kliendile võtmepaar:
wg genkey | tee client_private.key | wg pubkey > client_public.key
Avage kliendiseadmes fail client.conf redaktoris (nano client.conf) ja lisage sisu:
[Interface]
PrivateKey = <client_private.key>
Address = 10.8.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = <server_public.key>
Endpoint = <teie_VPS_IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Või kirjutage fail tervikuna ühe käsuga (jutumärgid 'EOF' jätavad kohatäited muutumatuks):
tee client.conf > /dev/null << 'EOF'
[Interface]
PrivateKey = <client_private.key>
Address = 10.8.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = <server_public.key>
Endpoint = <teie_VPS_IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
AllowedIPs = 0.0.0.0/0 suunab kogu liikluse läbi VPN-i. PersistentKeepalive = 25 hoiab ühenduse NAT-i taga elus.
6. samm. Kliendi registreerimine serveris
Lisage faili /etc/wireguard/wg0.conf lõppu:
[Peer]
PublicKey = <client_public.key>
AllowedIPs = 10.8.0.2/32
7. samm. Käivitamine
systemctl enable --now wg-quick@wg0
systemctl status wg-quick@wg0
wg show
Avage port tulemüüris (kui kasutate ufw-d):
ufw allow 51820/udp
Kliendi ühendamine
Telefonis on mugav konfiguratsioon importida QR-koodiga:
apt install -y qrencode
qrencode -t ansiutf8 < client.conf
Skaneerige kood WireGuardi rakenduses — ühendus luuakse automaatselt.
Kontroll
Pärast ühendumist kontrollige välist IP-d:
curl ifconfig.me
Tagastuma peab teie VPS-i IP. Kui ei tagasta, kontrollige IP-edastust ja MASQUERADE-reeglit.
Mitme kliendi lisamine
Iga seade vajab oma võtmepaari ja oma IP-d alamvõrgust. Genereerige teisele kliendile võtmed:
cd /etc/wireguard
wg genkey | tee client2_private.key | wg pubkey > client2_public.key
Lisage faili /etc/wireguard/wg0.conf uus plokk:
[Peer]
PublicKey = <client2_public.key>
AllowedIPs = 10.8.0.3/32
Rakendage muudatused olemasolevaid ühendusi katkestamata:
wg syncconf wg0 <(wg-quick strip wg0)
Nii loetakse konfiguratsioon lennult uuesti sisse ja aktiivsed partnerid ei kuku ära.
Varundamine ja taastamine
Kõik VPN-i seaded on kaustas /etc/wireguard. Salvestage need turvalisse kohta:
tar czf wireguard-backup.tar.gz /etc/wireguard
Uuele serverile kolides pakkige arhiiv lahti, paigaldage wireguard-tools ja käivitage wg-quick@wg0 — klientidel pole vaja midagi muuta, kui serveri IP jäi samaks.
Kontroll pärast taaskäivitust
Veenduge, et liides tõuseb automaatselt:
reboot
# pärast sisselogimist
wg show
systemctl is-enabled wg-quick@wg0
Vastus enabled kinnitab automaatkäivitust. Kui liides ei tõusnud, vaadake journalctl -u wg-quick@wg0.
Liidese turvalisus
Serveri privaatvõti on kõige tundlikum fail. Kontrollige õigusi:
chmod 600 /etc/wireguard/*.key /etc/wireguard/wg0.conf
Ärge saatke privaatvõtmeid krüpteerimata kanalite kaudu ja genereerige igale seadmele eraldi paar — nii ei paljasta ühe kliendi kompromiteerimine ülejäänuid.
Korduma kippuvad küsimused
Mitu seadet saab ühendada?
Nii palju kui vaja. Iga seadme jaoks lisage eraldi [Peer] plokk unikaalse AllowedIPs väärtusega (10.8.0.3/32, 10.8.0.4/32 jne).
Kas WireGuard töötab ainult UDP-portidel? Jah, WireGuard kasutab ainult UDP-d. Veenduge, et sideoperaator ja tulemüür valitud porti ei blokeeri.
Kuidas parandada DNS-i privaatsust?
Määrake kliendis DNS = 1.1.1.1 või püstitage samale VPS-ile oma resolver.
Kas porti 51820 saab muuta?
Jah, muutke serveri konfiguratsioonis ListenPort ja klientidel Endpoint ning avage tulemüüris uus port.
Kas VPN vajab eraldi serverit? Eraldi VPS isoleerib VPN-i muudest ülesannetest ja lihtsustab ligipääsu haldamist. Isiklikuks kasutuseks piisab kõige kergemast paketist.
Valmis oma VPN-i püstitama? Võtke VPS turvalisuse ja VPN-i jaoks või tavaline VPS-i rent. Pole aega seadistamiseks — aitab Serverite haldus.