OpenVPN usa davvero TLS, e le persone estendono abitualmente questo a un’affermazione che non può reggere: che un tunnel somigli quindi a un browser che visita un sito. La prima parte è vera. La seconda no. Qui TLS appartiene a un canale di controllo che viaggia dentro il contenitore di OpenVPN stesso, accanto a un canale di payload con una crittografia del tutto diversa, quindi chi ispeziona i primi byte vede OpenVPN.

Due conversazioni in una busta

Pensi a una sessione come due conversazioni che condividono una busta. Una convalida i certificati e deriva il materiale di chiave. L’altra cifra ciò che sta effettivamente inviando, usando ciò che la prima ha prodotto.

La busta è il protocollo. Ogni pacchetto inizia con una piccola intestazione che ne nomina il tipo, e quella intestazione arriva prima di ogni altra cosa.

Cosa arriva davvero per primo

A causa di quell’ordine, la prima cosa sul filo non è un record TLS. È l’intestazione di OpenVPN, seguita dal contenuto del canale che l’intestazione annuncia. Un ClientHello esiste lì dentro, solo non al byte zero. Non serve alcuna decifratura per notare la differenza, perché la forma da sola la tradisce.

Anche i valori predefiniti contano. Il flusso è UDP verso 1194 a meno che il profilo non scelga TCP. In entrambi i casi l’aspetto esteriore è un tunnel e non una richiesta web.

Tre modi onesti per cambiare la forma

Un terminatore TLS come stunnel accetta TLS su una porta a ciascuna estremità e consegna il flusso decifrato a OpenVPN localmente, così la rete vede TLS verso quella porta. Un protocollo che è TLS dal primo byte si comporta ancora diversamente: lo scambio compatibile con AnyConnect che ocserv implementa assomiglia all’accesso remoto aziendale che molte reti già si aspettano. SSTP, che arriva con Windows, ha la stessa proprietà in un altro prodotto.

Su Linux, l’opzione -w di SSH trasporta un collegamento punto a punto dentro una sessione SSH, cosa utile quando SSH è l’unico protocollo consentito. È la più economica delle quattro se SSH funziona già da quella rete, e la meno utile se non funziona.

Cosa non cambia nessuna di esse

Nessuna di queste cambia ciò che il tunnel può raggiungere. Non rendono raggiungibile un indirizzo bloccato, non autenticano nessuno e non decidono le rotte.

Un involucro costa anche un componente. Due ascoltatori e due file di configurazione significano due punti di guasto, ed entrambi appaiono identici dal posto dell’utente. Mettilo in budget prima di adottarne uno. La sessione resta un unico flusso cifrato di lunga durata verso una destinazione, e il suo volume e la sua tempistica restano visibili.

Prima diagnosticare, poi scegliere

Quindi prima diagnostichi. L’UDP scartato si risolve con la modalità TCP, e una firma riconosciuta si risolve con un altro protocollo o un involucro. Scegliere uno strumento prima di conoscere il blocco è il modo in cui si finisce a mantenere tre livelli che falliscono tutti per lo stesso motivo.

Una rete che consente solo porte web restringe la scelta a un protocollo basato su TLS sulla 443. Applicare tutti e tre insieme dà uno stack che nessuno può eseguire il debug, quindi cambi una cosa e ritesti lo stesso flusso.

Se nessuno si applica, la risposta accurata è che questa rete non trasporterà un tunnel per lei. È un riscontro e non un fallimento dello sforzo. Passare per più opzioni non inverte una decisione politica presa più a monte.

Un confine sta davanti a tutto questo. Il permesso di eseguire un tunnel sulla rete di qualcun altro è una questione politica, decisa separatamente dal fatto che il meccanismo funzioni. Questi fatti spiegano ciò che un osservatore vede e non concedono alcun permesso.

Articoli correlati