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

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

Preglednik nabraja lokalna sučelja, šalje zahtjev za povezivanje poslužitelju STUN i traži alokaciju od poslužitelja TURN, a zatim rezultate upisuje u opis sesije kao retke kandidata. Sve to završava bez poziva, bez medija i bez sugovornika. Popis kandidata je stoga zapis otkrivanja, a ne prijenosa.

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 s mreže.

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

Tri tipa kandidata, tri vrste dokaza

Svaki redak proizlazi iz drugog opažanja. Svaki tip odgovara na drugo pitanje, a tablica ih razdvaja prema 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 rutinski se zamjenjuje s korisnikovom internetskom adresom. Pripada poslužitelju TURN, a njegova prisutnost 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 usmjeravanja

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 popisu je mogućnost koja je izgubila.

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

Neodabrani kandidati ipak su prikupljeni, a prikupljanje je mrežni promet koji napušta stroj. Poziv koji je na kraju koristio relay ne znači da ništa nije otkriveno dok se popis gradio.

Kontrole odgovaraju ciljevima, ne ocjeni curenja

WebRTC specifikacija za rukovanje IP-om opisuje nekoliko politika: korištenje samo sučelja koje nosi zadanu rutu, korištenje svih sučelja i isključivanje neposredovanog UDP-a tako da promet 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 jedan je cilj; sprječavanje izravnog prometa između ravnopravnih računala drugi je; držanje svakog paketa unutar tunela treći je. Prvi se uglavnom tiče onoga što aplikacija sazna, drugi toga koji je put dopušten, a treći se mora nametnuti i na granici platforme ili VPN-a.

Koju god kontrolu odabrali, provjerite obje polovice: pokrenite test prikupljanja i zabilježite tipove kandidata, pa pregledajte odabrani par tijekom stvarne sesije. Čist popis adresa s izravnim medijskim putem i dalje je put koji niste namjeravali.

Povezani članci