Savas VPN VPS serveryje su WireGuard: konfigūravimas 2026

Paleiskite serveryje viena komanda (pirmiausia patikrinkite skripto turinį žemiau):

curl -sSL https://cp.lv/scripts/svoj-vpn-wireguard.sh | sudo bash

…arba su wget:

wget -qO- https://cp.lv/scripts/svoj-vpn-wireguard.sh | sudo bash

Skripto turinys 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"

Savą VPN su WireGuard pasikelsite per 15 minučių: įdiegti paketą, sugeneruoti raktų porą, aprašyti sąsają wg0 serveryje, įjungti IP peradresavimą ir pridėti klientą. Žemiau — visa komandų seka Ubuntu ir Debian sistemoms bet kuriame VPS.

Kodėl būtent WireGuard

WireGuard yra integruotas į Linux branduolį, naudoja šiuolaikinę kriptografiją (Curve25519, ChaCha20) ir veikia greičiau nei OpenVPN, nors kodo turi kelis kartus mažiau. Konfigūracija — tai du trumpi failai. Asmeniniam VPN to visiškai pakanka.

Minimalūs reikalavimai: VPS su 1 vCPU ir 512 MB RAM, viešas IPv4, root prieiga. VPN tinka bet kuris nebrangus planas — šifravimo srautas procesoriaus beveik neapkrauna.

1 žingsnis. Diegimas

apt update && apt upgrade -y
apt install -y wireguard wireguard-tools

2 žingsnis. Serverio raktų generavimas

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 apsaugo privatų raktą nuo kitų naudotojų skaitymo. Išsaugokite abi reikšmes — jų prireiks konfigūracijoje.

3 žingsnis. Serverio konfigūracija

Nustatykite išorinę tinklo sąsają:

ip route list default

Paprastai tai eth0 arba ens3. Atverkite /etc/wireguard/wg0.conf redaktoriuje (sudo nano /etc/wireguard/wg0.conf) ir įrašykite turinį:

[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

Arba sukurkite failą iš karto viena komanda — nukopijuokite ir įklijuokite į konsolę (kabutės 'EOF' palieka vietaženklius tokius, kokie yra):

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

Pakeiskite eth0 savo sąsajos pavadinimu ir įrašykite serverio privatų raktą.

4 žingsnis. IP peradresavimo įjungimas

Be jo serveris neperduos klientų srauto į internetą:

echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-wireguard.conf
sysctl -p /etc/sysctl.d/99-wireguard.conf

5 žingsnis. Kliento raktai ir konfigūracija

Sugeneruokite klientui raktų porą:

wg genkey | tee client_private.key | wg pubkey > client_public.key

Kliento įrenginyje atverkite failą client.conf redaktoriuje (nano client.conf) ir įrašykite turinį:

[Interface]
PrivateKey = <client_private.key>
Address = 10.8.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = <server_public.key>
Endpoint = <jusu_VPS_IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Arba įrašykite failą iš karto viena komanda (kabutės 'EOF' palieka vietaženklius tokius, kokie yra):

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 = <jusu_VPS_IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF

AllowedIPs = 0.0.0.0/0 nukreipia visą srautą per VPN. PersistentKeepalive = 25 išlaiko ryšį gyvą už NAT.

6 žingsnis. Kliento registravimas serveryje

Pridėkite failo /etc/wireguard/wg0.conf gale:

[Peer]
PublicKey = <client_public.key>
AllowedIPs = 10.8.0.2/32

7 žingsnis. Paleidimas

systemctl enable --now wg-quick@wg0
systemctl status wg-quick@wg0
wg show

Atverkite prievadą ugniasienėje (jei naudojate ufw):

ufw allow 51820/udp

Kliento prijungimas

Telefone konfigūraciją patogu importuoti QR kodu:

apt install -y qrencode
qrencode -t ansiutf8 < client.conf

Nuskaitykite kodą WireGuard programėlėje — ryšys užsimegs automatiškai.

Patikra

Prisijungę patikrinkite išorinį IP:

curl ifconfig.me

Turi grįžti jūsų VPS adresas. Jei ne — patikrinkite IP peradresavimą ir MASQUERADE taisyklę.

Kelių klientų pridėjimas

Kiekvienam įrenginiui reikia savos raktų poros ir savo IP iš potinklio. Sugeneruokite antrojo kliento raktus:

cd /etc/wireguard
wg genkey | tee client2_private.key | wg pubkey > client2_public.key

Pridėkite naują bloką faile /etc/wireguard/wg0.conf:

[Peer]
PublicKey = <client2_public.key>
AllowedIPs = 10.8.0.3/32

Pritaikykite pakeitimus nenutraukdami esamų ryšių:

wg syncconf wg0 <(wg-quick strip wg0)

Taip konfigūracija perskaitoma iš naujo veikimo metu, o aktyvūs peers neatsijungia.

Atsarginė kopija ir atkūrimas

Visi VPN nustatymai saugomi kataloge /etc/wireguard. Išsaugokite juos saugioje vietoje:

tar czf wireguard-backup.tar.gz /etc/wireguard

Perkeliant į naują serverį išpakuokite archyvą, įdiekite wireguard-tools ir paleiskite wg-quick@wg0 — klientams nieko keisti nereikės, jei serverio IP nepasikeitė.

Patikra po perkrovimo

Įsitikinkite, kad sąsaja pakyla automatiškai:

reboot
# po prisijungimo
wg show
systemctl is-enabled wg-quick@wg0

Atsakymas enabled patvirtina automatinį paleidimą. Jei sąsaja nepakilo — žiūrėkite journalctl -u wg-quick@wg0.

Sąsajos saugumas

Serverio privatus raktas — jautriausias failas. Patikrinkite teises:

chmod 600 /etc/wireguard/*.key /etc/wireguard/wg0.conf

Neperduokite privačių raktų nešifruotais kanalais ir generuokite atskirą porą kiekvienam įrenginiui — taip vieno kliento kompromitavimas neatskleidžia kitų.

Dažni klausimai

Kiek įrenginių galima prijungti? Kiek tik reikia. Kiekvienam įrenginiui pridėkite atskirą bloką [Peer] su unikaliu AllowedIPs (10.8.0.3/32, 10.8.0.4/32 ir taip toliau).

Ar WireGuard veikia tik UDP prievadais? Taip, WireGuard naudoja tik UDP. Įsitikinkite, kad tiekėjas ir ugniasienė neblokuoja pasirinkto prievado.

Kaip padidinti DNS privatumą? Nurodykite kliente DNS = 1.1.1.1 arba pasikelkite savo skiriklį tame pačiame VPS.

Ar galima pakeisti prievadą 51820? Taip, pakeiskite ListenPort serverio konfigūracijoje ir Endpoint pas klientus, atverkite naują prievadą ugniasienėje.

Ar reikia atskiro serverio VPN paslaugai? Atskiras VPS izoliuoja VPN nuo kitų užduočių ir supaprastina prieigos valdymą. Asmeniniam naudojimui pakanka lengviausio plano.


Pasiruošę pasikelti asmeninį VPN? Rinkitės VPS saugumui ir VPN arba bazinę VPS nuomą. Nėra laiko konfigūruoti — padės Serverių administravimas.

Roman Sokolov