Ako ste ikada pokušali da pokrenete sopstveni web server kod kuće u Srbiji, verovatno ste se suočili sa jednim od najvećih neprijatelja kućnog hostinga – CGNAT-om. Ruter koji ne dozvoljava otvaranje portova, provajder koji vam daje “privatnu” IP adresu iza koje se krije još sto korisnika, nemogućnost da bilo ko spolja pristupi vašem serveru. Zvuči poznato? Upravo za ove situacije postoji elegantno, besplatno i sigurno rešenje koje se zove Cloudflare Tunnel.

Šta je uopšte CGNAT i zašto je problem?

Pre nego što pređemo na instalaciju, važno je razumeti zašto je Cloudflare Tunnel uopšte potreban.

CGNAT (Carrier-Grade NAT) je tehnologija koju internet provajderi koriste kada nemaju dovoljno javnih IPv4 adresa za sve korisnike. Umesto da svaki korisnik dobije vlastitu javnu IP adresu, provajder grupiše više korisnika iza jedne zajedničke IP adrese. Ovo je danas standardna praksa kod gotovo svih domaćih provajdera – SBB, MTS, Yettel i drugi koriste CGNAT u različitom obimu.

Posledica za korisnike koji žele da hostuju server kod kuće je dramatična: čak i ako uspete da konfigurišete Port Forwarding na svom ruteru, saobraćaj nikad neće stići do vas jer je vaš ruter iza još jednog NAT sloja kojim upravlja provajder. Rezultat je isti kao i kada bi vaš ruter bio zaključan – spolja niko ne može da vam pristupi.

Tradicionalna rešenja uključuju plaćanje skupe statičke IP adrese (što domaći provajderi naplaćuju kao premium uslugu), korišćenje VPN servera na cloud platformi kao “most”, ili razne komplikovane konfiguracije koje zahtevaju tehničko znanje i stalno održavanje.

Cloudflare Tunnel sve ovo rešava elegantan način, besplatno, za nekoliko minuta.

Kako Cloudflare Tunnel funkcioniše?

Ključna razlika između klasičnog Port Forwardinga i Cloudflare Tunnela je u smeru konekcije.

Kod Port Forwardinga, korisnik spolja inicira vezu prema vašem serveru – “kuca na vrata” sa interneta. Ovo zahteva da ta “vrata” budu otvorena, što je nemoguće uz CGNAT.

Cloudflare Tunnel funkcioniše obrnuto: vaš server inicira odlaznu vezu prema Cloudflare mreži i tu vezu održava aktivnom. Kada korisnik sa interneta pokuša da pristupi vašem sajtu, saobraćaj stiže do Cloudflare infrastrukture, a Cloudflare ga prosleđuje kroz već uspostavljenu odlaznu vezu direktno do vašeg servera.

Budući da odlazne veze nisu blokirane ni CGNAT-om ni zaključanim ruterom, ceo sistem radi besprekorno. Sa aspekta vašeg provajdera i rutera, server se jednostavno “pretplaćuje” na Cloudflare uslugu kao što bi se pretplatio na bilo koji drugi internet servis.

Ovo donosi i važnu sigurnosnu prednost: vaša kućna IP adresa nikada nije izložena internetu. Svi koji posete vaš sajt vide samo Cloudflare IP adrese, što vas štiti od DDoS napada, automatizovanih skenera i različitih vrsta zloupotreba.

Preduslovi

Pre početka instalacije, potrebno je da imate:

  • Ubuntu server (18.04, 20.04, 22.04 ili 24.04) – fizički ili virtuelni
  • Web server koji radi lokalno (Nginx, Apache, OpenLiteSpeed…)
  • Nalog na Cloudflare (besplatno na cloudflare.com)
  • Domen koji je već dodat i konfigurisan na Cloudflare nalogu

Važna napomena: domen mora biti registrovan i moraju biti aktivni Cloudflare nameserveri. Ako vaš domen još uvek koristi nameservere od registrara, prenesite ga na Cloudflare upravljanje pre nego što nastavite.

Korak 1 – Instalacija cloudflared agenta

