VPN o relè TURN: quale trasporta davvero una chiamata WebRTC?
Il tunnel cambia il percorso che ICE vede; non assegna mai un relè né fornisce segnalazione. Confrontate ciò che offrono un’uscita VPN e un server TURN.
La pagina si carica via VPN, la chiamata non si connette mai: due guasti diversi con la stessa barra degli indirizzi. Il tunnel ha cambiato il percorso che il browser usa; non è diventato un servizio di segnalazione, un server STUN o un relè, e non decide quale coppia di candidati ICE sceglierà. È la separazione del compito di ciascun componente che trasforma un vago «WebRTC è bloccato» in un guasto preciso.
Quattro compiti, e il tunnel ne tocca solo uno
L’applicazione scambia informazioni di sessione tramite un qualche meccanismo di segnalazione, e questo è il primo compito. ICE raccoglie indirizzi candidati e prova coppie finché una funziona, che è il secondo. STUN permette a un pari di sapere come appare il suo traffico dall’esterno, e TURN assegna un relè per i casi in cui non esiste un percorso diretto. Questi quattro ruoli sono distinti, e una VPN influenza gli indirizzi e il filtraggio che incontrano invece di fornirne uno.
Per questo un accesso riuscito non dice nulla sul percorso dei media. La segnalazione di solito viaggia sullo stesso HTTPS che la pagina già usa, sulla porta 443, mentre i media possono passare su UDP verso una destinazione del tutto diversa.
L’indirizzamento privato peggiora la confusione. Un indirizzo di tunnel è utile a un pari solo quando quel pari ha un percorso previsto di ritorno verso di esso; essere privato non è prova di raggiungibilità reciproca, e i browser non lo trattano così quando scartano candidati che non si possono verificare. Un candidato che a voi sembra locale può essere non verificabile dall’altro lato. Vale la pena escludere quel divario prima di concludere che il tunnel stia perdendo media.
Confrontate un’uscita VPN con un relè TURN
Entrambi inoltrano pacchetti, per questo vengono confusi, e la tabella di confronto qui sopra va letta colonna per colonna, non come un elenco di funzioni. L’assegnazione di un relè è un oggetto per sessione creato da una richiesta autenticata; un tunnel è una rotta. Uno ha credenziali che scadono, l’altro ha un indirizzo di pari che o è raggiungibile o non lo è.
| Component | What it contributes | What it needs to work | What it cannot do |
|---|---|---|---|
| VPN exit | Changes the observed mapping and the route packets take | A working tunnel and a policy that permits the media transport | Allocate a relay or supply signaling |
| STUN server | Reports the mapped address a peer appears to use | Reachability from the client, on its configured transport | Carry media when a direct path fails |
| TURN server | Relays media through an authenticated allocation | Valid credentials, an allowed transport and sufficient capacity | Fix a missing ICE policy or an unauthorized client |
| Signaling channel | Carries offers, answers and candidate lists | Both peers reaching the same application endpoint | Establish connectivity by itself |
I numeri di porta rendono concreta la differenza. TURN ascolta per impostazione predefinita sulla 3478 per UDP e TCP e sulla 5349 per TLS, e una rete che consente la 443 ma scarta quelle porte farà fallire le chiamate relayate mentre la navigazione continua normalmente. Cambiare la porta della VPN non configura nulla di tutto ciò, perché le porte che contano appartengono al servizio di relè, non al tunnel.
Leggete la diagnostica, poi provate la chiamata
I browser espongono le informazioni necessarie senza catturare pacchetti. Aprite la pagina di diagnostica WebRTC del vostro browser, fate la chiamata e leggete la coppia di candidati selezionata invece dell’elenco raccolto: quali tipi di candidato locale e remoto sono stati scelti, su quale trasporto e famiglia di indirizzi, e se il percorso è diretto o relayato.
Due letture conviene conoscerle in anticipo. Se la coppia selezionata è host-to-host su indirizzi privati, i media restano su un percorso su cui potete ragionare; se è relè-a-relè, la chiamata consuma capacità del relè e dipende dalla disponibilità di quel servizio. Un guasto che si ferma a «verifica» senza coppia selezionata significa che i candidati sono stati raccolti ma nessuno ha superato i controlli di connettività.
Poi confrontate gli stessi due endpoint nella stessa chiamata cambiando solo una condizione approvata, e accettate il risultato su media o dati bidirezionali e non su un indicatore «connesso». La raccolta dei candidati riesce in molti casi che non trasportano un solo fotogramma audio. Ripetete la chiamata dall’altro lato della modifica e conservate entrambe le catture diagnostiche, perché confrontare due esecuzioni informa più che leggerne una sola. Stessi endpoint, stesso codec, una variabile modificata.
Un’applicazione che imposta deliberatamente la propria politica di trasporto ICE su relay chiede solo candidati di relè. Questa impostazione non crea un relè e non ripara credenziali mancanti; rende esplicito il requisito, cosa utile quando qualcuno incolpa la VPN per una politica scelta dal sito.
Mantenete l’affermazione sulla privacy stretta quanto le prove
L’esposizione dei candidati dipende dalla politica del browser e dell’applicazione, non solo dallo stato del tunnel, e la specifica W3C sulla connessione tra pari tratta la gestione degli IP come una questione a sé. Una VPN connessa è quindi una base debole per promettere che una chiamata riveli solo un indirizzo scelto. Due pari dietro lo stesso tunnel possono persino scegliere un percorso che non lascia mai l’host, il che è insieme un miglioramento della privacy e un limite alla connettività.
Ciò che potete affermare con precisione è più stretto e più utile: quale coppia di candidati è stata selezionata, quale trasporto l’ha portata e se quel percorso è rimasto dentro il tunnel. Annotate questi tre fatti per una chiamata che funziona e per una che fallisce, e la differenza di solito nomina il componente da correggere.
Una volta che la connettività funziona, separate le prestazioni dalla raggiungibilità. Perdita, ritardo, code e MTU stanno tutti a valle di una coppia di candidati corretta, e trattare una chiamata a scatti come un guasto di connettività vi riporta all’elenco dei candidati senza motivo.