Ukratko

Najvažnije iz članka

  • WireGuard je moderan VPN protokol poznat po svojoj jednostavnosti (mali codebase), visokim performansama i suvremenoj kriptografiji, integriran izravno u Linux kernel.
  • Instalacija uključuje ažuriranje sustava i instalaciju `wireguard` ili `wireguard-dkms` paketa, te generiranje parova javnih/privatnih ključeva za server i svakog klijenta.
  • Konfiguracija WireGuard servera (`wg0.conf`) zahtijeva postavljanje `PrivateKey`, `Address`, `ListenPort`, `PostUp`/`PostDown` pravila za NAT i IP prosljeđivanje, te definiranje `[Peer]` sekcija za svakog klijenta s njihovim `PublicKey` i `AllowedIPs` adresama.
  • Klijentska konfiguracija (`wg0.conf`) uključuje `PrivateKey` klijenta, `Address` unutar VPN mreže, `DNS` postavke, `PublicKey` servera, `Endpoint` servera i `AllowedIPs = 0.0.0.0/0` za usmjeravanje cjelokupnog prometa kroz VPN.
Sadržaj članka
  1. Uvod u WireGuard i njegovu važnost
  2. Zašto baš WireGuard?
  3. Priprema Linux sustava
  4. Ažuriranje sustava i instalacija paketa
  5. Generiranje ključeva
  6. Generiranje ključeva za server
  7. Generiranje ključeva za klijente
  8. Konfiguracija WireGuard servera
  9. Omogućavanje IP prosljeđivanja (IP Forwarding)
  10. Pokretanje WireGuard servera
  11. Konfiguracija WireGuard klijenta
  12. Pokretanje WireGuard klijenta
  13. Napredne konfiguracije i sigurnosni savjeti
  14. Više klijenata (dodavanje novih peera)
  15. Upravljanje firewallom (firewalld/ufw)
  16. Automatsko generiranje konfiguracija (qr-kodovi)
  17. Rotacija ključeva i sigurnost
  18. Rješavanje problema (Troubleshooting)
  19. Zaključak

Uvod u WireGuard i njegovu važnost

U današnjem digitalnom dobu, gdje su online privatnost i sigurnost pod stalnim pritiskom, Virtual Private Network (VPN) postaje neizostavan alat. VPN-ovi omogućuju uspostavljanje sigurne, šifrirane veze ("tunela") preko javne mreže, poput interneta, čime se štiti vaš internetski promet od prisluškivanja i nadzora. Iako postoji mnoštvo VPN protokola, WireGuard se posljednjih godina istaknuo kao revolucionarno rješenje. Razvijen s fokusom na jednostavnost, performanse i sigurnost, WireGuard nudi značajna poboljšanja u odnosu na starije protokole poput OpenVPN-a i IPSec-a.

Zašto baš WireGuard?

WireGuard je dizajniran s nekoliko ključnih principa na umu. Njegov kod je izuzetno sažet – sadrži samo oko 4.000 linija koda, što je drastično manje od OpenVPN-a (približno 600.000 linija) ili IPSec-a (preko 400.000 linija). Manji kod znači manju površinu napada i olakšava sigurnosne revizije, čime se smanjuje vjerojatnost ranjivosti. Osim toga, WireGuard koristi najsuvremenije kriptografske primitive, uključujući Noise protokol framework, Curve25519 za razmjenu ključeva, ChaCha20 za simetrično šifriranje, Poly1305 za autentikaciju poruka i SipHash za ključanje heš tablica. Ove tehnologije osiguravaju brzu, ali i robusnu enkripciju.

Performanse su još jedna jaka točka WireGuarda. Zahvaljujući elegantnom dizajnu i integraciji izravno u Linux kernel (od verzije 5.6), postiže znatno veće brzine i manju latenciju u usporedbi s drugim VPN rješenjima koja često rade u korisničkom prostoru. To ga čini idealnim za sve, od kućnih korisnika do velikih korporacija koje zahtijevaju pouzdanu i brzu VPN vezu. Njegova jednostavnost instalacije i konfiguracije također je velika prednost, što ćemo detaljno istražiti u ovom vodiču.

Priprema Linux sustava

Prije nego što započnemo s instalacijom WireGuarda, važno je osigurati da je vaš Linux sustav (bilo da je riječ o serveru na kojem će raditi WireGuard, ili klijent uređaju) spreman. Preporučuje se korištenje novije distribucije Linuxa koja ima podršku za noviji kernel, idealno 5.6 ili noviji, kako bi WireGuard mogao iskoristiti svoju kernel-modul implementaciju.

