Que se passe-t-il lors de la connexion à l'intérieur et à l'extérieur d'un tunnel VPN

Des lettres au support technique de Tucha, ces articles sont nés. Ainsi, récemment, un client nous a contacté pour nous demander de clarifier ce qui se passe lors de la connexion à l'intérieur d'un tunnel VPN entre le bureau de l'utilisateur et l'environnement dans le cloud, ainsi que lors de la connexion à l'extérieur du tunnel VPN. Par conséquent, l'intégralité du texte ci-dessous est une vraie lettre que nous avons envoyée à l'un des clients en réponse à sa question. Bien sûr, nous avons changé les adresses IP afin de ne pas anonymiser le client. Mais, oui, le support technique de Tucha est vraiment célèbre pour ses réponses complètes et ses lettres d'information. :-)

Bien sûr, nous comprenons que pour beaucoup, cet article ne sera pas une révélation. Mais, puisque les articles pour les administrateurs débutants apparaissent de temps en temps sur Habr, et aussi parce que cet article est apparu d'une vraie lettre à un vrai client, nous partagerons toujours cette information ici. Il y a une forte probabilité qu'il soit utile à quelqu'un.
Par conséquent, nous expliquons en détail ce qui se passe entre le serveur dans le cloud et le bureau s'ils sont connectés par un réseau de site à site. Notez que dans ce cas, une partie des services n'est disponible qu'au bureau, et une partie - de n'importe où sur Internet.

Nous expliquerons immédiatement que notre client souhaitait pouvoir venir au serveur 192.168.A.1 de n'importe où via RDP, se connecter à AAA2: 13389 et à d'autres services - uniquement depuis le bureau (192.168.B.0 / 24) connecté via VPN En outre, le client a été initialement configuré pour que la machine 192.168.B.2 du bureau soit également accessible via RDP de n'importe où, se connectant à BBB1: 11111 . Nous avons aidé à organiser les connexions IPSec entre le cloud et le bureau, et le spécialiste informatique du client a commencé à poser des questions sur ce qui se passerait dans tel ou tel cas. Pour répondre à toutes ces questions, nous lui avons en fait écrit tout ce que vous pouvez lire ci-dessous.


Examinons maintenant ces processus plus en détail.


Première position


Quand quelque chose est envoyé de 192.168.B.0 / 24 à 192.168.A.0 / 24 ou de 192.168.A.0 / 24 à 192.168.B.0 / 24 , il entre dans le VPN. Autrement dit, ce paquet est en outre chiffré et transmis entre BBB1 et AAA1 , mais 192.168.A.1 voit exactement le paquet de 192.168.B.1 . Ils peuvent communiquer entre eux via n'importe quel protocole. Les réponses de retour sont transmises de la même manière via VPN, ce qui signifie que le paquet de 192.168.A.1 pour 192.168.B.1 sera envoyé en tant que datagramme ESP d' AAA1 à BBB1 , que le routeur déploiera de l'autre côté, enlève ce paquet et l'envoie à 192.168.B.1 en tant que paquet de 192.168.A.1 .

Exemple concret:

1) 192.168.B.1 accède à 192.168.A.1 , souhaite établir une connexion TCP avec 192.168.A.1: 3389 ;

2) 192.168.B.1 envoie une demande pour établir une connexion à partir de 192.168.B.1: 55555 (il sélectionne le port pour la rétroaction, ci-après nous utiliserons le numéro 55555 comme exemple du numéro de port que le système sélectionne lors de la génération de TCP- connexions) à 192.168.A.1: 3389 ;

3) le système d'exploitation qui s'exécute sur l'ordinateur avec l'adresse 192.168.B.1 décide de transférer ce paquet vers l'adresse de passerelle du routeur ( 192.168.B.254 dans notre cas), car il existe d'autres itinéraires plus spécifiques pour 192.168.A.1 , il ne fait donc pas passer le paquet le long de la route par défaut (0.0.0.0/0);

