Cosa succede durante le connessioni all'interno e all'esterno del tunnel VPN

Dalle lettere al servizio di supporto tecnico di Tucha nascono veri articoli. Recentemente, un cliente ci ha contattato per chiarire cosa accade durante le connessioni all'interno di un tunnel VPN tra l'ufficio dell'utente e l'ambiente cloud, nonché durante le connessioni esterne al tunnel VPN. Pertanto, tutto il testo riportato di seguito è una vera lettera che abbiamo inviato a uno dei clienti in risposta alla sua domanda. Certamente, abbiamo modificato gli indirizzi IP per non de-anonimizzare il cliente. Ma sì, il servizio tecnico di Tucha è davvero noto per le sue risposte dettagliate e le lettere informative. 🙂

Certo, comprendiamo che per molti questo articolo non rappresenterà una novità. Tuttavia, dato che su Habr vengono pubblicati articoli di tanto in tanto per i nuovi amministratori, e poiché questo articolo è nato da una vera lettera inviata a un cliente reale, vogliamo comunque condividere queste informazioni anche qui. Esiste una grande probabilità che a qualcuno possa risultare utile.
Pertanto, spieghiamo dettagliatamente cosa succede tra il server nel cloud e l'ufficio, se sono collegati tramite una rete site-to-site. Notiamo che in questo caso alcuni servizi sono accessibili solo dall'ufficio, mentre altri sono accessibili da qualsiasi luogo su Internet.

Spieghiamo subito che il nostro cliente ha desiderato che sul server 192.168.A.1 si potesse accedere da qualsiasi luogo tramite RDP, collegandosi a A.A.A.2:13389, mentre agli altri servizi solo dall'ufficio (192.168.B.0/24), collegato tramite VPN. Inoltre, il cliente aveva inizialmente impostato che alla macchina 192.168.B.2 in ufficio si potesse accedere tramite RDP da qualsiasi luogo, collegandosi a B.B.B.1:11111. Abbiamo aiutato a organizzare connessioni IPSec tra il cloud e l'ufficio, e lo specialista IT del cliente ha iniziato a porre domande su cosa accadrà in vari casi. Per rispondere a tutte queste domande, abbiamo effettivamente scritto tutto ciò che potete leggere di seguito.

Cosa succede durante le connessioni all'interno e all'esterno del tunnel VPN

E ora esaminiamo questi processi più nel dettaglio.

Posizione prima

Quando qualcosa viene inviato da 192.168.B.0/24 in 192.168.A.0/24 o da 192.168.A.0/24 in 192.168.B.0/24, esso entra nel VPN. Questo significa che questo pacchetto viene ulteriormente crittografato e trasmesso tra B.B.B.1 e A.A.A.1, ma 192.168.A.1 riceve il pacchetto proprio da 192.168.B.1. Possono comunicare tra loro tramite qualsiasi protocollo. Le risposte inverse sono trasmesse allo stesso modo attraverso il VPN, quindi il pacchetto da 192.168.A.1 per 192.168.B.1 verrà inviato come datagramma ESP da A.A.A.1 in B.B.B.1, che dall'altra parte il router decomprimerà, estrarrà quel pacchetto e lo consegnerà a 192.168.B.1 come pacchetto da 192.168.A.1.

Un esempio concreto:

1) 192.168.B.1 si riferisce a 192.168.A.1, desidera stabilire una connessione TCP con 192.168.A.1:3389;

2) 192.168.B.1 invia una richiesta per stabilire una connessione da 192.168.B.1:55555 (il numero di porta per il feedback lo sceglie da solo; qui e in seguito utilizzeremo il numero 55555 come esempio di numero di porta scelto dal sistema durante la formazione della connessione TCP) su 192.168.A.1:3389;

3) il sistema operativo che gira sul computer con indirizzo 192.168.B.1, decide di trasmettere questo pacchetto all'indirizzo gateway del router (192.168.B.254 nel nostro caso), poiché non ci sono altre rotte più specifiche per 192.168.A.1, quindi trasmette il pacchetto tramite la rotta predefinita (0.0.0.0/0);

