Dalle email al servizio di assistenza Tucha nascono articoli reali. Recentemente, un cliente ci ha contattato per ottenere chiarimenti su cosa succede durante le connessioni all'interno del tunnel VPN tra l'ufficio dell'utente e l'ambiente cloud, nonché durante le connessioni al di fuori del tunnel VPN. Pertanto, tutto il testo riportato di seguito è una vera email che abbiamo inviato a uno dei clienti in risposta alla sua domanda. Naturalmente, abbiamo modificato gli indirizzi IP per non de-anonimizzare il cliente. Ma sì, il servizio di supporto tecnico di Tucha è davvero rinomato per le sue risposte dettagliate e le email informative. 🙂
Certo, comprendiamo che per molti questo articolo non sarà una rivelazione. Tuttavia, poiché su Habr appaiono di tanto in tanto articoli per amministratori principianti e dato che questo articolo è emerso da una vera email a un cliente reale, vogliamo comunque condividere queste informazioni anche qui. È molto probabile che siano utili a qualcuno.
Pertanto, spieghiamo in dettaglio cosa accade tra il server cloud e l'ufficio quando sono collegati tramite una rete site-to-site. È importante notare che alcuni servizi sono disponibili solo dall'ufficio, mentre altri possono essere accessibili da qualsiasi luogo tramite Internet.
Spieghiamo immediatamente che il nostro cliente desiderava che sul server 192.168.A.1 si potesse accedere da qualsiasi luogo tramite RDP, collegandosi a A.A.A.2:13389, mentre per gli altri servizi l'accesso è consentito solo dall'ufficio (192.168.B.0/24), connesso tramite VPN. Inoltre, il cliente aveva configurato in origine che al sistema 192.168.B.2 nell'ufficio si potesse accedere via RDP da qualsiasi luogo, collegandosi a B.B.B.1:11111. Abbiamo assistito nell'organizzazione di connessioni IPSec tra il cloud e l'ufficio, e l'IT specialist del cliente ha iniziato a porre domande su cosa accadrà in vari casi. Per rispondere a tutte queste domande, abbiamo redatto il testo che potete leggere di seguito.