4) pour cela, elle essaie de trouver l'adresse MAC pour l'adresse IP 192.168.B.254 dans la table de cache du protocole ARP. S'il n'est pas trouvé, il envoie à partir de l'adresse 192.168.B.1 une demande de diffusion qui-a au réseau 192.168.B.0 / 24 . Lorsque 192.168.B.254 lui renvoie son adresse MAC, le système lui envoie un paquet Ethernet et stocke ces informations dans sa table de cache;

5) le routeur reçoit ce paquet et décide où l'envoyer: il a pour politique de transmettre tous les paquets entre 192.168.B.0 / 24 et 192.168.A.0 / 24 sur une connexion VPN entre BBB1 et AAA1 ;

6) le routeur génère un datagramme ESP de BBB1 à AAA1 ;

7) le routeur décide à qui envoyer ce paquet, il l'envoie, disons, à BBB254 (passerelle du fournisseur d'accès Internet), car il n'a pas de routes plus spécifiques vers AAA1 que 0.0.0.0/0;

8) de la même manière que déjà mentionné, il trouve l'adresse MAC pour BBB254 et envoie le paquet à la passerelle du fournisseur Internet;

9) Les fournisseurs d'accès Internet transmettent via leurs réseaux le datagramme ESP de BBB1 à AAA1 ;

10) le routeur virtuel sur AAA1 reçoit ce datagramme, le déchiffre et reçoit un paquet de 192.168.B.1: 55555 pour 192.168.A.1: 3389 ;

11) le routeur virtuel vérifie à qui il doit être envoyé, trouve le réseau 192.168.A.0 / 24 dans la table de routage et l'envoie directement à 192.168.A.1 , car il possède une interface 192.168.A.254 / 24 ;

12) pour cela, le routeur virtuel trouve l'adresse MAC pour 192.168.A.1 et lui transmet ce paquet via le réseau Ethernet virtuel;

13) 192.168.A.1 reçoit ce paquet sur le port 3389, accepte d'établir une connexion et forme un paquet en réponse de 192.168.A.1: 3389 à 192.168.B.1: 55555 ;

14) son système envoie ce paquet à l'adresse de passerelle du routeur virtuel ( 192.168.A.254 dans notre cas), car il n'a pas d'autres routes plus spécifiques pour 192.168.B.1 , par conséquent, il doit transmettre le paquet le long de la route par défaut (0.0.0.0/0);

15) de la même manière que dans les cas précédents, le système qui s'exécute sur le serveur avec l'adresse 192.168.A.1 trouve l'adresse MAC 192.168.A.254 , car il est sur le même réseau avec son interface 192.168.A.1 / 24 ;

16) le routeur virtuel reçoit ce paquet et décide où le transférer: il a pour politique de transmettre tous les paquets entre 192.168.A.0 / 24 et 192.168.B.0 / 24 via une connexion VPN entre AAA1 et BBB1 ;

17) le routeur virtuel génère un datagramme ESP de AAA1 à BBB1 ;

18) le routeur virtuel décide à qui ce paquet doit être envoyé, l'envoie à AAA254 (la passerelle du fournisseur Internet, dans ce cas, c'est nous aussi), car il n'a pas de routes plus spécifiques vers BBB1 que 0.0.0.0/0;

19) Les fournisseurs d'accès Internet transmettent via leurs réseaux un datagramme ESP de AAA1 à BBB1 ;

20) le routeur sur BBB1 reçoit ce datagramme, le déchiffre et reçoit un paquet de 192.168.A.1: 3389 pour 192.168.B.1: 55555 ;

21) il comprend qu'il doit être transmis à 192.168.B.1 , car il est sur le même réseau que lui, donc, il a une entrée correspondante dans la table de routage qui l'oblige à envoyer des paquets pour l'ensemble 192.168.B.0 / 24 directement;

22) le routeur trouve l'adresse MAC pour 192.168.B.1 et lui envoie ce paquet;

23) le système d'exploitation sur l'ordinateur avec l'adresse 192.168.B.1 reçoit un paquet de 192.168.A.1: 3389 pour 192.168.B.1: 55555 et lance les étapes suivantes pour établir une connexion TCP.

