Kada WebRTC testna stranica ispiše 172.20.4.15, ona je saznala da na toj mreži postoji lokalni interfejs. To je stvarno otkriće i nije isti nalaz kao „medij je izašao kroz VPN izlaz“. Otkrivanje kandidata i rutiranje paketa su odvojeni mehanizmi, a većina izvještaja o curenju ih spaja u jednu presudu. Koji od njih gledate odlučuje popravku.

Prikupljanje ide prije nego što se bilo šta pošalje

Preglednik nabraja lokalne interfejse, šalje zahtjev za povezivanje STUN serveru i traži alokaciju od TURN servera, a zatim rezultate upisuje u opis sesije kao linije kandidata. Sve to završava bez poziva, bez medija i bez sagovornika. Lista kandidata je zato zapis otkrivanja, a ne prenosa.

Moderni preglednici mogu zamijeniti doslovnu adresu host kandidata mDNS imenom .local, pa stranica ne može pročitati privatni IP. Lokalna mreža ipak vidi multicast upite koji razrješavaju to ime, dakle adresa je skrivena od aplikacije, a ne uklonjena sa mreže.

Redoslijed je takođe bitan: novo učitavanje stranice prikuplja novi skup, uz drugu TURN alokaciju i moguće drugačije refleksivno mapiranje. Dva pokretanja koja se razlikuju nisu nužno dvije različite konfiguracije.

Tri tipa kandidata, tri vrste dokaza

Svaka linija proizlazi iz drugog opažanja. Svaki tip odgovara na drugo pitanje, a tabela ih razdvaja po tome što mogu i što ne mogu utvrditi.

CandidateDerived fromWhat it establishesWhat it cannot establish
HostAn interface on the deviceA local address exists in that networkThat the peer can reach it
Server-reflexiveA STUN binding responseHow a NAT mapped this sourceWhich exit the media will use
Peer-reflexiveA connectivity check that arrivedAn address seen by the far sideThat it was ever advertised
RelayA TURN allocationThe relay server accepted the sessionThat the relay carries the call

Relay kandidat se rutinski zamjenjuje s korisnikovom internet adresom. On pripada TURN serveru, a njegovo prisustvo pokazuje da je relay bio dostupan, ne da ga je preglednik odabrao. Ista zabuna ide i u suprotnom smjeru kod host kandidata, gdje mDNS ime skriva adresu od stranice dok mreža još nosi upite. Pročitajte tip prije nego pročitate vrijednost.

Odabrani par odgovara na pitanje rutiranja

ICE spaja svakog lokalnog kandidata sa svakim udaljenim, izvodi provjere povezanosti na svakom paru i nominira pobjednika. Taj nominirani par, vidljiv u dijagnostici samog preglednika, nosi medij. Sve ostalo na listi je mogućnost koja je izgubila.

Pobjednik vam govori oblik puta. Relay prema relay prolazi kroz TURN server, host par ostaje na lokalnoj mreži, a serverski refleksivni par ide direktno kroz NAT. To je činjenica koja treba VPN provjeri i ona je različita od liste adresa. Dva poziva s identičnim listama kandidata mogu izabrati različite parove.

Neodabrani kandidati su ipak prikupljeni, a prikupljanje je mrežni saobraćaj koji napušta mašinu. Poziv koji je na kraju koristio relay ne znači da ništa nije otkriveno dok je lista građena.

Kontrole odgovaraju ciljevima, ne ocjeni curenja

WebRTC specifikacija za rukovanje IP-om opisuje nekoliko politika: korištenje samo interfejsa koji nosi zadanu rutu, korištenje svih interfejsa i isključivanje neproksiranog UDP-a tako da saobraćaj mora ići kroz relay ili proxy. Svaka razmjenjuje povezanost i latenciju za drugu vrstu izloženosti. Koju politiku preglednik provodi i pod kojim imenom zavisi od platforme i verzije.

Odaberite politiku prema cilju. Skrivanje lokalnih adresa od stranice je jedan cilj; sprečavanje direktnog saobraćaja između ravnopravnih računara je drugi; držanje svakog paketa unutar tunela je treći. Prvi se uglavnom tiče onoga što aplikacija sazna, drugi toga koji je put dozvoljen, a treći se mora nametnuti i na granici platforme ili VPN-a.

Koju god kontrolu odabrali, provjerite obje polovine: pokrenite test prikupljanja i zabilježite tipove kandidata, pa pregledajte odabrani par tokom stvarne sesije. Čista lista adresa s direktnim medijskim putem i dalje je put koji niste namjeravali.

Povezani članci