Ora esaminiamo questi processi in modo più dettagliato.
Posizione uno
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, viene inserito nel VPN. Cioè, il pacchetto viene ulteriormente crittografato e trasmesso tra B.B.B.1 e A.A.A.1, ma 192.168.A.1 vede il pacchetto proveniente da 192.168.B.1. Possono comunicare tra loro utilizzando qualsiasi protocollo. Le risposte di ritorno vengono anch'esse trasmesse tramite VPN, quindi il pacchetto da 192.168.A.1 per 192.168.B.1 sarà inviato come datagramma ESP da A.A.A.1 con B.B.B.1, che dall'altra parte il router decodificherà, estraendo il pacchetto e consegnandolo 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 invio di una richiesta di connessione da 192.168.B.1:55555 (il numero di porta per il feedback è scelto autonomamente, qui e in seguito utilizzeremo il numero 55555 come esempio di tale numero di porta che il sistema sceglie quando forma una connessione TCP) a 192.168.A.1:3389;
3) il sistema operativo, che gira su un computer con indirizzo 192.168.B.1, decide di inviare questo pacchetto all'indirizzo gateway del router (192.168.B.254 nel nostro caso), poiché non ci sono altri percorsi più specifici per 192.168.A.1, pertanto invia il pacchetto tramite il percorso predefinito (0.0.0.0/0);
4) per questo 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 dall'indirizzo 192.168.B.1 una richiesta who-has di broadcast alla rete 192.168.B.0/24. Quando 192.168.B.254 In risposta, invia il proprio indirizzo MAC, il sistema trasmette un pacchetto Ethernet per lui e memorizza queste informazioni nella sua tabella di cache;
5) il router riceve questo pacchetto e decide dove inoltrarlo: ha una politica che prevede di inviare tutti i pacchetti tra 192.168.B.0/24 e 192.168.A.0/24 trasmettendo tramite una connessione VPN tra B.B.B.1 e A.A.A.1;
6) il router genera un datagramma ESP da B.B.B.1 con A.A.A.1;
7) il router decide a chi inviare questo pacchetto, lo invia a, ad esempio, B.B.B.254 (gateway del provider Internet) perché non ha percorsi più specifici verso A.A.A.1, diverso da 0.0.0.0/0;
8) proprio come detto in precedenza, trova l'indirizzo MAC per B.B.B.254 e invia il pacchetto al gateway del provider Internet;
9) i provider Internet trasmettono nei loro network il datagramma ESP da B.B.B.1 con A.A.A.1;
10) il router virtuale su A.A.A.1 riceve questo datagramma, lo decifra e ottiene un 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 con 192.168.B.1:55555;
14) il suo sistema inoltra questo pacchetto all'indirizzo del gateway del router virtuale (192.168.A.254 nel nostro caso), poiché non ci sono altri percorsi più specifici per 192.168.B.1, non avendolo, deve quindi trasmettere il pacchetto attraverso il percorso predefinito (0.0.0.0/0);
15) proprio come nei casi precedenti, il sistema che opera 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 accetta questo pacchetto e decide a chi inviarlo: ha una politica secondo cui deve gestire tutti i pacchetti tra 192.168.A.0/24 e 192.168.B.0/24 trasmettendo tramite una connessione VPN tra A.A.A.1 e B.B.B.1;
17) il router virtuale forma un datagramma ESP da A.A.A.1 per B.B.B.1;
18) il router virtuale decide a chi inviare questo pacchetto, lo invia a A.A.A.254 (gateway del provider Internet, in questo caso, siamo sempre noi), perché non ci sono percorsi più specifici verso B.B.B.1, diverso da 0.0.0.0/0;
19) i provider Internet trasmettono attraverso le loro reti il datagramma ESP con A.A.A.1 con B.B.B.1;
20) il router su B.B.B.1 riceve questo datagramma, lo decifra e ottiene un pacchetto da 192.168.A.1:3389 per 192.168.B.1:55555;
21) capisce che deve essere trasmesso esattamente a 192.168.B.1, poiché è nella stessa rete, quindi ha una registrazione corrispondente nella tabella di instradamento che lo costringe a inviare pacchetti a tutta 192.168.B.0/24 direttamente;
22) il router trova l'indirizzo MAC per 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, in modo piuttosto conciso e semplificato (e qui si possono ricordare altri dettagli), viene descritto ciò che accade ai livelli 2-4. I livelli 1 e 5-7 non sono stati trattati.
Posizione seconda
Se con 192.168.B.0/24 qualcosa viene inviato precisamente a A.A.A.2, non va in VPN, ma direttamente. Cioè, se l'utente con l'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 invia a 192.168.A.1. 192.168.A.1 non sa nulla di 192.168.B.1, vede il pacchetto da B.B.B.1, poiché è stato inviato da lui. Pertanto, la risposta a questa richiesta segue il percorso principale, viene inviato dall'indirizzo A.A.A.2 e va verso B.B.B.1, e quel router restituisce questa risposta a 192.168.B.1, quel router 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 invio di una richiesta di connessione da 192.168.B.1:55555 (questo numero, come nel caso precedente, potrebbe essere diverso) su A.A.A.2:13389;
3) il sistema operativo, che gira su un computer con indirizzo 192.168.B.1, decide di inviare questo pacchetto all'indirizzo gateway del router (192.168.B.254 nel nostro caso), poiché non ci sono altri percorsi più specifici per A.A.A.2, non ha, e quindi inoltra il pacchetto tramite il percorso predefinito (0.0.0.0/0);
4) per questo, come abbiamo già accennato 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 dall'indirizzo 192.168.B.1 una richiesta who-has di broadcast alla rete 192.168.B.0/24. Quando 192.168.B.254 In risposta, invia il proprio indirizzo MAC, il sistema trasmette un pacchetto Ethernet per lui e memorizza queste informazioni nella sua tabella di cache;
5) il router riceve questo pacchetto e decide dove inoltrarlo: ha una politica nel quale deve modificare (sostituendo l'indirizzo di ritorno) tutti i pacchetti da 192.168.B.0/24 a altri nodi della rete Internet;
6) poiché questa politica implica che l'indirizzo di ritorno debba coincidere con il minor indirizzo sull'interfaccia attraverso cui sarà inoltrato questo pacchetto, il router prima decide a chi precisamente inoltrare questo pacchetto e, come nel precedente esempio, deve inviarlo a B.B.B.254 (gateway del provider Internet) perché non ha percorsi più specifici verso A.A.A.2, diverso da 0.0.0.0/0;
7) quindi, il router sostituisce l'indirizzo di ritorno del pacchetto, quindi il pacchetto da B.B.B.1:44444 (il numero di porta, ovviamente, può essere diverso) a A.A.A.2:13389;
8) il router ricorda ciò che ha fatto, così quando da A.A.A.2:13389 a B.B.B.1:44444 arriva una risposta, saprà che deve cambiare l'indirizzo e la porta del destinatario a 192.168.B.1:55555.
9) ora il router deve inoltrarlo al provider di servizi Internet tramite B.B.B.254, quindi, come abbiamo già menzionato, trova l'indirizzo MAC per B.B.B.254 e invia il pacchetto al gateway del provider Internet;
10) I fornitori di servizi internet trasmettono i pacchetti attraverso le loro reti da B.B.B.1 con 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 stabilisce che i pacchetti provenienti da qualsiasi mittente su questa porta devono essere trasmessi a 192.168.A.1:3389;
13) il router virtuale trova nella tabella di instradamento la rete 192.168.A.0/24 e lo invia direttamente 192.168.A.1, poiché ha un'interfaccia 192.168.A.254/24;
14) per questo, il router virtuale trova l'indirizzo MAC per 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 con B.B.B.1:44444;
16) il suo sistema invia questo pacchetto all'indirizzo gateway del router virtuale (192.168.A.254 nel nostro caso), poiché non ci sono altri percorsi più specifici per B.B.B.1, non avendolo, deve quindi trasmettere il pacchetto attraverso il percorso predefinito (0.0.0.0/0);
17) proprio come nei casi precedenti, il sistema che opera 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;
18) il router virtuale riceve questo pacchetto. Si noti che ricorda di aver ricevuto da A.A.A.2:13389 il pacchetto da B.B.B.1:44444 e ha cambiato l'indirizzo e la porta del destinatario a 192.168.A.1:3389, quindi, per 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 (gateway del provider Internet, in questo caso, siamo sempre noi), perché non ci sono percorsi più specifici verso B.B.B.1, diverso da 0.0.0.0/0;
20) i fornitori di servizi internet trasmettono attraverso le loro reti un pacchetto con A.A.A.2 con B.B.B.1;
21) il router su B.B.B.1 riceve questo pacchetto e ricorda che, quando ha trasmesso un pacchetto da 192.168.B.1:55555 per A.A.A.2:13389, ha cambiato il suo indirizzo e la porta del mittente in B.B.B.1:44444, quindi questa è la risposta che deve essere inviata a 192.168.B.1:55555 (in realtà, ci sono anche altri controlli, ma non ci addentriamo);
22) capisce che deve essere inviato direttamente a 192.168.B.1, poiché è nella stessa rete, di conseguenza, ha nel suo routing una registrazione corrispondente che costringe a inviare i pacchetti a tutta 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 l'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.
È importante notare che, in questo caso, il computer con l'indirizzo 192.168.B.1 non sa nulla del server con l'indirizzo 192.168.A.1, comunica solo con A.A.A.2. Allo stesso modo, il server con l'indirizzo 192.168.A.1 non sa nulla del computer con l'indirizzo 192.168.B.1. Considera che ci si è connessi dall'indirizzo B.B.B.1, e non sa nient'altro, per così dire.
Inoltre, va notato che nel caso in cui questo computer acceda 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 l'indirizzo 192.168.A.1) e ci sono alcuni servizi che aspettano connessioni su questa porta. Se l'utente del computer con indirizzo 192.168.B.1 deve assolutamente stabilire una connessione con questo servizio, deve utilizzare una VPN, cioè contattare direttamente 192.168.A.1:1540.
Va sottolineato che qualsiasi tentativo di stabilire una connessione con A.A.A.1 oltre alla connessione IPSec da B.B.B.1 non avrà successo. Qualsiasi tentativo di stabilire connessioni con A.A.A.2, tranne per le connessioni sulla porta 13389, non avrà successo.
Inoltre, osserviamo che nel caso in cui a A.A.A.2 si rivolga qualcun altro (ad esempio, C.C.C.C), tutto quanto indicato nei punti 10-20 riguarderà anche lui. Ciò che accade prima e dopo dipende da cosa si trova esattamente dietro questo C.C.C.C. Non abbiamo tali informazioni, quindi consigliamo di contattare gli amministratori del nodo con indirizzo C.C.C.C.
Posizione trois
E, viceversa, se da 192.168.A.1 viene inviato qualsiasi dato su una porta configurata per un forwarding interno su B.B.B.1 (ad esempio, 11111), esso non entra nella VPN, ma viene semplicemente inviato da A.A.A.1 e arriva a B.B.B.1, che poi lo invia da qualche parte a, diciamo, 192.168.B.2:3389. Quello vede questo pacchetto non da 192.168.A.1, ma da A.A.A.1. E, quando 192.168.B.2 risponde, il pacchetto proviene da B.B.B.1 con A.A.A.1, e successivamente arriva all'iniziatore della connessione — 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 invio di una richiesta di connessione da 192.168.A.1:55555 (questo numero, come nel caso precedente, potrebbe essere diverso) su B.B.B.1:11111;
3) sistema operativo che funziona su un server con indirizzo 192.168.A.1, decide di inviare questo pacchetto all'indirizzo gateway del router (192.168.A.254 nel nostro caso), poiché non ci sono altri percorsi più specifici per B.B.B.1, pertanto invia il pacchetto tramite il percorso predefinito (0.0.0.0/0);
4) per questo, come abbiamo menzionato nei precedenti esempi, cerca di trovare l'indirizzo MAC per l'indirizzo IP 192.168.A.254 nella tabella di cache del protocollo ARP. Se non viene trovato, invia dall'indirizzo 192.168.A.1 una richiesta who-has di broadcast alla rete 192.168.A.0/24. Quando 192.168.A.254 risponde inviandole il proprio indirizzo MAC, il sistema trasferisce il pacchetto Ethernet per esso e memorizza queste informazioni nella propria tabella di cache;
5) il router virtuale riceve questo pacchetto e decide dove inviarlo: ha una politica stabilita che prevede di modificare (sostituendo l'indirizzo di ritorno) tutti i pacchetti provenienti da 192.168.A.0/24 a altri nodi della rete Internet;
6) poiché questa politica prevede che l'indirizzo di ritorno debba coincidere con l'indirizzo inferiore sull'interfaccia attraverso la quale il pacchetto verrà inviato, il router virtuale decide prima a chi inviare questo pacchetto, e come nel precedente esempio, deve inviarlo a A.A.A.254 (gateway del provider Internet, in questo caso, siamo sempre noi), perché non ci sono percorsi più specifici verso B.B.B.1, diverso da 0.0.0.0/0;
7) quindi, il router virtuale modifica l'indirizzo di ritorno del pacchetto, da ora in poi questo pacchetto proviene da A.A.A.1:44444 (il numero di porta, ovviamente, può essere diverso) a B.B.B.1:11111;
8) il router virtuale ricorda ciò che ha fatto, pertanto, quando arriva 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 a 192.168.A.1:55555.
9) ora il router virtuale deve inoltrarlo alla rete del provider di servizi Internet tramite A.A.A.254, quindi, proprio come abbiamo già menzionato, trova l'indirizzo MAC per A.A.A.254 e invia il pacchetto al gateway del provider Internet;
10) I fornitori di servizi internet trasmettono i pacchetti attraverso le loro reti 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 qualsiasi mittente su questa porta debbano essere inoltrati a 192.168.B.2:3389;
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 per 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 192.168.B.2:3389 con A.A.A.1:44444;
16) il suo sistema inoltra questo pacchetto all'indirizzo gateway del router (192.168.B.254 nel nostro caso), poiché non ci sono altri percorsi più specifici per A.A.A.1, non avendolo, deve quindi trasmettere il pacchetto attraverso il percorso predefinito (0.0.0.0/0);
17) proprio come nei casi precedenti, il sistema che opera su un 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 accetta questo pacchetto. È importante notare che ricorda di aver ricevuto da B.B.B.1:11111 il pacchetto da A.A.A.1 e ha cambiato l'indirizzo e la porta del destinatario a 192.168.B.2:3389, quindi, per il pacchetto da 192.168.B.2:3389 per A.A.A.1:44444 cambia l'indirizzo del mittente a B.B.B.1:11111;
19) il router decide a chi inoltrare questo pacchetto. Lo invia a, diciamo, B.B.B.254 (gateway del provider di servizi Internet, il cui indirizzo esatto non conosciamo), poiché non ci sono percorsi più specifici verso A.A.A.1, diverso da 0.0.0.0/0;
20) i fornitori di servizi internet trasmettono attraverso le loro reti un pacchetto con B.B.B.1 con A.A.A.1;
21) il router virtuale su A.A.A.1 riceve questo pacchetto e ricorda che, quando ha trasmesso un pacchetto da 192.168.A.1:55555 per B.B.B.1:11111, ha cambiato il suo indirizzo e la porta del mittente in A.A.A.1:44444. Quindi, questa è la risposta che deve essere inviata a 192.168.A.1:55555 (in realtà, come abbiamo menzionato nell'esempio precedente, ci sono anche ulteriori controlli, ma anche questa volta non ci approfondiamo);
22) lui capisce che deve essere passato direttamente a 192.168.A.1, dato che si trova sulla stessa rete, quindi ha nella sua tabella di routing una corrispondente voce che lo costringe a inviare pacchetti per tutta la 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 192.168.A.1:55555 e avvia i passaggi successivi per stabilire una connessione TCP.
Proprio come nel caso precedente, in questo caso il server con indirizzo 192.168.A.1 non sa nulla del computer con l'indirizzo 192.168.B.1, comunica solo con B.B.B.1. Il computer con indirizzo 192.168.B.1 non sa nulla sul server con indirizzo 192.168.A.1. Considera che ci si è connessi dall'indirizzo A.A.A.1, mentre il resto è nascosto da esso.
Risultato
Ecco come funzionano le connessioni all'interno di un tunnel VPN tra l'ufficio del cliente e l'ambiente nel cloud, così come le connessioni al di fuori del tunnel VPN. E se avete ulteriori domande o avete bisogno del nostro aiuto nella risoluzione di problemi cloud,
Fonte: habr.com