Cet exemple est assez concis et simpliste (et ici vous pouvez vous rappeler un tas de détails) décrit ce qui se passe aux niveaux 2 à 4. Les niveaux 1, 5-7 ne sont pas pris en compte.

Deuxième position


Si quelque chose est envoyé spécifiquement à AAA2 à partir de 192.168.B.0 / 24 , il ne va pas au VPN, mais directement. Autrement dit, si un utilisateur de l'adresse 192.168.B.1 accède à AAA2: 13389 , ce paquet est effacé de l'adresse BBB1 , passe à AAA2 , et là le routeur le reçoit et l'envoie à 192.168.A.1 . 192.168.A.1 ne sait rien de 192.168.B.1 , il voit un paquet de BBB1 , car il l'a compris. Par conséquent, la réponse à cette demande suit la route générale, il en va exactement de même de l'adresse AAA2 et va à BBB1 , et ce routeur donne cette réponse à 192.168.B.1 , il voit la réponse de AAA2 , à laquelle il s'est adressé.

Exemple concret:

1) 192.168.B.1 adresse AAA2 , souhaite établir une connexion TCP avec AAA2: 13389 ;

2) 192.168.B.1 envoie une demande d'établissement d'une connexion à partir de 192.168.B.1: 55555 (ce numéro, comme dans l'exemple précédent, peut être différent) vers AAA2: 13389 ;

3) le système d'exploitation qui s'exécute sur l'ordinateur avec l'adresse 192.168.B.1 décide de transférer ce paquet vers l'adresse de passerelle du routeur ( 192.168.B.254 dans notre cas), car il n'a pas d'autres itinéraires plus spécifiques pour AAA2 , ce qui signifie qu'il envoie le paquet le long de la route par défaut (0.0.0.0/0);

4) pour cela, elle, comme nous l'avons mentionné dans l'exemple précédent, essaie de trouver l'adresse MAC pour l'adresse IP 192.168.B.254 dans la table de cache du protocole ARP. S'il n'est pas trouvé, il envoie à partir de l'adresse 192.168.B.1 une demande de diffusion qui-a au réseau 192.168.B.0 / 24 . Lorsque 192.168.B.254 lui renvoie son adresse MAC, le système lui envoie un paquet Ethernet et stocke ces informations dans sa table de cache;

5) le routeur reçoit ce paquet et décide où l'envoyer: il a pour politique de transmettre (en remplaçant l'adresse de retour) tous les paquets de 192.168.B.0 / 24 à d'autres nœuds Internet;

6) puisque cette politique implique que l'adresse de retour doit coïncider avec l'adresse la plus basse sur l'interface par laquelle ce paquet sera transmis, le routeur décide d'abord à qui exactement ce paquet doit être transmis, et lui, comme dans l'exemple précédent, doit l'envoyer à BBB254 (passerelle de fournisseur de services Internet), car il n'a pas de routes plus spécifiques vers AAA2 que 0.0.0.0/0;

7) par conséquent, le routeur remplace l'adresse de retour du paquet, désormais le paquet de BBB1: 44444 (le numéro de port, bien sûr, peut être différent) à AAA2: 13389 ;

8) le routeur se souvient de ce qu'il a fait, ce qui signifie que lorsqu'une réponse est reçue de AAA2: 13389 à BBB1: 44444 , il saura qu'il doit changer l'adresse et le port du destinataire en 192.168.B.1: 55555 .

9) maintenant le routeur doit le transférer au réseau du fournisseur Internet via BBB254 , donc, de la même manière que nous l'avons déjà mentionné, il trouve l'adresse MAC pour BBB254 et envoie le paquet à la passerelle du fournisseur Internet;

10) Les fournisseurs d'accès Internet transfèrent un paquet de BBB1 à AAA2 sur leurs réseaux;

11) le routeur virtuel sur AAA2 reçoit ce paquet sur le port 13389;

12) il existe une règle sur le routeur virtuel qui stipule que les paquets provenant de n'importe quel expéditeur vers ce port doivent être envoyés à 192.168.A.1: 3389 ;

13) le routeur virtuel trouve le réseau 192.168.A.0 / 24 dans la table de routage et l'envoie directement à 192.168.A. 1, car il possède une interface 192.168.A.254 / 24 ;