Ažuriranje sustava i instalacija paketa

Prvi korak je uvijek ažuriranje sustava kako biste imali najnovije sigurnosne zakrpe i pakete. Otvorite terminal i pokrenite sljedeće naredbe ovisno o vašoj distribuciji:

  • Debian/Ubuntu:
    sudo apt update
    sudo apt upgrade -y
    
  • CentOS/RHEL/Fedora:
    sudo dnf update -y
    

Nakon ažuriranja, moramo instalirati WireGuard pakete. Ako koristite Debian/Ubuntu s kernelom 5.6+, WireGuard bi trebao biti dostupan iz standardnih repozitorija. Ako koristite stariji kernel, možda ćete morati instalirati wireguard-dkms koji će WireGuard kompilirati kao modul za vaš specifični kernel.

  • Debian/Ubuntu (za kernel 5.6+):

    sudo apt install wireguard -y
    
  • Debian/Ubuntu (za starije kernele, ili ako gornja naredba ne radi):

    sudo apt install wireguard-dkms wireguard-tools -y
    
  • CentOS/RHEL/Fedora:

    sudo dnf install epel-release
    sudo dnf install wireguard-tools -y
    

    (Napomena: na RHEL/CentOS-u, WireGuard je obično dostupan putem EPEL repozitorija, a kernel-modul je uključen u kernel od novijih verzija.)

Generiranje ključeva

WireGuard koristi parove javnih/privatnih ključeva za autentikaciju. Svaki peer (server i svaki klijent) mora imati svoj par ključeva. Privatni ključ se čuva tajnim i ne smije se dijeliti, dok se javni ključ dijeli s drugim peerovima. Javni ključ se koristi za identifikaciju drugog peera i šifriranje prometa namijenjenog njemu.

Generiranje ključeva za server

Na serveru pokrenite sljedeće naredbe za generiranje privatnog i javnog ključa:

wg genkey | tee privatekey_server | wg pubkey > publickey_server

Ovo će stvoriti dvije datoteke u vašem trenutnom direktoriju: privatekey_server i publickey_server. Sadržaj privatekey_server je vaš privatni ključ, a publickey_server je javni ključ.

Generiranje ključeva za klijente

Za svakog klijenta koji se želi povezati na VPN server, morate generirati poseban par ključeva. Preporučljivo je generirati ove ključeve na samom klijentskom uređaju, ali ih možete generirati i na serveru, pa ih sigurno prenijeti na klijenta:

wg genkey | tee privatekey_client1 | wg pubkey > publickey_client1

Ponovite ovaj postupak za svakog klijenta (privatekey_client2, publickey_client2, itd.).

Važno: Privatne ključeve čuvajte na sigurnom mjestu i nikada ih ne dijelite!

Konfiguracija WireGuard servera

Kreirajte konfiguracijsku datoteku za WireGuard na serveru. Tipično se nalazi u /etc/wireguard/wg0.conf (gdje je wg0 željeno ime VPN sučelja).

sudo nano /etc/wireguard/wg0.conf

U datoteku wg0.conf unesite sljedeći sadržaj (prilagodite IP adrese, port i imena ključeva):

[Interface]
PrivateKey = <sadržaj_privatekey_server>
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Klijent 1
[Peer]
PublicKey = <sadržaj_publickey_client1>
AllowedIPs = 10.0.0.2/32

# Klijent 2
[Peer]
PublicKey = <sadržaj_publickey_client2>
AllowedIPs = 10.0.0.3/32

Objašnjenje konfiguracije:

  • [Interface]: Sekcija za postavke samog VPN sučelja na serveru.

    • PrivateKey: Vaš privatni ključ servera. Zamijenite <sadržaj_privatekey_server> stvarnim privatnim ključem.
    • Address: Privatna IP adresa servera unutar VPN tunela i CIDR blok. Ovdje je 10.0.0.1 prva adresa u 10.0.0.0/24 mreži.
    • ListenPort: UDP port na kojem WireGuard server osluškuje dolazne veze. 51820 je standardni port.
    • PostUp i PostDown: Ove linije su ključne za usmjeravanje prometa. PostUp naredbe se izvršavaju kada se WireGuard sučelje podigne, a PostDown kada se spusti. Ovdje se koriste iptables pravila za omogućavanje prosljeđivanja prometa (IP Forwarding) i NAT (Network Address Translation) kako bi klijenti mogli pristupiti internetu preko servera. Zamijenite eth0 s imenom vašeg glavnog mrežnog sučelja koje je spojeno na internet (može biti enp0s3, ens192, itd. – provjerite s ip a).
  • [Peer]: Svaka ova sekcija predstavlja jednog klijenta koji se spaja na server.

    • PublicKey: Javni ključ dotičnog klijenta. Zamijenite <sadržaj_publickey_client1> stvarnim javnim ključem klijenta.
    • AllowedIPs: Privatna IP adresa koju će klijent dobiti unutar VPN tunela. /32 označava da je to jedna specifična IP adresa, a ne cijeli raspon. Ključno je da svaki klijent ima jedinstvenu AllowedIPs adresu.