4) per questo cerca l'indirizzo MAC per l'indirizzo IP 192.168.B.254 nella tabella di cache del protocollo ARP. Se non viene trovato, invia da 192.168.B.1 una richiesta broadcast who-has alla rete 192.168.B.0/24. Quando 192.168.B.254 risponde inviando il suo indirizzo MAC, il sistema trasmette un pacchetto Ethernet per esso e registra queste informazioni nella propria tabella di cache;

5) il router riceve questo pacchetto e decide dove inviarlo: ha politiche secondo cui deve inoltrare tutti i pacchetti tra 192.168.B.0/24 e 192.168.A.0/24 trasmettere tramite una connessione VPN tra B.B.B.1 e A.A.A.1;

6) il router forma un datagramma ESP da B.B.B.1 in A.A.A.1;

7) il router decide a chi trasmettere questo pacchetto, lo invia a, diciamo, B.B.B.254 (gateway del fornitore di servizi Internet), poiché non ha rotte più specifiche verso A.A.A.1, rispetto a 0.0.0.0/0;

8) esattamente come già detto, trova l'indirizzo MAC per B.B.B.254 e trasmette il pacchetto al gateway del fornitore di servizi Internet;

9) i fornitori di servizi Internet trasmettono attraverso le loro reti il datagramma ESP da B.B.B.1 in A.A.A.1;

10) il router virtuale su A.A.A.1 riceve questo datagramma, lo decripta e ottiene il pacchetto da 192.168.B.1:55555 per 192.168.A.1:3389;

11) il router virtuale controlla a chi inviarlo, trova nella tabella di routing la rete 192.168.A.0/24 e lo invia direttamente a 192.168.A.1, poiché ha un'interfaccia 192.168.A.254/24;

12) per questo il router virtuale trova l'indirizzo MAC per 192.168.A.1 e gli trasmette questo pacchetto attraverso una rete Ethernet virtuale;

13) 192.168.A.1 riceve questo pacchetto sulla porta 3389, accetta di stabilire una connessione e forma un pacchetto in risposta da 192.168.A.1:3389 in 192.168.B.1:55555;

14) il suo sistema trasmette questo pacchetto all'indirizzo gateway del router virtuale (192.168.A.254 nel nostro caso), poiché non ci sono altre rotte più specifiche per 192.168.B.1, non ha, quindi deve trasmettere il pacchetto tramite la rotta predefinita (0.0.0.0/0);

15) come nei casi precedenti, il sistema che gira sul server con indirizzo 192.168.A.1, trova l'indirizzo MAC 192.168.A.254, poiché si trova nella stessa rete della sua interfaccia 192.168.A.1/24;

16) il router virtuale riceve questo pacchetto e decide dove inviarlo: ha una politica secondo cui deve gestire tutti i pacchetti tra 192.168.A.0/24 e 192.168.B.0/24 trasmettere tramite una connessione VPN tra A.A.A.1 e B.B.B.1;

17) il router virtuale crea un datagramma ESP da A.A.A.1 per B.B.B.1;

18) il router virtuale decide a chi inviare questo pacchetto, spedendolo a A.A.A.254 (il gateway del fornitore di servizi Internet, in questo caso, siamo noi), perché non ci sono route più specifiche per B.B.B.1, rispetto a 0.0.0.0/0;

19) i fornitori di servizi Internet inoltrano il datagramma ESP attraverso le loro reti A.A.A.1 in B.B.B.1;

20) il router su B.B.B.1 riceve questo datagramma, lo decripta e ottiene il pacchetto da 192.168.A.1:3389 per 192.168.B.1:55555;

21) capisce che deve inviarlo proprio a 192.168.B.1, poiché si trova nella stessa rete, quindi ha nella sua tabella di routing una corrispondente voce che lo obbliga a inviare pacchetti per tutto 192.168.B.0/24 direttamente;

22) il router trova l'indirizzo MAC di 192.168.B.1 e gli invia questo pacchetto;

23) il sistema operativo del computer con l'indirizzo 192.168.B.1 riceve il pacchetto da 192.168.A.1:3389 per 192.168.B.1:55555 e avvia i passaggi successivi per stabilire una connessione TCP.

