9.7. Privatne mreže i NAT¶
IPv4 je osmišljen s četiri milijarde adresa, što je u to vrijeme zvučalo kao dovoljno. Nije. Svaki dom, ured i tvornica povezani s internetom trebaju vlastiti blok adresa za svoje unutarnje uređaje, a dodavanje svjetske količine kamera, telefona i kućanskih aparata ne ostavlja četiri milijarde za sve.
Rješenje na koje se internet odlučio su privatne mreže: većina uređaja na lokalnoj mreži koristi adrese koje nisu jedinstvene globalno, nego samo unutar te mreže, a jedan uređaj na rubu prevodi između dva svijeta. Kamera, gotovo uvijek, nalazi se na jednoj od tih privatnih mreža.
9.7.1. Rasponi privatnih adresa¶
Tri IPv4 raspona rezervirana su kao neusmjeriva na javnom internetu. Bilo koja lokalna mreža slobodno može koristiti adrese iz tih raspona bez usklađivanja s ikim, jer nijedan usmjernik izvan lokalne mreže nikada neće pokušati isporučiti podatke na njih:
10.0.0.0–10.255.255.255(16 milijuna adresa; uobičajeno u većim korporativnim mrežama).172.16.0.0–172.31.255.255(oko milijun adresa; rjeđe se susreće u praksi).192.168.0.0–192.168.255.255(65 tisuća adresa; zadana vrijednost za gotovo svaki kućni usmjernik).
Na tipičnoj kućnoj mreži i kamera i prijenosno računalo koje s njom komunicira nalaze se na 192.168.x.x adresama, jer je to raspon koji kućni usmjernik bira za mrežu koju poslužuje.
9.7.1.1. Kako se koristi mrežna maska¶
Stranica IP adrese uvela je oznaku /24. Razlog zašto je to ovdje važno jest taj što je mrežna maska ono čime svaki uređaj odlučuje kamo paket mora dalje. Svaki put kad kamera pošalje paket, primjenjuje vlastitu mrežnu masku na odredišnu adresu i gleda rezultat:
Ako odredište dijeli mrežne bitove s vlastitom adresom kamere, odredište je na istoj lokalnoj mreži. Kamera mu šalje paket izravno.
Ako odredište ne dijeli mrežne bitove, mora biti na nekoj drugoj mreži. Kamera šalje paket svom zadanom pristupniku (usmjerniku koji se automatski konfigurira pri uspostavi veze) i prepušta pristupniku da odradi ostalo.
Taj jedan test – „dijelimo li mrežne bitove?” – ono je čemu mrežna maska služi. Također je razlog zašto kućne mreže imaju zadanu vrijednost /24: ograničenje od 254 uređaja udobno odgovara kućanstvu i održava mrežu jednostavnom.
9.7.2. Prevođenje mrežnih adresa (NAT)¶
Kamera na 192.168.1.50 ne može jednostavno poslati paket poslužitelju na javnom internetu – javni internet ne usmjerava prema 192.168.x.x. Kućni usmjernik to rješava prevođenjem mrežnih adresa, odnosno NAT-om, i to čini transparentno.
NAT prepisuje izvorišnu adresu odlaznih paketa u javnu adresu usmjernika, a obrnuto na dolaznim odgovorima, tako da se čini da privatni uređaji dijele jednu javnu adresu.¶
Usmjernik ima dvije adrese: privatnu na lokalnoj mreži (najčešće 192.168.1.1) i javnu koju dodjeljuje pružatelj internetske usluge. Kad kamera pošalje paket na javnu adresu, usmjernik
bilježi privatnu adresu kamere + port i uparuje ih s privremenim odlaznim portom koji je sam odabrao;
prepisuje izvorišnu adresu na paketu u vlastitu javnu adresu (i izvorišni port u odabrani odlazni port);
šalje prepisani paket prema javnoj strani.
Kad odgovor stigne adresiran na javnu adresu + port usmjernika, usmjernik traži uparivanje, prepisuje odredište natrag u privatnu adresu + port kamere i isporučuje ga na lokalnoj strani. Kamera nikada ne zna da se prepisivanje dogodilo; poslužitelj nikada ne zna izvorni izvor.
NAT je ono što kućne mreže čini praktičnima. Ima i dvije posljedice o kojima vrijedi znati.
9.7.3. Što NAT mijenja¶
Odlazni promet je jednostavan. Kamera na privatnoj mreži može slobodno komunicirati prema van. Svaki put kad otvori TCP vezu ili pošalje UDP paket udaljenom poslužitelju, NAT automatski postavlja uparivanje. Većina aplikacija za kamere radi u tom smjeru: snimi sliku, gurni je nekom poslužitelju, primi odgovor.
Dolazni promet je težak. Uređaj na javnom internetu ne može se izravno povezati s kamerom na privatnoj mreži. Ne postoji uparivanje koje bi usmjernik mogao potražiti kad na njegovu javnu adresu stigne neželjeni paket, pa paket nema kamo otići. Usmjernik ga ili odbacuje ili predaje usluzi koja se izvodi na samom usmjerniku.
Tri zaobilazna rješenja za dolazni slučaj su uobičajena, otprilike po rastućem redoslijedu praktičnosti:
Prosljeđivanje portova. Konfigurirajte usmjernik da usmjeri sve dolazne pakete na odabranom javnom portu prema određenom privatnom uređaju. Zahtijeva administratorski pristup usmjerniku; lomljivo je kad se javna adresa usmjernika promijeni.
VPN. Pokrenite virtualnu privatnu mrežu koja stavlja kameru na istu logičku mrežu kao i onaj tko joj treba pristupiti. Glomazno; izvan opsega za većinu primjena kamera.
Veza inicirana odlazno. Kamera se poveže prema van s poznatim poslužiteljem negdje na javnom internetu i drži tu vezu otvorenom; poslužitelj koristi postojeću vezu za slanje poruka natrag. Ovako rade push obavijesti i većina protokola uređaja povezanih s oblakom, i to je obrazac koji većina aplikacija za kamere na kraju koristi.
NAT je nevidljiv Python kodu na kameri. Skripta jednostavno komunicira s bilo kojim odredištem koje joj treba; usmjernik obavlja prevođenje iza kulisa. No smjer veze jest važan, i NAT je razlog zašto je „kamera poseže prema poslužitelju u oblaku” mnogo jednostavniji oblik od „poslužitelj u oblaku poseže do kamere”.