Omogućavanje IP prosljeđivanja (IP Forwarding)

Kako bi server mogao prosljeđivati promet s klijenata na internet, morate omogućiti IP prosljeđivanje. Otvorite sysctl konfiguracijsku datoteku:

sudo nano /etc/sysctl.conf

Dodajte ili odkomentirajte sljedeću liniju:

net.ipv4.ip_forward = 1

Spremite datoteku i primijenite promjene:

sudo sysctl -p

Pokretanje WireGuard servera

Sada ste spremni pokrenuti WireGuard sučelje:

sudo wg-quick up wg0

Omogućite WireGuard da se automatski pokreće pri bootanju sustava:

sudo systemctl enable wg-quick@wg0

Provjerite status WireGuarda:

sudo wg

Trebali biste vidjeti informacije o vašem WireGuard sučelju i povezanim peerovima (ako su se klijenti već spojili).

Konfiguracija WireGuard klijenta

Na svakom klijentskom uređaju (koji također pokreće Linux), kreirajte konfiguracijsku datoteku. Nazovite je slično, npr. /etc/wireguard/wg0.conf.

sudo nano /etc/wireguard/wg0.conf

U datoteku wg0.conf unesite sljedeći sadržaj (prilagodite ključeve i IP adrese):

[Interface]
PrivateKey = <sadržaj_privatekey_client1>
Address = 10.0.0.2/32
DNS = 8.8.8.8, 8.8.4.4

[Peer]
PublicKey = <sadržaj_publickey_server>
Endpoint = <IP_adresa_servera>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Objašnjenje konfiguracije klijenta:

  • [Interface]: Postavke klijentskog VPN sučelja.

    • PrivateKey: Privatni ključ ovog klijenta.
    • Address: Privatna IP adresa dodijeljena ovom klijentu unutar VPN mreže. Mora odgovarati AllowedIPs adresi koju ste konfigurirali za ovog klijenta na serveru.
    • DNS: DNS serveri koje će klijent koristiti kada je spojen na VPN. Ovdje su navedeni Google DNS serveri, ali možete koristiti bilo koje druge po želji (npr. DNS server servera, ako ga imate).
  • [Peer]: Sekcija koja opisuje VPN server na koji se ovaj klijent spaja.

    • PublicKey: Javni ključ WireGuard servera.
    • Endpoint: Javna IP adresa ili hostname vašeg WireGuard servera, nakon čega slijedi port. Npr. your_server_ip:51820.
    • AllowedIPs: Ovo je ključna postavka. 0.0.0.0/0 znači da će sav promet s klijenta biti usmjeren kroz VPN tunel. Ako želite da samo određeni promet ide kroz VPN, ovdje biste naveli specifične IP adrese ili mreže (npr., 10.0.0.0/24 ako želite pristupiti samo lokalnoj mreži servera).
    • PersistentKeepalive: Opcijska postavka koja šalje UDP paket svakih 25 sekundi kako bi veza ostala aktivna, što je korisno ako se klijent nalazi iza NAT-a ili firewalla i ima problema s održavanjem veze.

Pokretanje WireGuard klijenta

Na klijentu pokrenite WireGuard sučelje:

sudo wg-quick up wg0

Omogućite automatsko pokretanje:

sudo systemctl enable wg-quick@wg0

Provjerite status klijenta:

sudo wg

Sada bi vaš klijent trebao biti spojen na WireGuard server. Možete provjeriti svoju javnu IP adresu (trebala bi biti ona od servera) ili pokušati pristupiti resursima unutar serverove mreže. Također, provjerite jesu li AllowdIPs adrese u konfiguraciji klijenta pravilno postavljene. Ako klijent ne dobije IP adresu servera, već svoju javnu IP, to znači da AllowedIPs nije postavljen na 0.0.0.0/0 ili da iptables pravila na serveru nisu ispravna.