In questo esempio è stato descritto in modo piuttosto conciso e semplificato (e qui si potrebbero ricordare molti altri dettagli) cosa succede ai livelli 2-4. I livelli 1, 5-7 non sono stati trattati.

Posizione seconda

Se a 192.168.B.0/24 qualcosa viene inviato proprio a A.A.A.2, va non in VPN, ma direttamente. Quindi, se un utente dall'indirizzo 192.168.B.1 si riferisce a A.A.A.2:13389, questo pacchetto viene inviato dall'indirizzo B.B.B.1, passa a A.A.A.2, e lì il router lo riceve e lo inoltra a 192.168.A.1. 192.168.A.1 non sa nulla di 192.168.B.1, vede un pacchetto da B.B.B.1, poiché è stato inviato da esso. Pertanto, la risposta a questa richiesta segue il percorso normale, viene anch'essa inviata dall'indirizzo A.A.A.2 e va a B.B.B.1, e quel router restituisce questa risposta a 192.168.B.1, lì vede la risposta da A.A.A.2, a cui si era rivolto.

Un esempio concreto:

1) 192.168.B.1 si riferisce a A.A.A.2, desidera stabilire una connessione TCP con A.A.A.2:13389;

2) 192.168.B.1 invia una richiesta per stabilire una connessione da 192.168.B.1:55555 (questo numero, come nel precedente esempio, potrebbe essere diverso) su A.A.A.2:13389;

3) il sistema operativo che gira sul computer con indirizzo 192.168.B.1, decide di trasmettere questo pacchetto all'indirizzo gateway del router (192.168.B.254 nel nostro caso), poiché non ci sono altre rotte più specifiche per A.A.A.2, non ce l'ha, il che significa che invia il pacchetto lungo il percorso di default (0.0.0.0/0);

4) per fare ciò, come abbiamo menzionato nel precedente esempio, cerca di trovare l'indirizzo MAC per l'indirizzo IP 192.168.B.254 nella tabella di cache del protocollo ARP. Se non viene trovato, invia da 192.168.B.1 una richiesta broadcast who-has alla rete 192.168.B.0/24. Quando 192.168.B.254 risponde inviando il suo indirizzo MAC, il sistema trasmette un pacchetto Ethernet per esso e registra queste informazioni nella propria tabella di cache;

5) il router riceve questo pacchetto e decide dove inoltrarlo: ha una politica secondo cui deve inviare (sostituendo l'indirizzo di ritorno) tutti i pacchetti da 192.168.B.0/24 ad altri nodi della rete Internet;

6) poiché questa politica implica che l'indirizzo di ritorno debba corrispondere all'indirizzo secondario sull'interfaccia tramite la quale verrà trasmesso questo pacchetto, il router prima decide a chi deve effettivamente inviare questo pacchetto, e, come nell'esempio precedente, deve inviarlo a B.B.B.254 (gateway del fornitore di servizi Internet), poiché non ha rotte più specifiche verso A.A.A.2, rispetto a 0.0.0.0/0;

7) quindi, il router sostituisce l'indirizzo di ritorno del pacchetto, d'ora in poi il pacchetto da B.B.B.1:44444 (il numero della porta, ovviamente, può essere diverso) su A.A.A.2:13389;

8) il router si ricorda di ciò che ha fatto, quindi, quando da A.A.A.2:13389 al B.B.B.1:44444 arriva una risposta, saprà che deve cambiare l'indirizzo e la porta del destinatario in 192.168.B.1:55555.

9) ora il router deve inviarlo alla rete del provider Internet attraverso B.B.B.254, quindi, proprio come abbiamo già menzionato, trova l'indirizzo MAC di B.B.B.254 e trasmette il pacchetto al gateway del fornitore di servizi Internet;

10) i provider Internet trasmettono attraverso le loro reti il pacchetto da B.B.B.1 in A.A.A.2;

11) il router virtuale su A.A.A.2 riceve questo pacchetto sulla porta 13389;

12) sul router virtuale c'è una regola che prevede che i pacchetti ricevuti da qualsiasi mittente su questa porta devono essere inviati a 192.168.A.1:3389;