Cloudflared je mali program koji se instalira na vašem serveru i upravlja tunelom. Instalacija je jednostavna:

Najpre preuzmite najnoviji .deb paket direktno sa GitHub-a:

bash

curl -L –output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

Zatim ga instalirajte:

bash

sudo dpkg -i cloudflared.deb

Proverite da je instalacija uspešna:

bash

cloudflared –version

Ako vidite broj verzije, instalacija je prošla bez problema.

Korak 2 – Autentifikacija na Cloudflare nalog

Sledeći korak je povezivanje cloudflared agenta sa vašim Cloudflare nalogom:

bash

cloudflared tunnel login

Ova komanda će generisati URL koji treba da otvorite u web pregledaču. Prijavite se na vaš Cloudflare nalog i izaberite domen koji želite da koristite sa tunelom. Nakon što potvrdite izbor, Cloudflare će sačuvati autentifikacioni sertifikat na vašem serveru u direktorijumu ~/.cloudflared/cert.pem.

Ovaj sertifikat je jedinstven za vaš nalog i treba ga čuvati na sigurnom mestu – ko ima ovaj fajl, može kreirati tunele u vaše ime.

Korak 3 – Kreiranje tunela

Sada kreiramo sam tunel komandom:

bash

cloudflared tunnel create moj-server

Ime tunela (moj-server) možete izabrati po volji – preporučuje se nešto opisno, posebno ako planirate više tunela za različite servise.

Nakon kreiranja, dobićete poruku sa Tunnel ID – dugačkim nizom slova i brojeva koji jedinstveno identifikuje vaš tunel. Zapišite ovaj ID jer će vam biti potreban u sledećem koraku. Cloudflare će automatski kreirati JSON fajl sa kredencijalima tunela u ~/.cloudflared/ direktorijumu.

Možete proveriti listu svih kreiranh tunela komandom:

bash

cloudflared tunnel list

Korak 4 – Konfiguracija DNS zapisa

Sada treba da povežemo tunel sa domenskim imenom. Cloudflare automatski kreira CNAME zapis u DNS-u vašeg domena:

bash

cloudflared tunnel route dns moj-server moj-domen.rs

Ako želite da tunel radi i za www poddomenu:

bash

cloudflared tunnel route dns moj-server www.moj-domen.rs

Ove komande kreiraju CNAME DNS zapise koji usmeravaju saobraćaj sa vašeg domena prema Cloudflare tunelnoj infrastrukturi. Promena DNS-a se obično propagira za nekoliko sekundi do nekoliko minuta.

Korak 5 – Kreiranje konfiguracionog fajla

Ovo je najvažniji korak i najčešće mesto gde greške nastaju. Potrebno je kreirati config.yml fajl koji govori cloudflared agentu kako da rutira saobraćaj.

Kreirajte fajl:

bash

nano ~/.cloudflared/config.yml

Dodajte sledeći sadržaj, prilagođen vašim podacima:

yaml

tunnel: vaš-tunnel-id-ovde

credentials-file: /root/.cloudflared/vaš-tunnel-id-ovde.json

ingress:

  – hostname: moj-domen.rs

    service: http://localhost:80

  – hostname: www.moj-domen.rs

    service: http://localhost:80

  – service: http_status:404

Nekoliko važnih napomena o ovom fajlu:

tunnel – ovde ide Tunnel ID koji ste dobili u koraku 3.

credentials-file – putanja do JSON fajla sa kredencijalima. Ako ste instalaciju radili kao root korisnik, putanja je /root/.cloudflared/. Ako ste radili kao obični korisnik, biće /home/korisnik/.cloudflared/.

ingress – lista pravila za rutiranje saobraćaja. Svako pravilo kaže “kada stigne zahtev za ovaj hostname, prosledi ga na ovaj lokalni servis”. Port 80 je standardni HTTP port – ako vaš web server sluša na drugom portu (npr. 8080 za OpenLiteSpeed), promenite odgovarajuće.

Poslednji red (service: http_status:404) je obavezan i mora biti poslednji u listi. Ovo je “catch-all” pravilo koje odgovara na sve ostale zahteve koji ne odgovaraju nijednom hostname-u.