14) pour cela, le routeur virtuel trouve l'adresse MAC pour 192.168.A.1 et lui transmet ce paquet via le réseau Ethernet virtuel;

15) 192.168.A.1 reçoit ce paquet sur le port 3389, accepte d'établir une connexion et forme un paquet en réponse de 192.168.A.1: 3389 sur BBB1: 44444 ;

16) son système envoie ce paquet à l'adresse de passerelle du routeur virtuel ( 192.168.A.254 dans notre cas), car il n'a pas d'autres routes plus spécifiques pour BBB1 , par conséquent, il doit transmettre le paquet le long de la route par défaut (0.0. 0,0 / 0);

17) de la même manière que dans les cas précédents, le système qui s'exécute sur le serveur avec l'adresse 192.168.A.1 trouve l'adresse MAC 192.168.A.254 , car il est sur le même réseau avec son interface 192.168.A.1 / 24 ;

18) Le routeur virtuel accepte ce paquet. Il convient de noter qu'il se souvient qu'il a reçu un paquet de BBB1: 44444 sur AAA2: 13389 et a changé l'adresse et le port du destinataire en 192.168.A.1: 3389 , par conséquent, il change le paquet de 192.168.A.1: 3389 en BBB1: 44444 adresse de l'expéditeur sur AAA2: 13389 ;

19) le routeur virtuel décide à qui ce paquet doit être envoyé, il l'envoie à AAA254 (la passerelle du fournisseur Internet, dans ce cas, c'est nous aussi), car il n'a pas de routes plus spécifiques vers BBB1 que 0.0.0.0/0;

20) Les fournisseurs d'accès Internet transfèrent un paquet de AAA2 à BBB1 sur leurs réseaux;

21) le routeur sur BBB1 reçoit ce paquet et rappelle que lorsqu'il a envoyé le paquet de 192.168.B.1: 55555 à AAA2: 13389 , il a changé son adresse et son port d'expéditeur en BBB1: 44444 , ce qui signifie que c'est la réponse qui doit être transmise sur 192.168.B.1: 55555 (en fait, il y a plusieurs autres contrôles, mais nous n'y allons pas);

22) il comprend qu'ils doivent être envoyés directement à 192.168.B.1 , car il est sur le même réseau que lui, donc, il a une entrée correspondante dans la table de routage qui l'oblige à envoyer des paquets pour l'ensemble 192.168.B.0 / 24 directement;

23) le routeur trouve l'adresse MAC pour 192.168.B.1 et lui envoie ce paquet;

24) le système d'exploitation sur l'ordinateur avec l'adresse 192.168.B.1 reçoit un paquet de AAA2: 13389 pour 192.168.B.1: 55555 et lance les étapes suivantes pour établir une connexion TCP.

Il convient de noter que dans ce cas, l'ordinateur avec l'adresse 192.168.B.1 ne sait rien du serveur avec l'adresse 192.168.A.1 , il ne communique qu'avec AAA2 . De même, le serveur avec l'adresse 192.168.A.1 ne sait rien de l'ordinateur avec l'adresse 192.168.B.1 . Il pense qu'ils se sont connectés à lui depuis l'adresse BBB1 , et il n'en sait rien de plus, pour ainsi dire.

Il convient également de noter que si cet ordinateur accède à AAA2: 1540 , la connexion ne sera pas établie, car la redirection de connexion vers le port 1540 n'est pas configurée sur le routeur virtuel, même si sur un serveur du réseau virtuel 192.168.A.0 / 24 (par exemple, sur un serveur avec l'adresse 192.168.A.1 ) et certains services attendent une connexion sur ce port. Si l'utilisateur de l'ordinateur avec l'adresse 192.168.B.1 est absolument nécessaire pour établir une connexion avec ce service, il doit utiliser un VPN, c'est-à-dire contacter directement au 192.168.A.1: 1540 .

