Kompletan vodič za pravljenje sopstvenog VPN servera u 2026. Detaljna analiza troškova, WireGuard, Tailscale, wg-easy v15, Cloudflare Mesh, nftables, bezbednost i praktični tutorijali.

[!NOTE] Cene i Free Tier uslovi provereni 22.09.2026. i mogu se naknadno promeniti.
Šta vam zapravo treba pre kucanja prve komande?
Pravljenje sopstvenog VPN servera u 2026. godini više ne zahteva višednevno kompajliranje modula jezgra ili borbu sa stotinama linija nerazumljivih OpenVPN sertifikata. Međutim, zabluda je da postoji univerzalno rešenje za sve primene. Pre nego što zakupite server ili preuzmete softver, morate definisati primarni cilj:
- Siguran pristup kućnoj mreži dok putujete (NAS, kamere, pametna kuća): Treba vam kućni VPN server ili mesh overlay (Tailscale ili NetBird). Cena je 0 € ako uređaj i internet već postoje, a kućni uređaji ostaju nevidljivi sa javnog interneta.
- Zaštita na javnom Wi-Fi-ju i stabilna IP adresa van matične države: Dovoljan je mali VPS (Virtual Private Server) u pouzdanom evropskom data centru sa WireGuard servisom. Cena se kreće između 3.50 € i 6 € mesečno.
- Povezivanje više fizičkih lokacija (kancelarija, vikendica, cloud serveri): Treba vam Site-to-Site tunel ili WireGuard mesh arhitektura sa centralizovanim pristupnim polisama (ACL).
- Zaobilaženje restriktivnih zaštitnih zidova koji blokiraju VPN protokole: Standardni WireGuard može biti prepoznat i blokiran na mrežama koje aktivno filtriraju njegov protokolarni potpis pomoću Deep Packet Inspection (DPI) sistema. Rešenje je AmneziaWG ili enkriptovani proksi poput Outline-a.
Jasno razdvajanje kategorija mrežnih alata
U modernoj praksi pojam „VPN“ obuhvata četiri različite kategorije koje se često mešaju:
- Klasični VPN tuneli (WireGuard, OpenVPN, strongSwan/IKEv2): Tačka-tačka (Point-to-Point) ili klijent-server arhitektura. Celokupan saobraćaj sa uređaja usmerava se na centralni server (gateway), koji ga dešifruje i šalje dalje na internet ili u lokalnu mrežu.
- Mesh VPN i privatni preklopi (Tailscale, Headscale, NetBird, ZeroTier, Netmaker): Uređaji komuniciraju direktno (Peer-to-Peer) gde god to mrežni uslovi dozvoljavaju, bez prolaska kroz centralni server, uz pomoć koordinacionog servera za razmenu ključeva i NAT traversal.
- Zero Trust Network Access - ZTNA (Firezone, Defguard, Cloudflare Mesh): Pristup se ne dodeljuje celoj mreži na mrežnom sloju, već pojedinačnim servisima i resursima na osnovu identiteta korisnika, uređaja i konteksta (SSO, MFA polise).
- Anti-DPI i alati za zaobilaženje cenzure (AmneziaWG, Outline): Enkriptovani tuneli i proksiji specifično prilagođeni da maskiraju strukturu paketa kako bi saobraćaj prošao kroz inspekciju paketa na restriktivnim mrežama.
Granice privatnosti: Sopstveni VPN nije anonimnost
Jedna od najčešćih zabluda jeste poistovećivanje privatnog VPN servera sa potpunom anonimnošću na internetu.
- Komercijalni VPN servisi: Stotine ili hiljade korisnika dele iste izlazne IP adrese u istom trenutku. Vaš saobraćaj se meša sa saobraćajem drugih lica, što otežava eksternu korelaciju, ali zahteva potpuno slepo poverenje u kompaniju koja upravlja serverom i njen logički integritet.
- Sopstveni VPS: Vi ste jedini zakupac te javne IP adrese. Hosting provajder (Hetzner, OVH, Scaleway, DigitalOcean) ima vaše ime, podatke o platnoj kartici i tačno vreme alokacije instance. Kada pristupate sajtovima sa svog VPS-a, saobraćaj je zaštićen od lokalnog internet provajdera (ISP-a) i njuškanja na javnom Wi-Fi-ju, ali na ciljnom sajtu ostavljate IP adresu koja nedvosmisleno pripada vašem nalogu kod hosting kompanije.
- Kućni VPN: Izlazna IP adresa je vaš kućni priključak. Gde god da se nalazite u svetu, sajtovi vas vide kao da sedite u svojoj dnevnoj sobi.
Sopstveni VPN štiti podatke u tranzitu, može zaštititi DNS saobraćaj od lokalne mreže ako je klijent pravilno konfigurisan da upite šalje kroz tunel, omogućava siguran rad na neproverenim mrežama i pruža kontrolu nad mrežnim rutiranjem. On ne garantuje anonimnost, ne štiti od identifikacije preko otiska pretraživača (browser fingerprinting), prijavljenih korisničkih naloga, niti vas štiti od zlonamernog koda preuzetog sa interneta.
Datacenter IP naspram Residential IP adrese
Serveri zakupljeni u cloud-u nalaze se u blokovima adresa registrovanih na hosting kompanije (Autonomous System Number - ASN provajdera poput Hetznera, OVH-a ili AWS-a). Mnogi servisi (banke, striming platforme, anti-fraud i ticketing sajtovi) automatski prepoznaju ove opsege i mogu blokirati pristup ili tražiti dodatne provere jer obični korisnici ne surfuju sa data centar servera.
Nasuprot tome, kućna residential IP adresa može smanjiti probleme sa servisima koji strože tretiraju IP opsege poznatih hosting i data-center provajdera, ali ne garantuje pristup niti zaobilaženje njihovih bezbednosnih ili geografskih politika.
Pravna napomena o P2P i Torrent saobraćaju
WireGuard tehnički može prenositi bilo koji mrežni protokol, uključujući P2P i BitTorrent. Međutim, pokretanje torent saobraćaja kroz zakupljeni VPS direktno podleže pravilima korišćenja (Acceptable Use Policy - AUP) i uslovima korišćenja (ToS) izabranog hosting provajdera. Većina cloud provajdera automatski prosleđuje DMCA prijave o kršenju autorskih prava vlasniku naloga ili suspenduje instancu u slučaju zloupotrebe mreže. Sopstveni VPN ne menja vaše zakonske obaveze niti odgovornost prema pružaocu usluga.
Besplatne cloud opcije i njihove tehničke zamke
Ako ne želite da koristite kućni hardver, cloud provajderi nude besplatne pakete resursa. Ipak, svaki od njih nosi jasna tehnička ograničenja koja direktno utiču na funkciju VPN-a.
| Provajder | Ponuđeni resursi | Javna IPv4 adresa | Izlazni saobraćaj (Egress) | Upotrebljivost za VPN |
|---|---|---|---|---|
| Oracle Cloud Always Free | Do 2 × E2.1.Micro ili Ampere A1 (do 1.500 OCPU-h / 9.000 GB-h mesečno, ekvivalent 2 OCPU / 12 GB RAM) | 1 javna IPv4 adresa uključena | 10 TB mesečno | Visoka, uz rizik nedostatka kapaciteta u regionu i pravila o gašenju neaktivnih resursa |
| Google Cloud Free Tier | 1 × e2-micro instanca (podržani US regioni: Oregon, Iowa, South Carolina) | Naplaćuje se ~$3.65/mes ($0.005/h za statički/efemerni IPv4 na standardnoj VM, samo 1h mesečno uključen) | 30 GB diska; 1 GB mesečno izlaznog saobraćaja ka podržanim odredištima | Nije stvarno 0 € za IPv4 VPN. Compute je besplatan, ali normalan IPv4 VPN ima oko $3.65 mesečnog IP troška, uz limit od 1 GB transfera |
| AWS Free Tier (novi nalozi) | $100 inicijalnih kredita + do $100 dodatno; Free account plan do 6 meseci | Standardna cena $0.005/h (~$3.65/mes); tokom Free plana trošak se pokriva kreditima | 100 GB mesečno | Privremeno besplatno dok traju dodeljeni krediti |
Važne napomene o besplatnim cloud resursima
- Oracle Cloud Always Free: Prema zvaničnim pravilima, instance koje Oracle kategorizuje kao neaktivne (npr. prosečno zauzeće procesora ispod 20%, nizak mrežni promet i minimalan rad diska tokom dužeg perioda) mogu biti označene za gašenje i brisanje. Korisnici moraju voditi računa o ovim kriterijumima i imati redovan bekap konfiguracije. Takođe, u popularnim evropskim regionima kreiranje Ampere A1 instanci često nailazi na grešku nedostatka fizičkih kapaciteta u data centru.
- Google Cloud Platform (GCP): Instanca e2-micro nudi besplatan compute u određenim američkim regionima, ali external IPv4 na standardnoj virtuelnoj mašini više nije besplatan i naplaćuje se $0.005 po satu (oko $3.65 mesečno), pri čemu Free Tier pokriva samo 1 sat mesečno. Dodatno, mesečni limit od samo 1 GB odlaznog saobraćaja iz Severne Amerike čini GCP nepraktičnim za full-tunnel VPN bez prelaska u zonu dodatnih troškova. Eksterni IPv6 je besplatan, ali standardni IPv4 VPN na Google Cloud-u nije potpuno besplatan.
- Amazon Web Services (AWS): AWS za nove naloge primenjuje model registracije sa kreditima ($100 inicijalno uz mogućnost dodatnih $100 i Free account plan u trajanju do 6 meseci). Iako se javni IPv4 standardno tarifira po ceni od $0.005 po satu (~$3.65 mesečno), u toku trajanja promotivnog perioda sa kreditima taj trošak se odbija od preostalog stanja na nalogu, što sprečava direktnu naplatu dok krediti ne isteknu.
Pregled i analiza komercijalnih VPS provajdera
Kada besplatne opcije nisu prihvatljive zbog stabilnosti ili lokacije, samostalni VPS pruža punu kontrolu i predvidive mrežne performanse.
[!IMPORTANT] Cene u tabeli prikazuju stvarne mesečne troškove za kompletan server (procesor, radna memorija, disk i javna IPv4 adresa), provereno 22.09.2026. Cene su navedene bez PDV-a, osim gde je drugačije naznačeno.
| Provajder | Paket | CPU / RAM / Disk | Javna IPv4 adresa | Saobraćaj i mrežni port | Realna cena mesečno | Glavna prednost |
|---|---|---|---|---|---|---|
| OVHcloud | VPS-1 | 2 vCore / 4 GB / 40 GB NVMe | Uključena (1× IPv4 + /128 IPv6) | Neograničen (500 Mbps port) | 3.81 € / mes | Najbolji odnos resursa i cene; neograničen protok |
| Hetzner Cloud | CX23 (x86) | 2 vCPU / 4 GB / 40 GB NVMe | Doplata +0.50 € / mesec | 20 TB na 1 Gbps portu | 5.99 € / mes (5.49 € + 0.50 €) | Visoka pouzdanost mreže, data centri u Nemačkoj i Finskoj |
| Scaleway | Stardust | 1 vCPU / 1 GB / 10 GB Local SSD | Doplata ~2.92 € / mesec (0.004 €/h) | 100 Mbps port, neograničeno | ~4.31 € / mes (zbirno) | Fleksibilno, ali zahteva sabiranje compute, IP i storage stavki |
| DigitalOcean | Droplet Basic | 1 vCPU / 512 MB / 10 GB SSD | Uključena | 500 GB na 1 Gbps portu | $4.00 / mes | Jednostavna platforma, pregledan panel i API |
| Akamai (Linode) | Nanode 1GB | 1 vCPU / 1 GB / 25 GB SSD | Uključena | 1 TB na 1 Gbps portu | $5.00 / mes | Stabilne cene i globalno prisustvo |
| Vultr | Cloud Compute | 1 vCPU / 512 MB / 10 GB SSD | Uključena IPv4 (ili $2.50 za IPv6-only) | 500 GB transfera | $3.50 / mes | Globalna mreža; postoji i $2.50/mes plan za čist IPv6 |
Analiza strukture troškova (Primer: Scaleway Stardust)
Pojedini provajderi ističu cenu samog procesora od svega ~0.44 € mesečno (STARDUST1-S iznosi 0.0006 €/h). Međutim, kada dodate Flexible IPv4 adresu (0.004 €/h odnosno ~2.92 € mesečno) i minimalni lokalni SSD disk od 10 GB (~0.0013 €/h odnosno ~0.95 € mesečno), realna računica na bazi prosečnih 730 sati mesečno iznosi:
0.0006 €/h (compute) + 0.004 €/h (IPv4) + 0.0013 €/h (storage) = 0.0059 €/h
0.0059 €/h × 730 h ≈ 4.31 € mesečno (bez PDV-a)
Uvek analizirajte zbirnu cenu svih komponenti servera umesto izdvojene cene procesora.
Kućni VPN server: Besplatna varijanta i izazov CGNAT-a
Podizanje VPN servera na kućnom hardveru (mini PC, Raspberry Pi, stariji računar ili ruter sa OpenWrt sistemom) omogućava privatno umrežavanje bez dodatnih troškova hostinga.
Prednosti kućnog VPN-a:
- Nema mesečnih troškova zakupa (0 €).
- Rezidencijalna IP adresa vašeg provajdera.
- Direktan pristup resursima na lokalnoj mreži (LAN, NAS, kućna automatizacija).
Ograničenja kućnog VPN-a:
- Asimetrična veza i brzina slanja (Upload): Ukoliko kućni internet paket ima brzine 500/50 Mbps, brzina preuzimanja podataka kroz VPN kada se nalazite van kuće fizički je ograničena kućnim upload-om od 50 Mbps, umanjeno za mrežni protokolarni overhead. Simetrične optičke veze obezbeđuju znatno bolje performanse.
- Lokalna stabilnost: Prekid napajanja ili pad kućne veze prekida rad VPN-a.
Detekcija i rešavanje problema sa CGNAT-om
Mnogi operateri, posebno mobilni i deo fiksnih pružalaca usluga, koriste CGNAT (Carrier-Grade NAT) zbog deficita javnih IPv4 adresa. Vaš ruter u tom slučaju ne dobija pravu javnu adresu, već privatnu adresu iz adresnog prostora operatera.
Kako proveriti da li ste iza CGNAT-a:
- Prijavite se na ruter koji je direktno povezan na vezu provajdera i očitajte njegovu WAN IP adresu.
- Otvorite javni servis za proveru IP adrese u pretraživaču.
- Ako je WAN adresa rutera u opsegu
100.64.0.0/10(prema RFC 6598, raspon od100.64.0.1do100.127.255.254), to je nedvosmislen dokaz da se nalazite iza CGNAT-a. Sama razlika između WAN i javne IP adrese takođe ukazuje na postojanje NAT-a uzvodno, ali imajte u vidu da razlika može nastati i usled internog „double NAT-a“ u kući (ako je vaš Wi-Fi ruter povezan iza posebnog modema operatera).
STUN / endpoint discovery
↓
pokušaj direktne UDP veze
↓
ako ne uspe:
Peer Relay (GA 2026)
↓
ako nije dostupan:
DERP relay
Kako Tailscale i NetBird ovo rešavaju u praksi:
- STUN protokol (Session Traversal Utilities for NAT): Služi isključivo za ispitivanje spoljne IP adrese, dodeljenog porta i ponašanja NAT-a. STUN ne prenosi korisnički VPN saobraćaj.
- Direktna veza (P2P): Klijent i server na osnovu STUN podataka pokušavaju direktnu UDP komunikaciju (hole punching). Ako uspe, saobraćaj teče direktno, sa minimalnim kašnjenjem i punom brzinom.
- Peer Relay (Novo u 2026): Ako direktan UDP nije moguć (npr. oba kraja iza restriktivnog simetričnog NAT-a), saobraćaj se može preusmeriti preko drugog čvora unutar vaše privatne mreže koji ima bolju povezanost, izbegavajući centralne releje.
- DERP relay (Designated Encrypted Relay for Packets): Poslednja linija odbrane. Saobraćaj prolazi kroz enkriptovane relejne servere. Relej vidi samo zaglavlja za usmeravanje, dok je sadržaj šifrovan klijentskim WireGuard ključevima.
Iza CGNAT-a uobičajeno prosleđivanje portova na ruteru (Port Forwarding) ne može prihvatiti dolazne zahteve sa interneta.
Rešenja za CGNAT:
- Zatražite statičku ili javnu dinamičku IP adresu od operatera (često uz manju mesečnu nadoknadu).
- Korišćenje IPv6 protokola: Ukoliko provajder nudi funkcionalan IPv6 prefiks, server ima javnu IPv6 adresu i dostupan je direktno sa svih mreža koje takođe podržavaju IPv6.
- Korišćenje WireGuard mesh sistema (Tailscale, NetBird): STUN protokol služi da čvorovi ispitaju svoj mrežni položaj, otkriju javne portove i pokušaju direktno spajanje. Ako direktna veza ne uspe, Tailscale koristi Peer Relay ili DERP releje za pouzdan prenos već šifrovanog WireGuard saobraćaja bez otvaranja portova.
Dinamički DNS (DDNS) i Port Forwarding za kućni WireGuard
Ukoliko imate kućni internet sa javnom dinamičkom IP adresom (niste iza CGNAT-a), vaša javna IP adresa se povremeno menja (prilikom restarta modema ili periodične obnove sesije operatera). Ako u klijentsku konfiguraciju upišete trenutnu IP adresu, čim se adresa promeni izgubićete pristup VPN-u.
Rešenje je postavljanje Dinamičkog DNS-a (DDNS):
[Kućni Server / Ruter] ──(Periodično javlja trenutnu IP)──→ [DDNS Servis (DuckDNS, Cloudflare, No-IP)]
│
[Mobilni Klijent] ──(Spaja se na vpn.vasdomen.rs:51820)────────────────────┘
Praktični koraci za realizaciju:
- Registracija DDNS hosta: Registrujte besplatan domen ili poddomen (npr. preko DuckDNS, FreeDNS ili Cloudflare API skripte, npr.
vpn.vasdomen.duckdns.org). - Klijent za ažuriranje: Na kućnom serveru ili ruteru konfigurišite servis koji svakih 5-10 minuta proverava javnu IP adresu i ažurira DDNS zapis:
bash
# Primer cron zadatka za DuckDNS */5 * * * * curl -s "https://www.duckdns.org/update?domains=VAŠ_DOMEN&token=VAŠ_TOKEN&ip=" >/dev/null 2>&1 - UDP Port Forwarding na ruteru:
Ako se WireGuard server nalazi na posebnom uređaju u LAN-u (npr. Raspberry Pi na adresi
192.168.1.50), a ne na samom ruteru, morate ući u administrativni panel kućnog rutera (port forwarding sekcija) i preusmeriti:- Protokol: UDP
- Spoljni port (External Port): 51820
- Unutrašnji IP (Internal IP): 192.168.1.50
- Unutrašnji port (Internal Port): 51820
- Klijentski profil: U polju
Endpointklijentske konfiguracije upisujete DDNS ime umesto IP adrese:Kada operater promeni vašu kućnu IP adresu, DDNS skripta ažurira DNS zapis u roku od nekoliko minuta, a klijenti automatski obnavljaju vezu sa novom adresom.ini[Peer] Endpoint = vpn.vasdomen.duckdns.org:51820
Protokoli i rešenja: Detaljan tehnički pregled
WireGuard
Industrijski standard modernog VPN-a, integrisan u jezgro Linuxa od verzije 5.6. Koristi proverene kriptografske primitive: Curve25519 za razmenu ključeva, ChaCha20 za simetrično šifrovanje i Poly1305 za autentifikaciju poruka. Baza koda od oko 4.000 linija pruža visoke performanse i minimalno opterećenje baterije na mobilnim uređajima uz stabilan roaming između Wi-Fi i mobilnih mreža.
- Ograničenja: Fiksna zaglavlja olakšavaju prepoznavanje DPI sistemima; ne sadrži ugrađeni mehanizam dinamičkog dodeljivanja adresa niti korisnički interfejs.
Tailscale
Mesh VPN platforma zasnovana na WireGuard protokolu. Koristi centralni koordinacioni server za razmenu javnih ključeva, dok se podaci prenose direktno među mašinama kad god je to moguće.
- Personal plan: Besplatan za do 6 korisnika, uz neograničen broj uređaja po korisniku, MagicDNS, Exit Nodes i oglašavanje podmreža.
- Arhitektura povezivanja: STUN služi isključivo za otkrivanje javne IP adrese i portova, a sam prenos podataka bira optimalnu putanju: direktan UDP → Peer Relay (GA od februara 2026) → DERP relej.
Headscale
Samostalno hostovana implementacija koordinacionog servera otvorenog koda, kompatibilna sa zvaničnim Tailscale klijentima. Pruža apsolutnu privatnost kontrolne ravni.
- Važna napomena o DERP relejima: Headscale ima ugrađeni (embedded) DERP server, ali je on podrazumevano isključen (disabled by default), a standardna konfiguracija preuzima zvaničnu Tailscale DERP mapu. Za potpuno nezavisnu infrastrukturu bez ikakvog kontakta sa Tailscale serverima, morate omogućiti ugrađeni DERP i ukloniti podrazumevane eksterne DERP URL-ove.
NetBird
Sistem otvorenog koda za WireGuard mesh umrežavanje sa peer-to-peer prenosom, centralnim web panelom i fleksibilnim pristupnim polisama.
- Besplatni cloud plan: Do 5 korisnika i 100 mašina.
- Self-hosted izdanje: Self-hosted verzija je besplatna i nema ograničenja u broju korisnika ili uređaja. Ipak, imajte u vidu da nema stoprocentni paritet funkcija sa Cloud Enterprise nivoom: napredna automatizacija poput SCIM sinhronizacije sa IdP provajderima, event streaming i EDR/XDR bezbednosne integracije rezervisane su za komercijalnu verziju.
ZeroTier
Sistem koji simulira virtuelni eternet svič (Layer 2 mrežni preklopnik). Omogućava prenos protokola koji ne funkcionišu isključivo preko čistog IP usmeravanja (npr. mDNS, industrijski i specifični LAN protokoli).
- Personal plan: Podržava do 10 uređaja besplatno. Konfiguracija izlaznog internet čvora (Exit Node) zahteva više koraka u poređenju sa rešenjima zasnovanim na WireGuard-u.
AmneziaWG (Verzija 3.1)
Izvedena verzija WireGuard protokola kreirana za prevazilaženje DPI blokada. Uvodi parametre za maskiranje paketa (nasumična zaglavlja, ubacivanje paketa nasumične dužine i promenljive raspone veličina paketa) kako bi se sprečila identifikacija WireGuard protokola na nivou mrežnog operatera.
OpenVPN (Verzija 2.7)
Dugogodišnje rešenje sa podrškom za Data Channel Offload (DCO) modul u Linux jezgru, čime su performanse značajno unapređene.
- Mrežni transport: Podržava TCP i UDP prenos. Može se postaviti na TCP port 443 i podržava mehanizam deljenja porta (
port-share) sa web serverom, što omogućava prolaz kroz stroge mrežne zaštitne zidove gde je UDP blokiran. Ipak, sam rad preko porta 443 ne čini OpenVPN saobraćaj identičnim stvarnom HTTPS saobraćaju i napredni DPI sistemi ga mogu razlikovati. UDP ostaje preporučeni izbor za standardne mrežne uslove zbog manjeg kašnjenja.
strongSwan (IKEv2 / IPsec, Verzija 6.1.0)
IPsec paket za operativne sisteme slične Unixu. Njegova glavna prednost je podrška integrisana direktno u operativne sisteme (Windows, macOS, iOS, Android), bez obavezne instalacije dodatnih klijenata.
- Status verzije 6.1.0 (objavljene 07.09.2026): IKEv1 protokol je podrazumevano isključen (disabled by default), čime se administrativno prekida upotreba zastarelih kriptografskih profila. Podrška za post-kvantne algoritme razmene ključeva (ML-KEM) i hibridne mehanizme uvedena je u grani strongSwan 6.0.0 i nastavlja se u aktuelnim izdanjima.
Firezone i Defguard
- Firezone: ZTNA platforma zasnovana na WireGuard-u koja dodeljuje pristup definisanim resursima na osnovu identiteta korisnika, umesto otvaranja cele podmreže.
- Defguard: Bezbednosno rešenje za timove sa integrisanim identitetskim sistemom, podrškom za višefaktorsku autentifikaciju (MFA) i kontrolisanim životnim vekom WireGuard sesija.
Outline VPN
Rešenje razvijeno od strane Jigsaw-a. Outline je šifrovani proksi baziran na Shadowsocks protokolu, kreiran prvenstveno za zaobilaženje internet cenzure. Koristi pristupne ključeve i jednostavan je za pokretanje u Docker okruženju, ali ne predstavlja puni Layer-3 VPN adapter na nivou celog operativnog sistema.
PiVPN i Algo VPN
- PiVPN: Projekat je prošao kroz fazu najavljenog prestanka razvoja i nalazi se u režimu osnovnog održavanja od strane zajednice. Za nove produkcijske instalacije preporučuje se čist WireGuard ili Docker kontejneri.
- Algo VPN (Trail of Bits): Automatizovani skup Ansible skripti za brzo podizanje bezbednih WireGuard/IPsec servera na cloud provajderima, namenjen tehnički naprednim korisnicima.
Još relevantnih opcija koje treba znati
Cloudflare Mesh (Trenutno u Beta fazi)
Cloudflare Mesh predstavlja privatni mrežni preklop (Private L3/L4 Networking) unutar Cloudflare One Zero Trust ekosistema, dostupan i na besplatnom (Free) planu.
- Protokol: Koristi MASQUE protokol (Multiplexed Application Substrate over QUIC Encryption) za tunelovanje saobraćaja preko HTTP/3 i QUIC enkripcije.
- Ključna arhitektonska razlika: Za razliku od Tailscale-a gde uređaji komuniciraju direktno (P2P), u Cloudflare Mesh-u sav mrežni saobraćaj uvek prolazi kroz Cloudflare mrežnu infrastrukturu, gde se vrši provera bezbednosnih polisa. Podržava post-kvantnu enkripciju u tranzitu.
Netmaker
Netmaker je napredna WireGuard mesh platforma kreirana za povezivanje velikih infrastruktura: više cloud provajdera, lokalnih data centara i distribuiranih servera. Pruža centralizovani kontrolni panel, dinamičko upravljanje rutama, podršku za gateway čvorove, ACL pravila i integraciju sa OAuth provajderima. Za povezivanje telefona i jednog laptopa Netmaker predstavlja nepotrebnu kompleksnost, ali je izuzetno moćan alat za DevOps timove i homelab entuzijaste koji upravljaju desetinama servera.
SoftEther VPN (Verzija 4.44 Build 9807 RTM)
SoftEther VPN je moćan multi-protokolarni VPN server razvijen na Univerzitetu Cukuba u Japanu (aktuelno stabilno izdanje je 4.44 Build 9807 RTM sa ugrađenom TunnelCrack zaštitom od curenja prometa). Njegova najveća snaga je fleksibilnost: jedan jedini server može opsluživati klijente preko OpenVPN, IPsec/L2TP, MS-SSTP i sopstvenog SoftEther SSL-VPN protokola. SoftEther poseduje sopstveni TLS/SSL-VPN pristup koji je specifično dizajniran za prolazak kroz restriktivne HTTP proksije i zaštitne zidove. Ipak, zbog obimnog koda i kompleksnije konfiguracije, za nove lične postavke nativni WireGuard ostaje znatno lakši i brži za održavanje.
VPN direktno na ruteru: OpenWrt, MikroTik, OPNsense i pfSense
U mnogim situacijama najefikasnije je postaviti WireGuard server direktno na kućnom ili kancelarijskom mrežnom prolazu (ruteru ili namenskom firewall-u).
[Internet] ──→ [Ruter / Zaštitni Zid sa WireGuard-om] ──→ [Lokalni LAN uređaji]
Prednosti rešenja na ruteru:
- Nema potrebe za dodatnim računarom: Nije vam potreban Raspberry Pi ili mini PC koji mora stalno raditi.
- Optimalno rutiranje: Ruter već kontroliše NAT i routing tabele, pa paketi iz VPN-a direktno prelaze u lokalni LAN bez dodatnih preusmeravanja.
Podržane platforme:
- OpenWrt: Prema aktuelnom zvaničnom vodiču za OpenWrt server, osnovni paketi koji se instaliraju jesu
luci-proto-wireguard(koji povlači neophodne mrežne protokole i LuCI web interfejs) iwireguard-tools, dok jeqrencodeopcioni paket za generisanje QR kodova u terminalu. - MikroTik (RouterOS v7+): WireGuard je fabrički integrisan u RouterOS od verzije 7. Konfiguracija je izuzetno brza kroz WinBox ili terminal (kreiranje WireGuard interfejsa, dodavanje peer-a i podešavanje firewall filter pravila).
- OPNsense i pfSense: Poseduju zvanične WireGuard dodatke (plugins) sa punom integracijom u sistem polisa, aliasa i zaštitnog zida.
[!WARNING] Jeftini kućni plastični ruteri sa slabim procesorima (single-core ili dvojezgrarni MIPS/ARM procesori niskog takta) mogu postati usko grlo pri enkripciji saobraćaja na brzinama preko 100-200 Mbps. Takođe, administrativni web interfejs rutera nikada ne sme biti javno izložen na WAN strani.
Post-kvantno stanje kriptografije u VPN sistemima (2026)
Pojavom praktičnih implementacija post-kvantnih algoritama često se postavlja pitanje: „Da li je običan WireGuard bezbedan od budućih kvantnih računara koji primenjuju Harvest Now, Decrypt Later strategiju?“
Tehničke činjenice:
- Standardni WireGuard: Koristi Curve25519 za asimetričnu razmenu ključeva. Asimetrična kriptografija na bazi eliptičkih krivih teoretski je ranjiva na Šorov algoritam na dovoljno moćnom kvantnom računaru. Samim tim, običan WireGuard nije sam po sebi post-kvantni protokol.
- WireGuard PresharedKey (Dodatni simetrični štit): WireGuard poseduje opciju unosa simetričnog Pre-Shared ključa (
PresharedKey = ...). Simetrična kriptografija (sa ključem od 256 bita) po Groverovom algoritmu zadržava nivo sigurnosti od 128 bita, što pruža efikasnu post-kvantnu zaštitu u tranzitu. Preporučuje se kreiranje PSK-a za svaki peer. - strongSwan 6.x (ML-KEM / Kyber): Uvedena je puna podrška za IKEv2 hibridnu razmenu ključeva koja kombinuje klasične Diffie-Hellman / ECDH algoritme sa post-kvantnim standardom ML-KEM (prethodno poznatim kao Kyber).
- Cloudflare Mesh PQ: Ugrađena post-kvantna kriptografija u okviru mrežnog prenosa.
Mrežno rutiranje, DNS i bezbednost paketa
Full Tunnel naspram Split Tunnel režima
Režim rada se definiše parametrom AllowedIPs unutar konfiguracije klijenta:
# FULL TUNNEL: Celokupan mrežni saobraćaj prolazi kroz VPN server
AllowedIPs = 0.0.0.0/0, ::/0
- Primena: Nezaštićene Wi-Fi mreže u hotelima i kafićima, ili kada želite da vašu javnu adresu u potpunosti zameni adresa VPN servera.
# SPLIT TUNNEL: Kroz VPN prolazi samo saobraćaj ka privatnim podmrežama
AllowedIPs = 10.66.66.0/24, 192.168.1.0/24
- Primena: Pristup kućnim ili poslovnim serverima, dok se internet saobraćaj odvija preko lokalnog provajdera bez opterećivanja VPN veze.
DNS arhitektura i prevencija curenja (DNS Leaks)
Čest propust je situacija u kojoj se saobraćaj šifruje, ali operativni sistem nastavlja da šalje DNS zahteve lokalnom ruteru, čime treća lica i dalje vide spisak posećenih domena.
Preporučeni modeli implementacije:
- Model A (Zaštita privatnosti i blokiranje neželjenog sadržaja):
Klijent→WireGuard tunel→AdGuard Home / Pi-hole (na serveru)→Šifrovani DNS (DoT / DoH ka Quad9 ili Cloudflare) - Model B (Autonomni rekurzivni model):
Klijent→WireGuard tunel→AdGuard Home / Pi-hole→Unbound (rekurzivno ispitivanje Root i TLD servera)
[!CAUTION] Ne otvarajte port 53 (TCP/UDP) ka javnom internetu! DNS servis koji sluša na javnoj IP adresi bez restrikcija postaje otvoreni resolver (Open Resolver) i ubrzo biva zloupotrebljen za izvođenje masivnih DNS Amplification DDoS napada. DNS servis mora slušati isključivo na interfejsu VPN-a (npr.
10.66.66.1) ili unutar zaštićene privatne podmreže.
IPv6 strategija i Linux zamka sa Router Advertisements (accept_ra)
Ukoliko lokalna mreža klijenta dodeljuje javnu IPv6 adresu, a VPN je konfigurisan isključivo za IPv4, operativni sistem će za servise sa IPv6 podrškom koristiti lokalnu IPv6 vezu mimo VPN-a.
Za potpunu zaštitu primenjuje se Dual-Stack tunel. Međutim, pri uključivanju IPv6 prosleđivanja na Linux serveru postoji važna mrežna zamka:
[!WARNING] Kada u jezgru postavite
net.ipv6.conf.all.forwarding = 1, Linux po podrazumevanom ponašanju (prema RFC standardima za rutere) prestaje da prihvata Router Advertisements (RA) na mrežnim interfejsima. Ukoliko vaš VPS provajder dodeljuje IPv6 podrazumevanu rutu (default gateway) putem SLAAC/RA mehanizma, server nakon primene ove komande može izgubiti izlazni IPv6 internet!Rešenje je eksplicitno forsiranje prihvatanja RA poruka na WAN interfejsu postavljanjem vrednosti
accept_ra = 2:textnet.ipv6.conf.all.forwarding = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.WAN_INTERFACE.accept_ra = 2Uvek nakon uključivanja proverite stanje komandom
ip -6 routekako biste bili sigurni dadefault via ...ruta nije nestala.
Podešavanje MTU vrednosti
Vrednost od 1420 bajtova je veoma česta i stabilna polazna tačka za WireGuard preko standardnih internet veza od 1500 bajtova. Međutim, to nije fiksni univerzalni standard. Kada u konfiguraciji parametar MTU nije eksplicitno zadat, alat wg-quick po dizajnu pokušava da automatski odredi optimalan MTU očitavanjem MTU vrednosti mrežnog prolaza na osnovu podrazumevane rute ka definisanom Endpoint-u (oduzimajući prostor potreban za IPv4/IPv6 i UDP/WireGuard zaglavlja).
Ukoliko primetite da se male stranice otvaraju, a servisi sa dugačkim TLS sertifikatima ili prenos većih fajlova zapinju (npr. na kućnim PPPoE vezama sa MTU 1492 ili na pojedinim mobilnim mrežama), eksplicitno zadajte niži MTU u klijentskom profilu:
[Interface]
MTU = 1360
Mehanizmi prekida saobraćaja u slučaju nužde (Kill-Switch)
Kill-switch sprečava slanje nešifrovanih paketa na mrežu u slučaju iznenadnog prekida VPN tunela.
Windows (WireGuard klijent)
Zvanična aplikacija za Windows koristi Windows Filtering Platform (WFP). Kada je uključena opcija "Block untunneled traffic (kill-switch)" uz AllowedIPs = 0.0.0.0/0, ::/0, klijent instalira rute prioriteta /0 koje preusmeravaju sav saobraćaj kroz tunel, dok WFP polise blokiraju svaki izlazni saobraćaj van interfejsa tunela, izuzev samih UDP paketa upućenih ka definisanom serveru.
Android
Android ima ugrađenu sistemsku podršku na nivou platforme:
- Otvorite Settings → Network & internet → VPN.
- Dodirnite ikonu zupčanika pored WireGuard ili Tailscale profila.
- Uključite opcije Always-on VPN i Block connections without VPN. Ovim sistem na nivou jezgra zaustavlja odlazni internet saobraćaj ukoliko tunel nije operativan.
Apple (iOS i macOS)
- Standardni personalni VPN profil na iOS uređaju nema univerzalni sistemski kill-switch. Određeni sistemski procesi (npr. Apple Push notifikacije) po dizajnu operativnog sistema mogu komunicirati van VPN tunela.
- Potpuni Always-On VPN na iOS sistemu moguć je samo na uređajima pod MDM nadzorom u režimu "Supervised".
- Na macOS sistemu pouzdan kill-switch može se podesiti preko sistemskog zaštitnog zida (
pf), gde se sav saobraćaj vanutuninterfejsa odbacuje.
Linux
Najčistije rešenje je konfiguracija nftables zaštitnog zida koja odbacuje sav odlazni saobraćaj na fizičkom mrežnom interfejsu ukoliko odredište nije javna adresa i port VPN servera.
Praktični Tutorijal 1: Tailscale Exit Node kod kuće (0 €)
Ovaj vodič pretvara bilo koji kućni Linux računar (stariji laptop, Raspberry Pi sa Raspberry Pi OS-om ili Ubuntu mašinu) u izlaznu tačku za internet saobraćaj vaših uređaja, bez otvaranja portova na ruteru i bez obzira na CGNAT.
Korak 1: Uključivanje mrežnog prosleđivanja na Linux serveru
Prijavite se na server i aktivirajte prosleđivanje paketa u jezgru:
sudo tee /etc/sysctl.d/99-tailscale.conf <<EOF
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
EOF
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
Korak 2: Instalacija Tailscale paketa
Instalirajte zvanični Tailscale repozitorijum i klijent:
curl -fsSL https://tailscale.com/install.sh | sh
Korak 3: Pokretanje servisa i oglašavanje ruta
Pokrenite Tailscale i oglasite mašinu kao Exit Node i ruter za vašu lokalnu podmrežu (npr. 192.168.1.0/24):
sudo tailscale up --advertise-exit-node --advertise-routes=192.168.1.0/24
Otvorite link koji komanda ispiše i prijavite se na svoj nalog.
Korak 4: Odobrenje u administratorskom panelu
- Prijavite se na login.tailscale.com.
- U sekciji Machines pronađite vaš server.
- Kliknite na meni sa tri tačkice (
...) → Edit route settings. - Potvrdite Use as exit node i označite oglašenu podmrežu (
192.168.1.0/24). - Podešavanje isteka ključa: U istom meniju možete izabrati Disable key expiry. Isključivanje key expiry sprečava automatsko isticanje ključa registrovanog uređaja (node key). To je praktično za unattended servere koji rade mesecima bez prekida, ali povećava rizik ukoliko sam server bude kompromitovan jer mašina neće automatski zahtevati ponovnu autentifikaciju nakon standardnog perioda isteka.
Korak 5: Korišćenje na mobilnom telefonu ili laptopu
- Instalirajte Tailscale aplikaciju na telefon ili laptop i prijavite se istim nalogom.
- U aplikaciji izaberite opciju Exit Node i označite vaš kućni server.
- Proverite javnu IP adresu u pretraživaču: videćete vašu kućnu IP adresu.
Praktični Tutorijal 2: VPS + wg-easy (Verzija 15.4.0)
Ovaj tutorijal koristi aktuelno stabilno izdanje wg-easy v15.4.0 na Ubuntu 24.04 LTS sistemu.
[!NOTE] Ovaj korak je napisan za Ubuntu 24.04 LTS. Za korisnike Debian 13 (Trixie) ili Debian 12 (Bookworm): u komandama za dodavanje repozitorijuma zamenite
ubuntusadebian(https://download.docker.com/linux/debian).
Korak 1: Instalacija zvaničnog Docker Engine-a (Ubuntu 24.04 LTS)
Povežite se na VPS:
sudo apt update && sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg lsb-release
# Dodavanje zvaničnog Docker GPG ključa i repozitorijuma
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Korak 2: Konfiguracija compose.yaml datoteke
U aktuelnoj v15 arhitekturi zvanični compose.yaml uvodi izolovanu Docker mrežu, vezivanje modula jezgra i definisane mrežne parametre.
Kreirajte radni direktorijum i datoteku:
mkdir -p ~/wg-easy && cd ~/wg-easy
nano compose.yaml
Unesite sledeću proverenu v15.4.0 konfiguraciju sa vezivanjem panela isključivo na 127.0.0.1:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:15.4.0
container_name: wg-easy
environment:
# Dozvoljava rad web panela preko HTTP protokola iza lokalnog SSH tunela
- INSECURE=true
- PORT=51821
volumes:
- ./data:/etc/wireguard
- /lib/modules:/lib/modules:ro
ports:
# UDP port za klijentski saobraćaj
- "51820:51820/udp"
# Bezbednost: Web UI vezujemo isključivo za 127.0.0.1 (localhost)
- "127.0.0.1:51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv6.conf.all.forwarding=1
- net.ipv6.conf.all.disable_ipv6=0
networks:
wg-easy-network:
ipv4_address: 10.8.0.2
ipv6_address: fdcc:ad94:b242::2
networks:
wg-easy-network:
enable_ipv6: true
driver: bridge
ipam:
driver: default
config:
- subnet: 10.8.0.0/24
- subnet: fdcc:ad94:b242::/64
Korak 3: Pokretanje kontejnera
sudo docker compose up -d
Korak 4: Bezbedan pristup preko SSH tunela
Pošto port 51821 nije otvoren za javni internet, na svom lokalnom računaru otvorite terminal i uspostavite SSH tunel:
ssh -N -L 51821:127.0.0.1:51821 vpnadmin@VAS_JAVNI_VPS_IP
Otvorite pretraživač na vašem računaru i posetite:
http://127.0.0.1:51821
Aplikacija će otvoriti Setup Wizard:
- Unesite administrativnu lozinku za panel.
- U polje Host unesite javnu IP adresu ili domen vašeg VPS servera.
- Definišite željeni DNS resolver za klijente (npr. Quad9:
9.9.9.9). - Nakon završetka, prijavite se, kreirajte profil klijenta i skenirajte QR kod kamerom unutar WireGuard mobilne aplikacije.
Praktični Tutorijal 3: Nativni Dual-Stack WireGuard sa nftables zaštitom
Za produkcijska okruženja gde želite čist sistem bez Dockera, uz punu podršku za IPv4 i IPv6 (Dual-Stack).
[!IMPORTANT] Pretpostavka za IPv6: Ovaj primer pretpostavlja da vaš VPS ima dodeljenu javnu IPv6 adresu i funkcionalnu podrazumevanu IPv6 rutu ka internetu (proverite komandama
ip -6 addriip -6 route). Privatni ULA opseg (fd42:42:42::/64) i NAT66 služe za izolaciju klijenata, ali zahtevaju radni IPv6 na hostu. Ukoliko vaš VPS nema IPv6, u konfiguraciji koristite samo IPv4 parametre i na klijentima postaviteAllowedIPs = 0.0.0.0/0uz gašenje IPv6 adaptera radi sprečavanja curenja saobraćaja.
Parametri u ovom tutorijalu:
- IPv4 VPN podmreža:
10.66.66.0/24(Server:10.66.66.1, Klijent:10.66.66.2) - IPv6 VPN podmreža (ULA opseg):
fd42:42:42::/64(Server:fd42:42:42::1, Klijent:fd42:42:42::2) - UDP port:
51820 - Fizički WAN interfejs: zamenite
WAN_INTERFACEnazivom vašeg adaptera (proverite komandomip -br link, npr.eth0iliens3).
Korak 1: Generisanje ključeva (Preporučeni bezbednosni model)
Pravilna bezbednosna praksa nalaže da se privatni ključ klijenta generiše na samom klijentskom uređaju, a ne na serveru. Server nikada ne treba da vidi niti čuva privatni ključ klijenta.
A) Na serveru:
sudo apt update && sudo apt install -y wireguard wireguard-tools
umask 077
mkdir -p /etc/wireguard/keys
cd /etc/wireguard/keys
# Generisanje ključeva servera
wg genkey | tee server_private.key | wg pubkey > server_public.key
# Opcioni Pre-Shared ključ za dodatnu zaštitu
wg genpsk > preshared.key
B) Na klijentu (laptop, telefon):
- Na mobilnim telefonima: Zvanična WireGuard aplikacija automatski generiše sopstveni privatni i javni ključ kada kliknete na "Create from scratch".
- Na Linux/macOS klijentu:
umask 077
wg genkey | tee client_private.key | wg pubkey > client_public.key
Samo javni ključ klijenta (client_public.key) kopirate na server.
Korak 2: Konfiguracija servera (/etc/wireguard/wg0.conf)
[Interface]
Address = 10.66.66.1/24, fd42:42:42::1/64
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY_OVDE
[Peer]
# Javni ključ dobijen od klijenta
PublicKey = CLIENT_PUBLIC_KEY_OVDE
PresharedKey = PRESHARED_KEY_OVDE
AllowedIPs = 10.66.66.2/32, fd42:42:42::2/128
Korak 3: Uključivanje IPv4 i IPv6 prosleđivanja (uz accept_ra zaštitu)
sudo tee /etc/sysctl.d/99-wireguard-dualstack.conf <<EOF
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.forwarding = 1
# Sprečava gubitak IPv6 default rute kada je forwarding uključen
net.ipv6.conf.all.accept_ra = 2
net.ipv6.conf.default.accept_ra = 2
EOF
sudo sysctl -p /etc/sysctl.d/99-wireguard-dualstack.conf
Korak 4: Podešavanje nftables zaštitnog zida
[!WARNING] Upozorenje pre primene pravila: Sledeći primer pretpostavlja namenski WireGuard VPS na kojem
nftablespredstavlja jedini centralni firewall. Komandaflush rulesetbriše sva postojeća pravila! Ne primenjujte je naslepo na Docker hostu, produkcionom serveru sa postojećim pravilima ili sistemu kojem pristupate samo preko jedne SSH sesije. Pre primene proverite sintaksu (nft -c -f /etc/nftables.conf), držite otvorenu rezervnu SSH sesiju i obezbedite pristup web konzoli hosting provajdera.
Uredite datoteku /etc/nftables.conf:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
# Odbaci nevalidne pakete odmah
ct state invalid drop
# Dozvoli lokalnu petlju
iif "lo" accept
# Uspostavljene i povezane veze
ct state established,related accept
# ICMP i ICMPv6 dijagnostika (robusno protiv extension headera)
ip protocol icmp accept
meta l4proto ipv6-icmp accept
# SSH pristup
tcp dport 22 accept
# WireGuard dolazni port
udp dport 51820 accept
# NAPOMENA: Klijenti koriste spoljni javni DNS (npr. Quad9).
# Pravila za port 53 dodajte SAMO ako na ovom VPS-u lokalno instalirate AdGuard Home ili Pi-hole:
# iifname "wg0" udp dport 53 accept
# iifname "wg0" tcp dport 53 accept
}
chain forward {
type filter hook forward priority filter; policy drop;
ct state established,related accept
# Prosleđivanje saobraćaja sa VPN tunela ka WAN interfejsu
iifname "wg0" oifname "WAN_INTERFACE" accept
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
# Maskiranje za IPv4 i IPv6
oifname "WAN_INTERFACE" ip saddr 10.66.66.0/24 masquerade
oifname "WAN_INTERFACE" ip6 saddr fd42:42:42::/64 masquerade
}
}
Testirajte i aktivirajte zaštitni zid:
sudo nft -c -f /etc/nftables.conf
sudo systemctl enable --now nftables
sudo nft -f /etc/nftables.conf
Korak 5: Pokretanje WireGuard servisa
sudo systemctl enable --now wg-quick@wg0
Korak 6: Konfiguracija klijenta (client.conf)
Konfiguracija se kreira na klijentskom uređaju (klijentu dodeljujemo fiksne host adrese /32 i /128 koje odgovaraju serverskom AllowedIPs zapisu):
[Interface]
Address = 10.66.66.2/32, fd42:42:42::2/128
PrivateKey = CLIENT_PRIVATE_KEY_OVDE
DNS = 9.9.9.9, 149.112.112.112
[Peer]
PublicKey = SERVER_PUBLIC_KEY_OVDE
PresharedKey = PRESHARED_KEY_OVDE
Endpoint = VAS_JAVNI_VPS_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Povezivanje lokacija: Site-to-Site tunel i LAN rutiranje
Site-to-Site arhitektura omogućava transparentnu komunikaciju između uređaja na dve odvojene fizičke lokacije korišćenjem originalnih privatnih IP adresa.
Kancelarija A Kancelarija B
Lokalni LAN: 192.168.10.0/24 Lokalni LAN: 192.168.20.0/24
Gateway A: 10.200.0.1/30 <==== [ WireGuard Tunel ] ====> Gateway B: 10.200.0.2/30
Javna IP: 198.51.100.1 Javna IP: 203.0.113.1
[!IMPORTANT] Kritično pravilo rutiranja: Podmreže na povezanim lokacijama ne smeju da se preklapaju. Ako obe lokacije koriste
192.168.1.0/24, rutiranje neće raditi.Dodatno, samo IP prosleđivanje na WireGuard gateway-u nije dovoljno. Ukoliko WireGuard gateway nije ujedno i glavni default gateway lokalne mreže, kućni ruter na lokaciji A mora imati statičku rutu:
192.168.20.0/24 via IP_GATEWAY_Aa ruter na lokaciji B:192.168.10.0/24 via IP_GATEWAY_BBez ovih statičkih ruta uređaji u LAN-u će pakete za udaljenu mrežu slati svom običnom ruteru, koji neće znati gde se nalazi udaljeni VPN opseg.
Gateway A (/etc/wireguard/wg-site.conf)
[Interface]
Address = 10.200.0.1/30
ListenPort = 51820
PrivateKey = GATEWAY_A_PRIVATE_KEY
[Peer]
PublicKey = GATEWAY_B_PUBLIC_KEY
Endpoint = 203.0.113.1:51820
AllowedIPs = 10.200.0.2/32, 192.168.20.0/24
PersistentKeepalive = 25
Gateway B (/etc/wireguard/wg-site.conf)
[Interface]
Address = 10.200.0.2/30
ListenPort = 51820
PrivateKey = GATEWAY_B_PRIVATE_KEY
[Peer]
PublicKey = GATEWAY_A_PUBLIC_KEY
Endpoint = 198.51.100.1:51820
AllowedIPs = 10.200.0.1/32, 192.168.10.0/24
PersistentKeepalive = 25
U ovom scenariju nema potrebe za NAT prevođenjem adresa. Potrebno je samo dozvoliti prosleđivanje paketa u zaštitnom zidu između lokalnih LAN interfejsa i wg-site adaptera na oba gateway-a.
Visoka dostupnost (HA) i više izlaznih čvorova
Šta ako VPN gateway padne?
Za većinu pojedinačnih korisnika i malih timova nepotrebno je uvoditi kompleksne enterprise protokole. Dostupnost se rešava na tri nivoa:
- Jednostavni korisnik (Dva VPN profila): Najrobusnije i najjeftinije rešenje. Na klijentu konfigurišete dva profila:
Primary-VPS(npr. Hetzner) iBackup-VPS(npr. OVH). Ukoliko primarni server postane nedostupan, jednim klikom u aplikaciji aktivirate rezervni profil. - Tailscale HA Subnet Routers: U Tailscale mreži možete postaviti dva ili više subnet routera na istoj lokaciji koji oglašavaju potpuno isti mrežni prefiks (npr.
192.168.1.0/24). Tailscale koordinacioni mehanizam automatski vrši raspodelu i preusmerava saobraćaj na preostali čvor ukoliko jedan prestane da se javlja. - Lokalni / Data-centar HA (Keepalived / VRRP): Za dva servera koji se nalaze unutar iste lokalne Layer-2 mreže (isti broadcast domen), Keepalived implementira VRRP protokol koji održava virtuelnu IP adresu (VIP). Ako primarni gateway zakaže, sekundarni preuzima virtuelnu IP adresu za nekoliko sekundi. Imajte u vidu da VRRP radi isključivo unutar istog mrežnog segmenta i ne može se direktno koristiti kao prebacivanje između dva različita cloud provajdera.
Više izlaznih čvorova (Multi-Exit Architecture)
Jedna od najvećih prednosti mesh arhitekture (Tailscale ili Headscale) jeste mogućnost definisanja više izlaznih tačaka u okviru iste privatne mreže:
HOME-NODE: Kućni mini PC pruža rezidencijalnu IP adresu vašeg ISP-a dok ste na putovanju.VPS-GERMANY: Server u Nemačkoj pruža veliku propusnu moć za stabilan evropski internet saobraćaj.VPS-USA: Server u Severnoj Americi pruža izlaznu IP adresu za pristup specifičnim američkim servisima.
U klijentskoj aplikaciji korisnik jednostavno bira koji čvor trenutno koristi kao izlaz na internet, dok komunikacija sa lokalnim homelab uređajima i dalje nesmetano funkcioniše u pozadini.
Obezbeđivanje servera (Security Hardening)
SSH zaštita
Koristite isključivo kriptografske ključeve i onemogućite prijavu lozinkom.
Generisanje ključa na lokalnom računaru:
ssh-keygen -t ed25519 -C "admin-laptop-2026"
ssh-copy-id -i ~/.ssh/id_ed25519.pub vpnadmin@VAS_JAVNI_VPS_IP
Konfiguracija na serveru (/etc/ssh/sshd_config.d/99-hardened.conf):
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
AllowUsers vpnadmin
MaxAuthTries 3
Provera sintakse pre ponovnog pokretanja servisa:
sudo sshd -t
[!TIP] Držite postojeću SSH sesiju otvorenom dok u drugom prozoru testirate prijavu novim ključem.
Docker i zaštitni zid
- Kontrola objavljenih portova: Kada Docker objavljuje portove (npr.
-p 51821:51821), on manipuliše mrežnim tabelama i može zaobići standardna pravila UFW-a. Zbog toga se administrativni paneli uvek vezuju eksplicitno za lokalnu petlju:-p 127.0.0.1:51821:51821. - Zašto se ne preporučuje
iptables: false: Isključivanje Dockerovog upravljanja zaštitnim zidom u/etc/docker/daemon.jsonnarušava automatsko rutiranje kontejnera i DNS rezoluciju u standardnim instalacijama. Umesto toga, za filtriranje saobraćaja ka kontejnerima koristite zvaničniDOCKER-USERlanac u zaštitnom zidu ili kontrolišite interfejse na kojima kontejneri slušaju.
Automatska bezbednosna ažuriranja
sudo apt install -y unattended-upgrades update-notifier-common
sudo dpkg-reconfigure --priority=low unattended-upgrades
sudo systemctl status apt-daily-upgrade.timer
Provera potrebe za restartom sistema:
test -f /var/run/reboot-required && echo "REBOOT JE NEOPHODAN" || echo "Sistem je ažuran"
Automatizacija i Disaster Recovery
Infrastruktura kao kod (IaC):
- Terraform / OpenTofu: Kreiranje virtuelne mašine, javne IP adrese, DNS zapisa i eksternih cloud firewall pravila.
- Cloud-Init: Inicijalna konfiguracija pri prvom pokretanju (kreiranje korisnika, SSH ključevi, paketi).
- Ansible: Održavanje konfiguracija, distribucija WireGuard ključeva i pravila zaštitnog zida.
Primer: Očvrsnuta cloud-init konfiguracija
#cloud-config
package_update: true
package_upgrade: true
ssh_pwauth: false
disable_root: true
users:
- name: vpnadmin
gecos: VPN Administrator
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
lock_passwd: true
ssh_authorized_keys:
- ssh-ed25519 YOUR_ED25519_PUBLIC_KEY
packages:
- wireguard
- wireguard-tools
- nftables
- unattended-upgrades
- curl
- jq
write_files:
- path: /etc/sysctl.d/99-ipforward.conf
permissions: '0644'
content: |
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.accept_ra = 2
runcmd:
- sysctl -p /etc/sysctl.d/99-ipforward.conf
- systemctl enable --now unattended-upgrades
- systemctl enable --now nftables
Strategija oporavka od otkaza (Disaster Recovery)
- Enkripcija rezervnih kopija: Konfiguracione datoteke (
/etc/wireguard/,/etc/nftables.conf) sadrže privatne ključeve i moraju se čuvati šifrovane pre slanja u bekap skladište. - Korišćenje DNS imena umesto fiksne IP adrese: U klijentskim konfiguracijama u polju
Endpointkoristite FQDN (npr.vpn.vasdomen.app:51820) sa niskim TTL-om (300 s). U slučaju migracije na novi VPS provajder, dovoljno je izmeniti DNS A/AAAA zapis bez potrebe za rekonfiguracijom svih klijentskih uređaja.
Dijagnostika, Testiranje i Monitoring
Status "Connected" u klijentskoj aplikaciji označava samo da je lokalni mrežni interfejs kreiran. WireGuard radi preko UDP protokola bez uspostave klasične sesije (stateless) i aplikacija će prikazivati status veze čak i ako je server nedostupan.
Pravilna provera rada tunela
WireGuard je po dizajnu tih (silent) kada nema aktivnog prenosa. Zbog toga podatak latest handshake: 2 hours ago sam po sebi ne znači da je veza u kvaru ukoliko uređaj u međuvremenu nije slao nikakve pakete. Takođe, brojači prenetih bajtova (RX/TX) se uvećavaju isključivo dok promet stvarno protiče.
Za pouzdan test konekcije:
- Generišite aktivan saobraćaj kroz tunel:
bash
ping -c 3 10.66.66.1 - Zatim očitajte status:
Ako tunel ispravno funkcioniše i paketi prolaze, videćete svež handshake (od pre nekoliko sekundi) i povećanje RX/TX brojača.bash
sudo wg show
Dijagnostičke komande:
# Status WireGuard interfejsa
sudo wg show
# Provera portova koji slušaju
sudo ss -ulpn | grep 51820
# Provera tabela rutiranja
ip route show
ip rule show
# Praćenje prolaska paketa uživo
sudo tcpdump -n -i wg0
# Merenje stvarne propusne moći kroz tunel
# Na serveru:
iperf3 -s
# Na klijentu:
iperf3 -c 10.66.66.1
# Test u suprotnom smeru (Download):
iperf3 -c 10.66.66.1 -R
Monitoring: Kako znati da je VPN server u problemu?
- Osnovni nivo: Redovna provera servisa komandom
systemctl status wg-quick@wg0. Međutim, imajte u vidu da aktivan systemd servis ne garantuje mrežnu povezanost sa internetom. - Aktivni test: Periodični ping mrežnog prolaza ili provera DNS rezolucije kroz tunel sa klijenta.
- Serverske metrike (Prometheus Node Exporter): Za napredniji monitoring resursa (iskorišćenost diska, opterećenje procesora, memorija i mrežne greške). Važno bezbednosno pravilo: port Node Exporter-a (
9100/TCP) nikada ne sme biti javno otvoren na internetu; vežite ga isključivo za WireGuard interfejs ili mu pristupajte kroz zatvorenu privatnu mrežu.
Opoziv kompromitovanog uređaja:
- Otvorite
/etc/wireguard/wg0.confna serveru. - Obrišite
[Peer]sekciju izgubljenog uređaja. - Primenite izmene bez prekidanja ostalih korisnika:
bash
sudo wg syncconf wg0 <(wg-quick strip wg0)
Stablo odluke: Koji VPN je pravi izbor za vas?
Šta je vaš primarni cilj?
│
├── Pristup kućnoj mreži, NAS-u, kamerama
│ ├── Imate li javnu IP adresu?
│ │ ├── NE (CGNAT / bez otvaranja portova) ──→ Tailscale Exit Node / NetBird (0 €)
│ │ └── DA (Optički internet / javna IP) ──→ WireGuard na kućnom ruteru ili Linuxu (0 €)
│
├── Zaštita na putu, stabilan IP u drugoj državi
│ ├── Želite web panel i jednostavno dodavanje uređaja preko QR koda ──→ VPS + wg-easy (v15.4.0) (~3.8 - 6 €/mes)
│ └── Želite čist sistem, minimalizam i maksimalne performanse ──→ VPS + Nativni Dual-Stack WireGuard + nftables
│
└── Specifični mrežni uslovi
├── Restriktivna mreža / DPI cenzura aktivno blokira VPN protokole ──→ AmneziaWG (v3.1) ili Outline
├── Tim, veća firma, SSO / MFA autentifikacija i kontrola pristupa ──→ NetBird / Defguard / Firezone
├── Native OS VPN bez instalacije ikakvih dodatnih aplikacija ──→ IKEv2 / strongSwan 6.1
└── Široka unazadna kompatibilnost i legacy mrežna infrastruktura ──→ OpenVPN 2.7
Preporučene referentne arhitekture
- Recept A (0 € - Kućni pristup iza CGNAT-a): Kućni računar ili Raspberry Pi + Tailscale (Personal plan) sa oglašenim Exit Node i Subnet Route opcijama. Ne zahteva otvaranje portova i nudi rezidencijalnu IP adresu.
- Recept B (0 € - Nativni kućni server sa javnom adresom): Kućni internet sa javnom dinamičkom adresom + WireGuard na OpenWrt ruteru ili namenskom kućnom serveru uz Dinamički DNS (DDNS).
- Recept C (Povoljan cloud VPN za putovanja):
Hetzner CX23 ili OVHcloud VPS-1 + wg-easy v15.4.0 u Dockeru sa panelom vezanim za
127.0.0.1uz pristup preko SSH tunela. - Recept D (Homelab kontrola): Headscale na manjem VPS-u + Tailscale klijenti na kućnim mašinama + AdGuard Home i Unbound rekurzivni DNS resolver.
- Recept E (Timovi i manja preduzeća): NetBird ili Defguard sa integrisanim identitetskim provajderom (OIDC), obaveznom MFA autentifikacijom i granularnim ZTNA pravilima pristupa.
Kontrolna lista pre puštanja u rad (Checklist)
- Operativni sistem: Instalirano aktuelno LTS izdanje; aktivna automatska sigurnosna ažuriranja (
unattended-upgrades). - SSH pristup: Isključena autentifikacija lozinkom; onemogućena prijava za
root; koristi se Ed25519 ključ. - Zaštitni zid: Podrazumevano pravilo je
DROP; otvoreni su samo WireGuard UDP port i SSH port. - DNS zaštita: Port 53 nije otvoren prema internetu; testiran je DNS leak na klijentu.
- Izolacija panela: Ako koristite grafički panel (wg-easy), port je vezan isključivo na
127.0.0.1i zaštićen SSH tunelom. - IPv6 zaštita: IPv6 je ili potpuno konfigurisan kroz tunel (
::/0) uzaccept_ra = 2zaštitu, ili isključen na klijentu radi sprečavanja curenja saobraćaja. - Korisnički profili: Svaki uređaj ima jedinstveni par ključeva generisan lokalno i svoju IP adresu unutar tunela. Isti profil se nikada ne deli između više uređaja istovremeno.
- Test restarta: Server je restartovan komandom
sudo reboot, a svi servisi (nftables,wireguard,docker) startuju automatski.
Izvori i dokumentacija
- WireGuard zvanična dokumentacija: wireguard.com
- Ubuntu WireGuard vodič: ubuntu.com/server/docs/how-to/wireguard-vpn
- wg-easy repozitorijum i dokumentacija: github.com/wg-easy/wg-easy
- Tailscale dokumentacija i cenovnik: tailscale.com/docs i tailscale.com/pricing
- Headscale projekat: headscale.net
- NetBird dokumentacija: docs.netbird.io
- ZeroTier manual: docs.zerotier.com
- AmneziaWG dokumentacija: docs.amnezia.org
- strongSwan izdanja i dokumentacija: strongswan.org
- OpenVPN 2.7 zajednica: openvpn.net/community-docs
- Cloudflare Mesh vodič: developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-mesh/
- Netmaker dokumentacija: docs.netmaker.io
- SoftEther VPN: softether.org
- OpenWrt WireGuard: openwrt.org/docs/guide-user/services/vpn/wireguard/server
- MikroTik WireGuard priručnik: manual.mikrotik.com/docs/virtual-private-networks/wireguard/
- OPNsense WireGuard: docs.opnsense.org/manual/how-tos/wireguard-client.html
- pfSense WireGuard: docs.netgate.com/pfsense/en/latest/vpn/wireguard/
- Keepalived dokumentacija: keepalived.org
- Prometheus Node Exporter: prometheus.io/docs/guides/node-exporter/
- nftables wiki: wiki.nftables.org
- Oracle Cloud Free Tier uslovi: docs.oracle.com
- OVHcloud VPS ponuda: ovhcloud.com/en-ie/vps
- Hetzner Cloud dokumentacija: docs.hetzner.com
- Scaleway cenovnik i blog: scaleway.com/en/pricing/virtual-instances
- Google Cloud Free Tier uslovi: cloud.google.com/free/docs/free-cloud-features
- AWS Free Tier i VPC cene: aws.amazon.com/free i aws.amazon.com/vpc/pricing
Podelite vaše utiske, pitanja ili savete u vezi sa ovim člankom.