Puslapis įkeliamas per VPN, bet skambutis niekada neprisijungia: dvi skirtingos gedimų rūšys toje pačioje adreso juostoje. Tunelis pakeitė kelią, kurį naudoja naršyklė; jis netapo signalizacijos paslauga, STUN serveriu ar rele, ir jis nenusprendžia, kurią kandidatų porą pasirinks ICE. Būtent kiekvieno komponento darbo atskyrimas neaiškų „WebRTC užblokuotas“ paverčia konkrečiu gedimu.

Keturi darbai, iš kurių tunelis paliečia tik vieną

Programa keičiasi sesijos informacija per kokią nors signalizacijos tvarką, ir tai pirmas darbas. ICE renka kandidatų adresus ir tikrina poras, kol viena veikia, ir tai antras. STUN leidžia partneriui sužinoti, kaip jo srautas atrodo iš išorės, o TURN skiria relę atvejams, kai nėra tiesioginio kelio. Šie keturi vaidmenys skiriasi, o VPN veikia adresus ir filtravimą, su kuriais jie susiduria, o ne teikia kurį nors iš jų.

Todėl sėkmingas prisijungimas nieko nepasako apie medijos kelią. Signalizacija paprastai eina tuo pačiu HTTPS, kurį puslapis jau naudoja, 443 prievadu, o medija gali keliauti UDP į visiškai kitą paskirties vietą.

Privatus adresavimas dar labiau painioja. Tunelio adresas partneriui naudingas tik tada, kai jis turi numatytą kelią atgal į jį; tai, kad adresas privatus, nėra abipusio pasiekiamumo įrodymas, ir naršyklės to taip netraktuoja, kai atmeta kandidatus, kurių negalima patikrinti. Kandidatas, kuris jums atrodo vietinis, gali būti nepatikrinamas iš kitos pusės. Tą spragą verta pašalinti prieš darant išvadą, kad tunelis meta mediją.

Palyginkite VPN išėjimą su TURN rele

Abu persiunčia paketus, todėl jie painiojami, o palyginimo lentelę aukščiau verta skaityti stulpelis po stulpelio, o ne kaip funkcijų sąrašą. Relės skyrimas yra kiekvienos sesijos objektas, sukuriamas autentifikuotos užklausos; tunelis yra maršrutas. Vienas turi pasibaigiančius prisijungimo duomenis, kitas turi partnerio adresą, kuris arba pasiekiamas, arba ne.

ComponentWhat it contributesWhat it needs to workWhat it cannot do
VPN exitChanges the observed mapping and the route packets takeA working tunnel and a policy that permits the media transportAllocate a relay or supply signaling
STUN serverReports the mapped address a peer appears to useReachability from the client, on its configured transportCarry media when a direct path fails
TURN serverRelays media through an authenticated allocationValid credentials, an allowed transport and sufficient capacityFix a missing ICE policy or an unauthorized client
Signaling channelCarries offers, answers and candidate listsBoth peers reaching the same application endpointEstablish connectivity by itself

Prievadų numeriai padaro skirtumą konkrečiu. TURN pagal nutylėjimą klausosi 3478 prievado UDP ir TCP bei 5349 prievado TLS, o tinklas, kuris leidžia 443, bet meta šiuos prievadus, nepavyks perduodant skambučius per relę, nors naršymas tęsis įprastai. VPN prievado keitimas nieko to nesukonfigūruoja, nes svarbūs prievadai priklauso relės paslaugai, o ne tuneliui.

Perskaitykite diagnostiką, tada išbandykite skambutį

Naršyklės atskleidžia reikiamą informaciją be paketų fiksavimo. Atidarykite savo naršyklės WebRTC diagnostikos puslapį, atlikite skambutį ir skaitykite pasirinktą kandidatų porą, o ne surinktą sąrašą: kurie vietiniai ir nuotoliniai kandidatų tipai buvo pasirinkti, kokiu transportu ir adresų šeima, ir ar kelias tiesioginis, ar per relę.

Du skaitymo būdus verta žinoti iš anksto. Jei pasirinkta pora yra host-host privačiais adresais, medija lieka kelyje, apie kurį galima samprotauti; jei tai relė-relė, skambutis eikvoja relės pajėgumą ir priklauso nuo tos paslaugos prieinamumo. Gedimas, kuris sustoja ties „tikrinama“ be pasirinktos poros, reiškia, kad kandidatai buvo surinkti, bet nė vienas nepraėjo ryšio patikrų.

Tada palyginkite tuos pačius du galinius taškus tame pačiame skambutyje, keisdami tik vieną patvirtintą sąlygą, ir priimkite rezultatą pagal dvikryptę mediją arba duomenis, o ne pagal „prijungta“ indikatorių. Kandidatų rinkimas pavyksta daugeliu atvejų, kurie neperduoda nė vieno garso kadro. Pakartokite skambutį kitoje pakeitimo pusėje ir išsaugokite abu diagnostikos įrašus, nes dviejų paleidimų palyginimas informatyvesnis nei bet kurio vieno skaitymas. Tie patys galiniai taškai, tas pats kodekas, vienas pakeistas kintamasis.

Programa, kuri sąmoningai nustato savo ICE transporto politiką į relay, prašo tik relės kandidatų. Šis nustatymas nesukuria relės ir nesutaiso trūkstamų prisijungimo duomenų; jis padaro reikalavimą aiškų, o tai naudinga, kai kas nors kaltina VPN dėl politikos, kurią pasirinko svetainė.

Laikykite privatumo teiginį tokį siaurą, kiek leidžia įrodymai

Kandidatų atskleidimas priklauso nuo naršyklės ir programos politikos, o ne vien nuo tunelio būsenos, o W3C partnerių ryšio specifikacija IP tvarkymą laiko atskiru klausimu. Todėl prijungtas VPN yra silpnas pagrindas žadėti, kad skambutis atskleis tik vieną pasirinktą adresą. Du partneriai už to paties tunelio gali net pasirinkti kelią, kuris niekada neišeina iš hosto, o tai kartu yra privatumo pagerinimas ir ryšio apribojimas.

Tai, ką galite pasakyti tiksliai, yra siauriau ir naudingiau: kuri kandidatų pora buvo pasirinkta, kuris transportas ją nešė ir ar tas kelias liko tunelio viduje. Užsirašykite šiuos tris faktus veikiančiam ir nepavykusiam skambučiui, o skirtumas paprastai įvardija komponentą, kurį reikia taisyti.

Kai ryšys veikia, atskirkite našumą nuo pasiekiamumo. Nuostoliai, vėlavimas, eilės ir MTU visi yra žemiau teisingos kandidatų poros, o trūkčiojantį skambutį traktuoti kaip ryšio gedimą reiškia be priežasties grįžti prie kandidatų sąrašo.

Susiję straipsniai