Il convient de souligner que toute tentative d'établir une connexion avec AAA1 (à l'exception de la connexion IPSec de BBB1 ne réussira pas. Toute tentative d'établir une connexion avec AAA2 , à l'exception des connexions au port 13389, échouera également.
Notez également que si quelqu'un d'autre fait appel à AAA2 (par exemple, UDP), tout ce qui est indiqué dans les paragraphes 10-20 s'appliquera également à lui. Ce qui se passe avant et après cela dépend de ce qui se cache exactement derrière cela. Nous ne sommes pas propriétaires de ces informations, nous vous conseillons donc de consulter les administrateurs du site avec l'adresse de l'adresse.

Troisième position


Et vice versa, si quelque chose est envoyé de 192.168.A.1 vers un port configuré pour être transféré à l'intérieur vers BBB1 (par exemple, 11111), il n'entre pas non plus dans le VPN, mais se contente de AAA1 et se retrouve dans BBB1 , et que l'on est déjà en train de le transférer quelque part dans, disons, 192.168.B.2: 3389 . Il voit ce paquet non pas depuis 192.168.A.1 , mais depuis AAA1 . Et, lorsque 192.168.B.2 répond, le paquet passe de BBB1 à AAA1, puis parvient à l'initiateur de connexion - 192.168.A.1 .

Exemple concret:

1) 192.168.A.1 adresse BBB1 , souhaite établir une connexion TCP avec BBB1: 11111 ;

2) 192.168.A.1 envoie une demande d'établissement d'une connexion à partir de 192.168.A.1: 55555 (ce numéro, comme dans l'exemple précédent, peut être différent) sur BBB1: 11111 ;

3) le système d'exploitation qui s'exécute sur le serveur avec l'adresse 192.168.A.1 décide de transférer ce paquet vers l'adresse de passerelle du routeur ( 192.168.A.254 dans notre cas), car il n'a pas d'autres itinéraires plus spécifiques pour BBB1 , par conséquent, il envoie le paquet le long de la route par défaut (0.0.0.0/0);

4) pour cela, elle, comme nous l'avons mentionné dans les exemples précédents, essaie de trouver l'adresse MAC pour l'adresse IP 192.168.A.254 dans la table de cache du protocole ARP. S'il n'est pas trouvé, il envoie à partir de l'adresse 192.168.A.1 une demande de diffusion qui-a au réseau 192.168.A.0 / 24 . Lorsque 192.168.A.254 lui renvoie son adresse MAC, le système lui transmet un paquet Ethernet et entre ces informations dans sa table de cache;

5) le routeur virtuel reçoit ce paquet et décide où le transférer: il a pour politique de transmettre (en remplaçant l'adresse de retour) tous les paquets de 192.168.A.0 / 24 à d'autres nœuds Internet;

6) puisque cette politique suppose que l'adresse de retour doit coïncider avec l'adresse la plus basse sur l'interface par laquelle ce paquet sera transmis, le routeur virtuel décide d'abord à qui exactement ce paquet doit être transmis, et lui, comme dans l'exemple précédent, doit l'envoyer sur AAA254 (la passerelle du fournisseur Internet, dans ce cas, c'est nous aussi), car il n'a pas de routes plus spécifiques vers BBB1 que 0.0.0.0/0;

7) cela signifie que le routeur virtuel remplace l'adresse de retour du paquet, il s'agit désormais d'un paquet de AAA1: 44444 (le numéro de port, bien sûr, peut être différent) à BBB1: 11111 ;

8) le routeur virtuel se souvient de ce qu'il a fait, par conséquent, quand une réponse est reçue de BBB1: 11111 pour AAA1: 44444 , il saura qu'il doit changer l'adresse et le port du destinataire en 192.168.A.1: 55555 .

9) maintenant, le routeur virtuel doit le transférer vers le réseau du fournisseur Internet via AAA254 , ce qui signifie que, comme nous l'avons déjà mentionné, il trouve l'adresse MAC pour AAA254 et envoie le paquet à la passerelle du fournisseur Internet;

10) Les fournisseurs d'accès Internet transfèrent sur leurs réseaux un paquet de AAA1 à BBB1 ;

11) le routeur sur BBB1 reçoit ce paquet sur le port 11111;