Napredne konfiguracije i sigurnosni savjeti

Više klijenata (dodavanje novih peera)

Za dodavanje novih klijenata, ponovite korake za generiranje ključeva za klijenta. Zatim, na serveru, jednostavno dodajte novu [Peer] sekciju u /etc/wireguard/wg0.conf s javnim ključem novog klijenta i jedinstvenom AllowedIPs adresom (npr. 10.0.0.4/32).

Nakon izmjene konfiguracije na serveru, morate je ponovno učitati:

sudo wg-quick down wg0
sudo wg-quick up wg0

Ili jednostavno:

sudo systemctl restart wg-quick@wg0

Upravljanje firewallom (firewalld/ufw)

Ključno je pravilno konfigurirati firewall na vašem serveru kako biste omogućili WireGuard promet. Ako koristite ufw (Uncomplicated Firewall) na Debian/Ubuntu sustavima:

sudo ufw allow 51820/udp
sudo ufw enable

Ako koristite firewalld na CentOS/RHEL/Fedora sustavima:

sudo firewall-cmd --add-port=51820/udp --permanent
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload

Ovo dopušta dolazni UDP promet na portu 51820 i omogućuje NAT (masquerading) za prosljeđivanje prometa.

Automatsko generiranje konfiguracija (qr-kodovi)

Za mobilne klijente (Android, iOS) ili čak desktop klijente, WireGuard nudi praktičnu opciju generiranja QR koda za brzu konfiguraciju. Nakon što ste generirali klijentsku konfiguracijsku datoteku (wg0.conf), možete je ispisati kao QR kod:

sudo apt install qrencode # Instalirajte qrencode ako već nemate
cat /etc/wireguard/wg0.conf | qrencode -t ansiutf8

Ovo će ispisati QR kod u vaš terminal, koji možete skenirati s WireGuard aplikacijom na svom mobilnom uređaju.

Rotacija ključeva i sigurnost

Iako WireGuard koristi naprednu kriptografiju, dobra je praksa povremeno rotirati ključeve, posebno ako sumnjate na kompromitaciju. Proces je jednostavan: generirate novi par ključeva za server i/ili klijenta, ažurirate konfiguracijske datoteke na svim relevantnim uređajima i ponovno pokrenete WireGuard sučelja. Zapamtite da se privatni ključevi nikada ne smiju dijeliti preko nešifriranih kanala.

Rješavanje problema (Troubleshooting)

  • Nema povezivanja: Provjerite firewall na serveru (port 51820 UDP), javnu IP adresu servera, i da li se privatni/javni ključevi podudaraju. Također, provjerite AllowedIPs postavke na serveru i klijentu.
  • Nema pristupa internetu (nakon povezivanja): Najčešće problem s iptables pravilima na serveru (Posebno PostUp/PostDown i MASQUERADE) ili IP prosljeđivanjem (net.ipv4.ip_forward). Provjerite naziv mrežnog sučelja (eth0).
  • Server ne vidi klijenta (sudo wg na serveru): Provjerite Endpoint na klijentu i PublicKey klijenta na serveru. Osigurajte da je ListenPort na serveru ispravan.
  • Klijent ne vidi server (sudo wg na klijentu): Provjerite Endpoint i PublicKey servera na klijentu. Ako je PersistentKeepalive postavljen, trebalo bi vidjeti promet.
  • Verzija kernela: Ako koristite stariji kernel, provjerite jeste li instalirali wireguard-dkms paket.

Zaključak

WireGuard predstavlja izvanredan korak naprijed u svijetu VPN tehnologija. Njegova jednostavnost, učinkovitost i robustna sigurnost čine ga idealnim izborom za svakoga tko želi uspostaviti siguran tunel na svom Linux sustavu. Slijedeći ovaj detaljni vodič, uspješno ćete postaviti i upravljati vlastitim WireGuard VPN-om, osiguravajući privatnost i sigurnost vaših digitalnih komunikacija. Neovisno o tome jeste li napredni korisnik ili tek počinjete istraživati svijet Linuxa i mrežne sigurnosti, WireGuard nudi intuitivno i snažno rješenje koje vrijedi implementirati.

Izvori i dodatno čitanje

  1. WireGuard službena web stranica
  2. Arch Wiki - WireGuard
  3. DigitalOcean Tutorial - How To Set Up WireGuard VPN on Ubuntu 20.04
B
Uredništvo portala

BAJT

Službeni autorski profil redakcije portala BAJT. Sadržaj priprema i provjerava uredništvo portala.