13) il router virtuale trova nella tabella di routing la rete 192.168.A.0/24 e lo invia direttamente a 192.168.A.1, poiché ha un'interfaccia 192.168.A.254/24;

14) per questo il router virtuale trova l'indirizzo MAC di 192.168.A.1 e gli trasmette questo pacchetto attraverso una rete Ethernet virtuale;

15) 192.168.A.1 riceve questo pacchetto sulla porta 3389, accetta di stabilire una connessione e forma un pacchetto in risposta da 192.168.A.1:3389 in B.B.B.1:44444;

16) il suo sistema trasmette questo pacchetto all'indirizzo gateway del router virtuale (192.168.A.254 nel nostro caso), poiché non ci sono altre rotte più specifiche per B.B.B.1, non ha, quindi deve trasmettere il pacchetto tramite la rotta predefinita (0.0.0.0/0);

17) proprio come nei casi precedenti, il sistema che opera su un server con indirizzo 192.168.A.1, trova l'indirizzo MAC 192.168.A.254, poiché si trova nella stessa rete della sua interfaccia 192.168.A.1/24;

18) il router virtuale riceve questo pacchetto. Va notato che ricorda di aver ricevuto da A.A.A.2:13389 un pacchetto da B.B.B.1:44444 e ha cambiato il suo indirizzo e la porta del destinatario a 192.168.A.1:3389, quindi, il pacchetto da 192.168.A.1:3389 per B.B.B.1:44444 cambia l'indirizzo del mittente a A.A.A.2:13389;

19) il router virtuale decide a chi inviare questo pacchetto, lo invia a A.A.A.254 (il gateway del fornitore di servizi Internet, in questo caso, siamo noi), perché non ci sono route più specifiche per B.B.B.1, rispetto a 0.0.0.0/0;

20) i provider Internet trasmettono attraverso le loro reti il pacchetto con A.A.A.2 in B.B.B.1;

21) il router su B.B.B.1 riceve questo pacchetto e ricorda che, quando ha inviato il pacchetto da 192.168.B.1:55555 per A.A.A.2:13389, ha cambiato il suo indirizzo e la porta del mittente a B.B.B.1:44444, quindi, questa è una risposta da inviare a 192.168.B.1:55555 (in realtà ci sono anche alcuni altri controlli, ma non approfondiamo questo);

22) comprende che deve essere inviato direttamente a 192.168.B.1, poiché si trova nella stessa rete, quindi, ha nella tabella di routing la voce corrispondente che costringe a inviare pacchetti per tutta la 192.168.B.0/24 direttamente;

23) il router trova l'indirizzo MAC per 192.168.B.1 e gli invia questo pacchetto;

24) il sistema operativo sul computer con indirizzo 192.168.B.1 riceve il pacchetto da A.A.A.2:13389 per 192.168.B.1:55555 e avvia i passaggi successivi per stabilire una connessione TCP.

Si noti che in questo caso il computer con indirizzo 192.168.B.1 non sa nulla del server con indirizzo 192.168.A.1, comunica solo con A.A.A.2. Allo stesso modo, il server con indirizzo 192.168.A.1 non sa nulla del computer con indirizzo 192.168.B.1. Crede che si sia connessi da indirizzo B.B.B.1, e non sa nient'altro, così da dire.

Va inoltre notato che se questo computer si connette a A.A.A.2:1540, la connessione non verrà stabilita perché il port forwarding sulla porta 1540 non è configurato sul router virtuale, anche se su alcuni server nella rete virtuale 192.168.A.0/24 (ad esempio, sul server con indirizzo 192.168.A.1) ci sono servizi in attesa di connessioni su questa porta. Se per l'utente del computer con indirizzo 192.168.B.1 è assolutamente necessario stabilire una connessione con questo servizio, deve utilizzare un VPN, cioè contattare direttamente 192.168.A.1:1540.

