Visas sistēmas darbojas Tavs IP: 216.73.217.36 info@cloudhosting.lv +371 66 66 29 69 Klientu zona

← Visi jautājumi

Kā izveidot WireGuard VPN serveri uz VPS

Šī pamācība parāda, kā uz VPS ar Ubuntu 22.04 vai 24.04 uzstādīt savu WireGuard VPN serveri. Tā domāta izstrādātājiem un adminiem, kam vajadzīgs ātrs privāts tunelis attālinātai piekļuvei, drošai publiskā Wi-Fi lietošanai vai fiksētai IP adresei iekšējo servisu sasniegšanai. Beigās tev būs strādājošs serveris, viens gatavs klients un QR kods, ko noskenēt ar telefonu.

Kāpēc WireGuard

WireGuard šodien ir saprātīgā noklusējuma izvēle pašam savam VPN. Iemesli ir praktiski:

  • Maza kodu bāze. Kodols ir aptuveni 4000 rindu. OpenVPN kopā ar tā TLS steku ir par vairākām kārtām lielāks, un uzbrukuma virsma aug līdz ar koda apjomu.
  • Moderna kriptogrāfija, nekas nav jāizvēlas. Šifrēšanai ChaCha20-Poly1305 un atslēgu apmaiņai Curve25519 ir fiksēti. Nav šifru komplektu, ko var nokonfigurēt nepareizi.
  • Realizācija kodolā. WireGuard ir Linux kodolā kopš versijas 5.6, tāpēc pat neliels VPS dzen trafiku gandrīz pilnā porta ātrumā ar zemu CPU slodzi.
  • Minimāla konfigurācija. Strādājoša konfigurācija ir ap desmit rindām, un pārslēgšanās starp Wi-Fi un mobilajiem datiem notiek nemanāmi, jo sesijas ir piesaistītas atslēgām, nevis avota adresēm.

Kompromiss: WireGuard nav lietotāju pārvaldības un dinamiska adrešu pūla. Katrs klients ir atslēgu pāris plus statiska tuneļa IP adrese, ko piešķir tu pats. Vienam adminam un dažām ierīcēm tā ir priekšrocība, nevis ierobežojums.

Instalē WireGuard un ģenerē atslēgas

Visas komandas zemāk izpildi kā root. Instalē rīkus:

apt update
apt install -y wireguard qrencode

Ģenerē atslēgu pāri serverim un vienu pirmajam klientam. umask nodrošina, ka privātās atslēgas nav lasāmas visiem:

cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee client1.key | wg pubkey > client1.pub

Privātā atslēga nekad nepamet mašīnu, kurai tā pieder. Stingrā izvietojumā klienta atslēgu ģenerētu uz pašas klienta ierīces; pirmajai uzstādīšanai to darīt uz servera ir pieņemami, tikai izdzēs client1.key pēc konfigurācijas importēšanas telefonā.

Servera konfigurācija

Izveido /etc/wireguard/wg0.conf. Aizstāj abus aizvietotājus ar īsto server.key un client1.pub saturu:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# client1, telefons
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

PostUp rinda pārvērš VPS par NAT vārteju: paketes, kas ienāk no tuneļa, iziet caur publisko interfeisu ar servera IP adresi. Daudzos sistēmas attēlos publiskais interfeiss saucas ens3 vai enp1s0, nevis eth0. Pārbaudi to un pielāgo abas rindas:

ip route | grep default

NAT neko nedara bez IP pārsūtīšanas, kas Ubuntu pēc noklusējuma ir izslēgta. Ieslēdz to pastāvīgi:

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

Visbeidzot aizsargā konfigurāciju, jo tā satur privāto atslēgu:

chmod 600 /etc/wireguard/wg0.conf

Klienta konfigurācija un QR kods telefonam

Izveido client1.conf tajā pašā direktorijā. Šis fails nonāks klienta ierīcē, tāpēc tajā ir klienta privātā atslēga un servera publiskā atslēga:

[Interface]
PrivateKey = CLIENT1_PRIVATE_KEY
Address = 10.8.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_VPS_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0 maršrutē visu klienta trafiku caur VPN. Ja gribi sasniegt tikai servera iekšējo tīklu, tā vietā norādi konkrētus apakštīklus, piemēram 10.8.0.0/24. PersistentKeepalive uztur NAT ierakstu dzīvu mobilajos tīklos.

Telefonam instalē oficiālo WireGuard lietotni no App Store vai Google Play un attēlo konfigurāciju kā QR kodu tieši terminālī:

qrencode -t ansiutf8 < client1.conf

Lietotnē izvēlies Add tunnel, tad Scan from QR code. Failu pārsūtīšana nav vajadzīga.

Ugunsmūris un palaišana

Ja lieto ufw, atver WireGuard portu un atļauj pārsūtīto trafiku no tuneļa uz internetu:

ufw allow 51820/udp
ufw route allow in on wg0 out on eth0
ufw reload

Palaid tuneli un ieslēdz to pie sistēmas starta:

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

wg show parāda pīru; lauks latest handshake parādās, tiklīdz telefons pieslēdzas. No klienta pārbaudi ceļu no gala līdz galam:

  • ping 10.8.0.1 apstiprina pašu tuneli
  • jebkura what-is-my-ip lapa tagad parādīs VPS adresi, kas apstiprina NAT

Lai pievienotu vēl klientus, atkārto atslēgu ģenerēšanu, izvēlies nākamo brīvo adresi (10.8.0.3/32 un tā tālāk), pievieno jaunu [Peer] bloku failā wg0.conf un izpildi systemctl restart wg-quick@wg0, vai pievieno pīru uzreiz ar wg set wg0 peer PUBKEY allowed-ips 10.8.0.3/32.

Jauda un kad nodot tālāk

WireGuard ir viegls. Katrs pīrs aizņem dažus kilobaitus stāvokļa, un kodols šifrē lēti, tāpēc VPS ar 1 vCPU un 2 GB RAM ērti apkalpo desmitiem vienlaicīgu klientu. Reālais šaurās vietas punkts ir tīkla ports, nevis procesors, un tipisks attālinātā darba trafiks to pat netuvina piesātinājumam.

Šai uzstādīšanai der jebkurš no mūsu VPS plāniem; katram ir sava publiskā IPv4 adrese mūsu pašu tīklā AS58269, kas ir tieši tas, kas VPN galapunktam vajadzīgs. Ja uzdevums ir savienot veselus birojus, nevis atsevišķas ierīces, īstais darbs kļūst atslēgu izplatīšana, monitorings un rezervēšana; tādam gadījumam piedāvājam pārvaldītu VPN starp birojiem, kur tuneļus uzturam un uzraugām mēs, bet maršrutēšanu kontrolē tu.

Gribi, lai to darām mēs?
VPS. NVMe virtuālie serveri, gatavi minūtes laikā.
Uzzināt vairāk

Gatavs sākt?

Palaid dažās minūtēs vai aprunājies ar inženieri par piemērotāko risinājumu.