Perché l'indirizzo del tuo tunnel VPN non apre una porta in entrata
Un indirizzo di tunnel identifica il tuo client verso i peer che possono instradare verso di esso e non crea mai un listener. Controlla il binding, la rotta di ritorno e poi la policy.
Connettiti alla VPN dell'ufficio, avvia un piccolo servizio sulla porta 8443, invia l'indirizzo del tunnel a un collega e osserva la connessione fallire mentre il client continua a segnalare che è connesso. Nulla è rotto nel tunnel: l'indirizzo è stato assegnato, la sessione è attiva e i pacchetti che porterebbero la risposta semplicemente non vengono mai ammessi. Esegui i tre controlli qui sotto in ordine e fermati su quello che fallisce, perché ognuno ha una correzione diversa e solo uno di essi riguarda la VPN.
Inizia da dove il socket è realmente associato
Prima che qualcosa venga instradato, qualcosa deve ascoltare su un indirizzo che il chiamante possa raggiungere. I server di sviluppo sono il colpevole abituale, perché molti si associano per impostazione predefinita a loopback e accettano solo connessioni che provengono dalla stessa macchina. Un indirizzo di tunnel non cambia questa associazione, e il sistema operativo rifiuterà la connessione molto prima che la VPN entri in gioco.
ss -ltnp | grep 8443
netstat -ano | findstr 8443
Leggi la colonna dell'indirizzo locale invece dello stato. 127.0.0.1:8443 significa solo loopback, e la correzione è un binding su 0.0.0.0 o sull'indirizzo del tunnel stesso. 0.0.0.0:8443 accetta su tutte le interfacce, il che è più ampio di quanto la maggior parte delle persone intenda quando la macchina ha anche un indirizzo pubblico; 10.64.7.15:8443 è la versione ristretta che ascolta solo dove il collega può arrivare. Nota anche il nome del processo nello stesso output, perché un'istanza rimasta da un test precedente è una causa comune di porta che sembra aperta e risponde con il contenuto sbagliato.
Poi chiedi se qualcosa può instradare verso quell'indirizzo
Un indirizzo di tunnel ha senso solo per i peer configurati per inviare quel prefisso nel tunnel. La macchina del collega ha la propria tabella e, se non ha una rotta per la sottorete del tunnel, il pacchetto va al gateway predefinito e muore in un luogo che non ha idea che l'indirizzo esista. È una questione di instradamento dal lato del chiamante, non un permesso dal tuo lato.
| Symptom from the caller | What it usually means | Where to look next |
|---|---|---|
| Connection refused immediately | Nothing is listening on the address the packet reached | The bind address and the process owning the port |
| Connection times out with no reply | A policy dropped the packet, or no route returns | Server forwarding, host firewall, cloud security group |
| Works from the same machine only | Listener is on loopback, or no route reaches the tunnel address | Bind address, then the caller's route to that prefix |
Il server tra i due client conta altrettanto. Nel design abituale dell'accesso remoto ogni client apre una connessione in uscita verso il gateway e il gateway conserva lo stato di quei flussi, così le risposte tornano su un percorso che già conosce. Una connessione da un client a un altro è un nuovo flusso che il gateway deve accettare e inoltrare, e molte installazioni lo disattivano deliberatamente per mantenere i client isolati tra loro. I servizi VPN consumer isolano di norma per impostazione predefinita; i gateway aziendali a volte lo consentono per gruppo.
Controlla la direzione prima di cambiare qualcosa sull'host. Se l'indirizzo del tunnel risponde dal gateway stesso ma non da un peer, la differenza è l'impostazione client-to-client del gateway, e nessuna modifica al firewall locale può sostituirla.
Infine, trova la policy che consente il flusso
Tre livelli di policy stanno tra un pacchetto instradato e un servizio che risponde: la decisione di inoltro del server VPN, il firewall dell'host e qualsiasi gruppo di sicurezza cloud davanti all'istanza. Tutti e tre devono essere d'accordo, e falliscono in modi diversi, per questo il sintomo nella tabella sopra è più utile del messaggio di errore nel browser.
Il firewall dell'host è il livello che si dimentica dopo un binding riuscito, perché una regola che consente la porta sull'interfaccia LAN non la consente automaticamente sull'interfaccia del tunnel. Le regole limitate all'interfaccia sono un design corretto e anche la causa abituale di un servizio che funziona dall'ufficio e non da casa. Leggi l'ambito della regola, non il suo numero di porta.
Il filtraggio con stato spiega il caso inverso. Una connessione in uscita dal tuo portatile crea stato, e le risposte vengono ammesse senza una regola in entrata. La connessione del collega è un flusso del tutto nuovo senza stato dietro, quindi richiede un'autorizzazione esplicita. Questa asimmetria è l'intera ragione per cui una sessione del browser che funziona sulla tua macchina non dice nulla sulla raggiungibilità del servizio dall'esterno.
Quando un controllo fallisce, cambia il design invece del tunnel
Se il requisito è che un collega apra il tuo servizio locale, la risposta onesta è di solito un meccanismo costruito per l'accesso in entrata. Un tunnel SSH inverso è il più piccolo: la tua macchina si connette in uscita verso un host che il collega può già raggiungere, e il listener esiste su quell'host.
ssh -N -R 8443:127.0.0.1:8443 [email protected]
Il relay ha bisogno di GatewayPorts clientspecified nella configurazione del suo server SSH, altrimenti il listener inoltrato si associa a loopback sul relay e il collega incontra lo stesso rifiuto di prima. Per qualsiasi cosa che duri più di un pomeriggio, un bilanciatore di carico o un ingress con controllo di salute e certificato per il nome pubblicato è lo strumento migliore, e un tunnel site-to-site con rotte per entrambe le sottoreti è la risposta giusta quando due reti devono davvero parlarsi.
Ognuno di questi design rende esplicita l'esposizione, e questo è il punto. Una VPN sposta pacchetti tra reti per cui eri già autorizzato; non pubblica un servizio e non trasforma un portatile in un host esposto a internet. Decidere quale dei tre livelli cambiare è il compito, e il tunnel raramente è uno di essi.