Va sottolineato che qualsiasi tentativo di stabilire una connessione con A.A.A.1 (tranne la connessione IPSec da parte di B.B.B.1 ) non avrà successo. Qualsiasi tentativo di stabilire connessioni con A.A.A.2, oltre alle connessioni sulla porta 13389, non avrà successo.
Si noti inoltre che se a A.A.A.2 si connette qualcun altro (ad esempio, C.C.C.C), tutto ciò che è stato definito nei punti 10-20 riguarderà anche lui. Cosa succede prima e dopo dipende da cosa si trova dietro a questo C.C.C.C. Non abbiamo queste informazioni, quindi consigliamo di contattare gli amministratori del nodo con indirizzo C.C.C.C.

Posizione terza

E, viceversa, se qualcosa viene inviato a una porta configurata per il forwarding interno su B.B.B.1 (ad esempio, 11111), non entra nemmeno nel VPN, ma viene semplicemente inoltrato da 192.168.A.1 e arriva a A.A.A.1 , il quale poi lo invia da qualche parte in, diciamo, B.B.B.1192.168.B.2:3389 . Quello vede questo pacchetto non da, ma da 192.168.A.1. E, quando A.A.A.1risponde, il pacchetto proviene da 192.168.B.2 A.A.A.1, B.B.B.1 in e successivamente arriva all'iniziale della connessione — 192.168.A.1:55555 192.168.A.1.

Un esempio concreto:

1) 192.168.A.1 si riferisce a B.B.B.1, desidera stabilire una connessione TCP con B.B.B.1:11111;

2) 192.168.A.1 invia una richiesta per stabilire una connessione da 3) il sistema operativo che funziona sul server con indirizzo (questo numero, come nel precedente esempio, potrebbe essere diverso) su B.B.B.1:11111;

4) per questo, come abbiamo già accennato negli esempi precedenti, cerca di trovare l'indirizzo MAC per l'indirizzo IP 192.168.A.1, decide di trasmettere questo pacchetto all'indirizzo gateway del router (192.168.A.254 nel nostro caso), poiché non ci sono altre rotte più specifiche per B.B.B.1, quindi trasmette il pacchetto tramite la rotta predefinita (0.0.0.0/0);

risponde inviandole il proprio indirizzo MAC, il sistema invia un pacchetto Ethernet a lui e memorizza queste informazioni nella sua tabella di cache; 192.168.A.254 nella tabella di cache del protocollo ARP. Se non viene trovato, invia da 192.168.A.1 una richiesta broadcast who-has alla rete 192.168.A.0/24. Quando 192.168.A.254 in risposta invia il proprio indirizzo MAC, il sistema trasferisce il pacchetto Ethernet per lui e registra queste informazioni nella sua tabella di cache;

5) Il router virtuale riceve questo pacchetto e decide dove inviarlo: ha una politica secondo la quale deve sostituire (cambiando l'indirizzo di ritorno) tutti i pacchetti da 192.168.A.0/24 ad altri nodi della rete Internet;

6) poiché questa politica prevede che l'indirizzo di ritorno debba corrispondere all'indirizzo più basso sull'interfaccia attraverso cui verrà inviato questo pacchetto, il router virtuale decide prima a chi inviare questo pacchetto, e, come nel precedente esempio, deve inviarlo a A.A.A.254 (il gateway del fornitore di servizi Internet, in questo caso, siamo noi), perché non ci sono route più specifiche per B.B.B.1, rispetto a 0.0.0.0/0;

7) pertanto, il router virtuale sostituisce l'indirizzo di ritorno del pacchetto, ora è un pacchetto da A.A.A.1:44444 (il numero della porta, ovviamente, può essere diverso) su B.B.B.1:11111;

8) Il router virtuale ricorda cosa ha fatto, quindi, quando da B.B.B.1:11111 per A.A.A.1:44444 arriva una risposta, saprà che deve cambiare l'indirizzo e la porta del destinatario in 3) il sistema operativo che funziona sul server con indirizzo.

9) ora il router virtuale deve trasmetterlo alla rete del provider Internet attraverso A.A.A.254, quindi, proprio come abbiamo già menzionato, trova l'indirizzo MAC per A.A.A.254 e trasmette il pacchetto al gateway del fornitore di servizi Internet;

10) i provider Internet trasmettono attraverso le loro reti il pacchetto da A.A.A.1 su B.B.B.1;