12) il existe une règle sur le routeur virtuel, qui stipule que les paquets reçus de tout expéditeur vers ce port doivent être transmis à 192.168.B.2: 3389 ;

13) le routeur trouve le réseau 192.168.B.0 / 24 dans la table de routage et l'envoie directement à 192.168.B.2 , car il possède une interface 192.168.B.254 / 24 ;

14) pour cela, le routeur virtuel trouve l'adresse MAC pour 192.168.B.2 et lui transmet ce paquet via le réseau Ethernet virtuel;

15) 192.168.B.2 reçoit ce paquet sur le port 3389, accepte d'établir une connexion et forme un paquet en réponse de 192.168.B.2: 3389 à AAA1: 44444 ;

16) son système envoie ce paquet à l'adresse de passerelle du routeur ( 192.168.B.254 dans notre cas), car il n'a pas d'autres routes plus spécifiques pour AAA1 , par conséquent, il doit passer le paquet le long de la route par défaut (0.0.0.0 / 0);

17) de la même manière que dans les cas précédents, le système qui s'exécute sur l'ordinateur avec l'adresse 192.168.B.2 trouve l'adresse MAC 192.168.B.254 , car il est sur le même réseau avec son interface 192.168.B.2 / 24 ;

18) Le routeur accepte ce paquet. Il convient de noter qu'il se souvient avoir reçu un paquet de AAA1 sur BBB1: 11111 et changé l'adresse et le port du destinataire en 192.168.B.2: 3389.Par conséquent, il change l'adresse de l'expéditeur en un paquet de 192.168.B.2: 3389 pour AAA1: 44444 sur BBB1: 11111 ;

19) Le routeur décide à qui transférer ce paquet. Il l'envoie, disons, à BBB254 (la passerelle du fournisseur Internet, dont nous ne connaissons pas l'adresse exacte), car il n'a pas de routes plus spécifiques vers AAA1 que 0.0.0.0/0;

20) Les fournisseurs d'accès Internet transfèrent un paquet de BBB1 à AAA1 sur leurs réseaux;

21) le routeur virtuel sur AAA1 reçoit ce paquet et rappelle que lorsqu'il a envoyé le paquet de 192.168.A.1: 55555 à BBB1: 11111 , il a changé son adresse et son port d'expéditeur en AAA1: 44444 . Donc, c'est la réponse qui doit être transmise à 192.168.A.1: 55555 (en fait, comme nous l'avons mentionné dans l'exemple précédent, il y a aussi quelques vérifications supplémentaires, mais cette fois nous n'y allons pas trop);

22) il comprend qu'il doit être envoyé directement à 192.168.A.1 , car il est sur le même réseau que lui, ce qui signifie qu'il a une entrée correspondante dans la table de routage qui l'oblige à envoyer des paquets pour l'ensemble de 192.168.A.0 / 24 directement;

23) le routeur trouve l'adresse MAC pour 192.168.A.1 et lui envoie ce paquet;

24) le système d'exploitation sur le serveur avec l'adresse 192.168.A.1 reçoit un paquet de BBB1: 1111 1 pour 192.168.A.1: 55555 et lance les étapes suivantes pour établir une connexion TCP.

De la même manière que dans le cas précédent, dans ce cas le serveur avec l'adresse 192.168.A.1ne sait rien de l'ordinateur avec l'adresse 192.168.B.1 , il ne communique qu'avec BBB1 . L'ordinateur avec l'adresse 192.168.B.1 ne sait rien non plus sur le serveur avec l'adresse 192.168.A.1 . Il pense qu'ils se sont connectés à lui depuis l'adresse AAA1 , et le reste lui est caché.

Conclusion


Voici comment cela se produit lors de la connexion à l'intérieur d'un tunnel VPN entre le bureau du client et l'environnement dans le cloud, ainsi que lors de la connexion à l'extérieur du tunnel VPN. Et si vous avez encore des questions ou avez besoin de notre aide pour résoudre les problèmes de cloud, veuillez contacter 24h / 24 et 7j / 7.

Source: https://habr.com/ru/post/fr477854/


All Articles