Upozorenje: YAML format je veoma osetljiv na indentaciju. Koristite isključivo razmake (ne Tab), i pazite da svi redovi u ingress sekciji budu pravilno uvučeni.

Korak 6 – Testiranje tunela

Pre aktivacije kao sistemski servis, testirajte tunel ručno:

bash

cloudflared tunnel run moj-server

Ako sve radi ispravno, videćete poruku da je tunel aktivan. Pokušajte da pristupite vašem sajtu iz pregledača. Ako sajt radi, sve je u redu – pritisnite Ctrl+C da zaustavite ručno pokretanje i pređite na sledeći korak.

Ako dobijete grešku “502 Bad Gateway”, proverite da li vaš web server uopšte radi komandom:

bash

systemctl status nginx

# ili za OpenLiteSpeed:

systemctl status lshttpd

Korak 7 – Instalacija kao systemd servis

Da bi tunel automatski startovao pri pokretanju servera, instalirajte ga kao systemd servis:

bash

sudo cloudflared service install

Pokrenite servis:

bash

sudo systemctl start cloudflared

Proverite status:

bash

systemctl status cloudflared

Trebalo bi da vidite zeleni tekst “active (running)”. Ukoliko je sve u redu, servis će se automatski pokretati pri svakom restartu servera.

Rešavanje uobičajenih problema

Greška “Failed to build the ingress rule” – gotovo uvek uzrokovana greškom u config.yml fajlu. Proverite indentaciju (moraju biti razmaci, ne tab), proverite da li postoji catch-all pravilo na kraju, i proverite da li je Tunnel ID ispravno unet.

“502 Bad Gateway” – Cloudflare uspešno prima zahtev ali lokalni server ne odgovara. Proverite da li web server radi i da li se port u config.yml poklapa sa portom na kojem server sluša.

Servis ne startuje nakon restarta – proverite logove komandom journalctl -u cloudflared da biste videli tačnu grešku. Često je uzrok taj što systemd pokušava da pokrene cloudflared pre nego što se mrežni interfejs potpuno inicijalizuje. Rešenje je dodavanje After=network-online.target u systemd unit fajl.

Sertifikat je istekao – cloudflared sertifikati periodično ističu. Pokrenite ponovo cloudflared tunnel login i obnovite sertifikat.

Zašto je ovo bolji izbor od alternativa?

Pored rešavanja problema sa CGNAT-om, Cloudflare Tunnel donosi i niz dodatnih prednosti koje ga čine superiornim u odnosu na alternativna rešenja:

Sav saobraćaj je automatski zaštićen TLS 1.3 enkripcijom, čak i ako vaš lokalni server nema SSL sertifikat. Cloudflare preuzima svu komunikaciju sa klijentima, a sa vašim serverom komunicira interno.

DDoS zaštita je automatski uključena. Cloudflare je jedan od najvećih CDN provajdera na svetu i ima kapacitet da apsorbuje napade od stotine gigabita u sekundi – sve to besplatno u Free planu.

Vaša kućna IP adresa ostaje potpuno skrivena, što vas štiti od ciljanih napada i doksiranja.

Nema potrebe za otvaranjem portova, što znači manji bezbednosni rizik i nema konflikta sa pravilima provajdera.

Sve ovo dolazi u okviru Cloudflare Free plana, bez ikakvih troškova.

Zaključak

Cloudflare Tunnel je u 2026. godini jedan od najpraktičnijih alata za sve koji žele da hostuju servere i servise kod kuće, bez plaćanja statičke IP adrese i bez borbe sa CGNAT-om koji je kod srpskih provajdera sve rasprostranjeniji.

Instalacija traje svega desetak minuta, a rezultat je stabilan, siguran i besplatan tunel koji vaš kućni server čini dostupnim celom svetu – uz enterprise nivo zaštite koji bi inače koštao stotine dolara mesečno. Za hobiste, developere i male preduzetničke projekte, teško je naći bolje rešenje.

Avatar photo

By Admin

Leave a Reply