11) il router su B.B.B.1 riceve questo pacchetto sulla porta 11111;

12) sul router virtuale esiste una regola che prevede che i pacchetti ricevuti da un qualsiasi mittente su questa porta debbano essere inviati a . Quello vede questo pacchetto non da;

13) il router trova nella tabella di routing la rete 192.168.B.0/24 e lo invia direttamente a 192.168.B.2, poiché ha un'interfaccia 192.168.B.254/24;

14) per questo il router virtuale trova l'indirizzo MAC di 192.168.B.2 e gli trasmette questo pacchetto attraverso una rete Ethernet virtuale;

15) 192.168.B.2 riceve questo pacchetto sulla porta 3389, accetta di stabilire una connessione e forma un pacchetto in risposta da . Quello vede questo pacchetto non da in A.A.A.1:44444;

16) il suo sistema invia questo pacchetto all'indirizzo di gateway del router (192.168.B.254 nel nostro caso), poiché non ci sono altre rotte più specifiche per A.A.A.1, non ha, quindi deve trasmettere il pacchetto tramite la rotta predefinita (0.0.0.0/0);

17) proprio come nei casi precedenti, il sistema che opera sul computer con indirizzo 192.168.B.2, trova l'indirizzo MAC 192.168.B.254, poiché si trova nella stessa rete della sua interfaccia 192.168.B.2/24;

18) Il router riceve questo pacchetto. È importante notare che ricorda di aver ricevuto su B.B.B.1:11111 un pacchetto da A.A.A.1 e ha cambiato il suo indirizzo e la porta del destinatario a . Quello vede questo pacchetto non da, quindi, il pacchetto da . Quello vede questo pacchetto non da per A.A.A.1:44444 cambia l'indirizzo del mittente a B.B.B.1:11111;

19) il router decide a chi inviare questo pacchetto. Lo invia a, diciamo, B.B.B.254 (gateway del provider Internet, il cui indirizzo preciso non conosciamo), perché non ci sono percorsi più specifici verso A.A.A.1, rispetto a 0.0.0.0/0;

20) i provider Internet trasmettono attraverso le loro reti il pacchetto con B.B.B.1 in A.A.A.1;

21) il router virtuale su A.A.A.1 riceve questo pacchetto e ricorda che, quando ha inviato il pacchetto da 3) il sistema operativo che funziona sul server con indirizzo per B.B.B.1:11111, ha cambiato il suo indirizzo e la porta del mittente a A.A.A.1:44444. Quindi, questa è la risposta che deve essere inviata a 3) il sistema operativo che funziona sul server con indirizzo (in realtà, come abbiamo già menzionato nel precedente esempio, ci sono anche ulteriori controlli, ma anche stavolta non approfondiremo);

22) comprende che deve essere inviato direttamente a 192.168.A.1, poiché si trova nella stessa rete, significa che ha una voce corrispondente nella tabella di routing che lo obbliga a inviare pacchetti per tutto il 192.168.A.0/24 direttamente;

23) il router trova l'indirizzo MAC per 192.168.A.1 e gli invia questo pacchetto;

24) il sistema operativo sul server con indirizzo 192.168.A.1 riceve il pacchetto da B.B.B.1:11111 per 3) il sistema operativo che funziona sul server con indirizzo e avvia i passaggi successivi per stabilire una connessione TCP.

Allo stesso modo, come nel caso precedente, in questo caso il server con indirizzo 192.168.A.1 non sa nulla del computer con indirizzo 192.168.B.1, comunica solo con B.B.B.1. Il computer con indirizzo 192.168.B.1 non sa nulla del server con indirizzo 192.168.A.1. Crede che si sia connessi da indirizzo A.A.A.1, ma il resto è nascosto.

Conclusione

Ecco come avviene tutto durante le connessioni all'interno del tunnel VPN tra l'ufficio del cliente e l'ambiente cloud, così come durante le connessioni al di fuori del tunnel VPN. Se hai ancora domande o hai bisogno del nostro aiuto per risolvere problemi legati al cloud, contattaci 24 ore su 24, 7 giorni su 7.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster