Qué sucede cuando se conecta dentro y fuera de un túnel VPN

De las cartas al soporte técnico de Tucha, nacen estos artículos. Entonces, recientemente un cliente nos contactó con una solicitud para aclarar qué sucede cuando se conecta dentro de un túnel VPN entre la oficina del usuario y el entorno en la nube, así como cuando se conecta fuera del túnel VPN. Por lo tanto, el texto completo a continuación es una carta real que enviamos a uno de los clientes en respuesta a su pregunta. Por supuesto, cambiamos las direcciones IP para no anonimizar al cliente. Pero sí, el soporte técnico de Tucha es realmente famoso por sus respuestas integrales y cartas informativas. :-)

Por supuesto, entendemos que para muchos este artículo no será una revelación. Pero, dado que los artículos para administradores principiantes aparecen de vez en cuando en Habr, y también porque este artículo apareció de una carta real a un cliente real, aún compartiremos esta información aquí. Hay una alta probabilidad de que sea útil para alguien.
Por lo tanto, explicamos en detalle lo que sucede entre el servidor en la nube y la oficina si están conectados por una red de sitio a sitio. Tenga en cuenta que, en este caso, parte de los servicios está disponible solo desde la oficina, y parte, desde cualquier lugar desde Internet.

Explicaremos de inmediato que nuestro cliente deseaba poder llegar al servidor 192.168.A.1 desde cualquier lugar a través de RDP, conectarse a AAA2: 13389 y a otros servicios, solo desde la oficina (192.168.B.0 / 24) conectada a través de VPN Además, el cliente se configuró inicialmente para poder acceder a la máquina 192.168.B.2 en la oficina a través de RDP desde cualquier lugar, conectándose a BBB1: 11111 . Ayudamos a organizar las conexiones IPSec entre la nube y la oficina, y el especialista de TI del cliente comenzó a hacer preguntas sobre lo que sucedería en este o aquel caso. Para responder a todas estas preguntas, de hecho, le escribimos todo lo que puedes leer a continuación.


Ahora considere estos procesos con más detalle.


Primera posición


Cuando se envía algo desde 192.168.B.0 / 24 a 192.168.A.0 / 24 o desde 192.168.A.0 / 24 a 192.168.B.0 / 24 , ingresa a la VPN. Es decir, este paquete se encripta y transmite adicionalmente entre BBB1 y AAA1 , pero 192.168.A.1 ve el paquete exactamente desde 192.168.B.1 . Se pueden comunicar entre sí a través de cualquier protocolo. Las respuestas de retorno se transmiten de la misma manera a través de VPN, lo que significa que el paquete de 192.168.A.1 para 192.168.B.1 se enviará como un datagrama ESP de AAA1 a BBB1 , que el enrutador implementará en el otro lado, saque ese paquete y envíelo a 192.168.B.1 como un paquete de 192.168.A.1 .

Ejemplo concreto:

1) 192.168.B.1 accede a 192.168.A.1 , desea establecer una conexión TCP con 192.168.A.1: 3389 ;

2) 192.168.B.1 envía una solicitud para establecer una conexión desde 192.168.B.1: 55555 (selecciona el puerto para la retroalimentación, de aquí en adelante utilizaremos el número 55555 como ejemplo del número de puerto que el sistema selecciona al generar TCP- conexiones) a 192.168.A.1: 3389 ;

3) el sistema operativo que se ejecuta en la computadora con la dirección 192.168.B.1 decide transferir este paquete a la dirección de puerta de enlace del enrutador ( 192.168.B.254 en nuestro caso), porque hay otras rutas más específicas para 192.168.A.1 , por lo tanto, no pasa el paquete a lo largo de la ruta predeterminada (0.0.0.0/0);

4) para esto, ella trata de encontrar la dirección MAC para la dirección IP 192.168.B.254 en la tabla de caché del protocolo ARP. Si no se encuentra, envía desde la dirección 192.168.B.1 una solicitud de difusión que tiene a la red 192.168.B.0 / 24 . Cuando 192.168.B.254 le devuelve su dirección MAC, el sistema le envía un paquete Ethernet y almacena esta información en su tabla de caché;

5) el enrutador recibe este paquete y decide dónde enviarlo: tiene la política de que debe transmitir todos los paquetes entre 192.168.B.0 / 24 y 192.168.A.0 / 24 a través de una conexión VPN entre BBB1 y AAA1 ;

6) el enrutador genera un datagrama ESP de BBB1 a AAA1 ;

7) el enrutador decide a quién enviar este paquete, lo envía a, digamos, BBB254 (puerta de enlace del proveedor de Internet), porque no tiene rutas más específicas a AAA1 que 0.0.0.0/0;

8) de la misma manera que ya se mencionó, encuentra la dirección MAC para BBB254 y envía el paquete a la puerta de enlace del proveedor de Internet;

9) los proveedores de Internet transmiten a través de sus redes el datagrama ESP de BBB1 a AAA1 ;

10) el enrutador virtual en AAA1 recibe este datagrama, lo descifra y recibe un paquete de 192.168.B.1: 55555 para 192.168.A.1: 3389 ;

11) el enrutador virtual verifica a quién debe enviarse, encuentra la red 192.168.A.0 / 24 en la tabla de enrutamiento y la envía directamente a 192.168.A.1 , ya que tiene una interfaz 192.168.A.254 / 24 ;

12) para esto, el enrutador virtual encuentra la dirección MAC para 192.168.A.1 y le pasa este paquete a través de la red Ethernet virtual;

13) 192.168.A.1 recibe este paquete en el puerto 3389, acuerda establecer una conexión y forma un paquete en respuesta desde 192.168.A.1: 3389 a 192.168.B.1: 55555 ;

14) su sistema envía este paquete a la dirección de puerta de enlace del enrutador virtual ( 192.168.A.254 en nuestro caso), porque no tiene otras rutas más específicas para 192.168.B.1 , por lo tanto, debe transmitir el paquete a lo largo de la ruta predeterminado (0.0.0.0/0);

15) de la misma manera que en casos anteriores, el sistema que se ejecuta en el servidor con la dirección 192.168.A.1 encuentra la dirección MAC 192.168.A.254 , ya que está en la misma red con su interfaz 192.168.A.1 / 24 ;

16) el enrutador virtual recibe este paquete y decide dónde enviarlo: tiene una política de que debe transmitir todos los paquetes entre 192.168.A.0 / 24 y 192.168.B.0 / 24 a través de una conexión VPN entre AAA1 y BBB1 ;

17) el enrutador virtual genera un datagrama ESP de AAA1 a BBB1 ;

18) el enrutador virtual decide a quién se debe enviar este paquete, lo envía a AAA254 (la puerta de enlace del proveedor de Internet, en este caso, también somos nosotros), porque no tiene rutas más específicas para BBB1 que 0.0.0.0/0;

19) los proveedores de Internet transmiten a través de sus redes un datagrama ESP de AAA1 a BBB1 ;

20) el enrutador en BBB1 recibe este datagrama, lo descifra y recibe un paquete de 192.168.A.1: 3389 para 192.168.B.1: 55555 ;

21) entiende que debe transmitirse a 192.168.B.1 , ya que está en la misma red que él, por lo tanto, tiene una entrada correspondiente en la tabla de enrutamiento que lo obliga a enviar paquetes para todo 192.168.B.0 / 24 directamente;

22) el enrutador encuentra la dirección MAC para 192.168.B.1 y le envía este paquete;

23) el sistema operativo en la computadora con la dirección 192.168.B.1 recibe un paquete de 192.168.A.1: 3389 para 192.168.B.1: 55555 e inicia los siguientes pasos para establecer una conexión TCP.

Este ejemplo es bastante conciso y simplista (y aquí puede recordar un montón de detalles) describe lo que sucede en los niveles 2-4. Los niveles 1, 5-7 no se consideran.

Segunda posición


Si algo se envía específicamente a AAA2 desde 192.168.B.0 / 24 , no va a la VPN, sino directamente. Es decir, si un usuario de la dirección 192.168.B.1 accede a AAA2: 13389 , este paquete se deshilacha de la dirección BBB1 , pasa a AAA2 , y allí el enrutador lo recibe y lo envía a 192.168.A.1 . 192.168.A.1 no sabe nada acerca de 192.168.B.1 , ve un paquete de BBB1 , porque lo entendió. Por lo tanto, la respuesta a esta solicitud va a lo largo de la ruta general, exactamente lo mismo va de la dirección AAA2 y va a BBB1 , y ese enrutador da esta respuesta a 192.168.B.1 , ve la respuesta de AAA2 , a la que se dirigió.

Ejemplo concreto:

1) 192.168.B.1 se dirige a AAA2 , desea establecer una conexión TCP con AAA2: 13389 ;

2) 192.168.B.1 envía una solicitud para establecer una conexión desde 192.168.B.1: 55555 (este número, como en el ejemplo anterior, puede ser diferente) a AAA2: 13389 ;

3) el sistema operativo que se ejecuta en la computadora con la dirección 192.168.B.1 decide transferir este paquete a la dirección de la puerta de enlace del enrutador ( 192.168.B.254 en nuestro caso), porque no tiene otras rutas más específicas para AAA2 , lo que significa que envía el paquete a lo largo de la ruta predeterminada (0.0.0.0/0);

4) para esto, ella, como mencionamos en el ejemplo anterior, trata de encontrar la dirección MAC para la dirección IP 192.168.B.254 en la tabla de caché del protocolo ARP. Si no se encuentra, envía desde la dirección 192.168.B.1 una solicitud de difusión que tiene a la red 192.168.B.0 / 24 . Cuando 192.168.B.254 le devuelve su dirección MAC, el sistema le envía un paquete Ethernet y almacena esta información en su tabla de caché;

5) el enrutador recibe este paquete y decide dónde enviarlo: tiene una política que debe reenviar (reemplazando la dirección de retorno) todos los paquetes desde 192.168.B.0 / 24 a otros nodos de Internet;

6) dado que esta política implica que la dirección de retorno debe coincidir con la dirección más baja en la interfaz a través de la cual se transmitirá este paquete, el enrutador primero decide a quién se debe transmitir exactamente este paquete, y él, como en el ejemplo anterior, debe enviarlo a BBB254 (Gateway de proveedor de servicios de Internet), porque no tiene rutas más específicas para AAA2 que 0.0.0.0/0;

7) por lo tanto, el enrutador reemplaza la dirección de retorno del paquete, de aquí en adelante el paquete de BBB1: 44444 (el número de puerto, por supuesto, puede ser diferente) a AAA2: 13389 ;

8) el enrutador recuerda lo que ha hecho, lo que significa que cuando se recibe una respuesta de AAA2: 13389 a BBB1: 44444 , sabrá que debe cambiar la dirección y el puerto del destinatario a 192.168.B.1: 55555 .

9) ahora el enrutador debe transferirlo a la red del proveedor de Internet a través de BBB254 , por lo tanto, de la misma manera que ya mencionamos, encuentra la dirección MAC para BBB254 y envía el paquete a la puerta de enlace del proveedor de Internet;

10) los proveedores de Internet transfieren un paquete de BBB1 a AAA2 en sus redes;

11) el enrutador virtual en AAA2 recibe este paquete en el puerto 13389;

12) hay una regla en el enrutador virtual que estipula que los paquetes que provienen de cualquier remitente a este puerto deben enviarse a 192.168.A.1: 3389 ;

13) el enrutador virtual encuentra la red 192.168.A.0 / 24 en la tabla de enrutamiento y la envía directamente a 192.168.A. 1, porque tiene una interfaz 192.168.A.254 / 24 ;

14) para esto, el enrutador virtual encuentra la dirección MAC para 192.168.A.1 y le pasa este paquete a través de la red Ethernet virtual;

15) 192.168.A.1 recibe este paquete en el puerto 3389, acuerda establecer una conexión y forma un paquete en respuesta desde 192.168.A.1: 3389 en BBB1: 44444 ;

16) su sistema envía este paquete a la dirección de la puerta de enlace del enrutador virtual ( 192.168.A.254 en nuestro caso), porque no tiene otras rutas más específicas para BBB1 , por lo tanto, debe transmitir el paquete a lo largo de la ruta predeterminada (0.0. 0,0 / 0);

17) de la misma manera que en casos anteriores, el sistema que se ejecuta en el servidor con la dirección 192.168.A.1 encuentra la dirección MAC 192.168.A.254 , ya que está en la misma red con su interfaz 192.168.A.1 / 24 ;

18) El enrutador virtual acepta este paquete. Cabe señalar que recuerda que recibió un paquete de BBB1: 44444 en AAA2: 13389 y cambió la dirección y el puerto del destinatario a 192.168.A.1: 3389 , por lo tanto, cambia el paquete de 192.168.A.1: 3389 a BBB1: 44444 dirección del remitente en AAA2: 13389 ;

19) el enrutador virtual decide a quién debe enviarse este paquete, lo envía a AAA254 (la puerta de enlace del proveedor de Internet, en este caso, también somos nosotros), porque no tiene rutas más específicas para BBB1 que 0.0.0.0/0;

20) los proveedores de Internet transfieren un paquete de AAA2 a BBB1 en sus redes;

21) el enrutador en BBB1 recibe este paquete y recuerda que cuando envió el paquete desde 192.168.B.1: 55555 a AAA2: 13389 , cambió su dirección y puerto de remitente a BBB1: 44444 , lo que significa que esta es la respuesta que debe transmitirse en 192.168.B.1: 55555 (de hecho, hay varios cheques más, pero no lo examinamos);

22) entiende que deben enviarse directamente a 192.168.B.1 , ya que está en la misma red que él, por lo tanto, tiene una entrada correspondiente en la tabla de enrutamiento que lo obliga a enviar paquetes para todo 192.168.B.0 / 24 directamente

23) el enrutador encuentra la dirección MAC para 192.168.B.1 y le envía este paquete;

24) el sistema operativo en la computadora con la dirección 192.168.B.1 recibe un paquete de AAA2: 13389 para 192.168.B.1: 55555 e inicia los siguientes pasos para establecer una conexión TCP.

Cabe señalar que en este caso la computadora con la dirección 192.168.B.1 no sabe nada sobre el servidor con la dirección 192.168.A.1 , solo se comunica con AAA2 . Del mismo modo, el servidor con la dirección 192.168.A.1 no sabe nada sobre la computadora con la dirección 192.168.B.1 . Él cree que se conectaron con él desde la dirección BBB1 , y no sabe nada más, por así decirlo.

También debe tenerse en cuenta que si esta computadora accede a AAA2: 1540 , la conexión no se establecerá, porque el reenvío de la conexión al puerto 1540 no está configurado en el enrutador virtual, incluso si está en algún servidor de la red virtual 192.168.A.0 / 24 (por ejemplo, en un servidor con la dirección 192.168.A.1 ) y hay algunos servicios que esperan una conexión en este puerto. Si el usuario de la computadora con la dirección 192.168.B.1 es absolutamente necesario para establecer una conexión con este servicio, debe usar una VPN, es decir contactar directamente al 192.168.A.1: 1540 .

Se debe enfatizar que cualquier intento de establecer una conexión con AAA1 (excepto la conexión IPSec de BBB1 no tendrá éxito. Cualquier intento de establecer una conexión con AAA2 , excepto las conexiones al puerto 13389, también fracasará.
También tenga en cuenta que si alguien más llama a AAA2 (por ejemplo, UDP), todo lo que se indica en los párrafos 10-20 también se aplicará a él. Lo que sucede antes y después de eso depende de qué hay detrás de esto. No poseemos dicha información, por lo tanto, le recomendamos que consulte a los administradores del sitio con la dirección de la dirección.

Tercer puesto


Y viceversa, si se envía algo desde 192.168.A.1 a algún puerto configurado para ser reenviado dentro a BBB1 (por ejemplo, 11111), tampoco ingresa a la VPN, sino que solo se engancha desde AAA1 y termina en BBB1 , y ese ya lo está transfiriendo a algún lugar en, digamos, 192.168.B.2: 3389 . Él ve este paquete no desde 192.168.A.1 , sino desde AAA1 . Y, cuando 192.168.B.2 responde, el paquete pasa de BBB1 a AAA1, y luego llega al iniciador de conexión: 192.168.A.1 .

Ejemplo concreto:

1) 192.168.A.1 se dirige a BBB1 , desea establecer una conexión TCP con BBB1: 11111 ;

2) 192.168.A.1 envía una solicitud para establecer una conexión desde 192.168.A.1: 55555 (este número, como en el ejemplo anterior, puede ser diferente) en BBB1: 11111 ;

3) el sistema operativo que se ejecuta en el servidor con la dirección 192.168.A.1 decide transferir este paquete a la dirección de puerta de enlace del enrutador ( 192.168.A.254 en nuestro caso), porque no tiene otras rutas más específicas para BBB1 , por lo tanto, envía el paquete a lo largo de la ruta predeterminada (0.0.0.0/0);

4) para esto, ella, como mencionamos en los ejemplos anteriores, trata de encontrar la dirección MAC para la dirección IP 192.168.A.254 en la tabla de caché del protocolo ARP. Si no se encuentra, envía desde la dirección 192.168.A.1 una solicitud de difusión que tiene a la red 192.168.A.0 / 24 . Cuando 192.168.A.254 le devuelve su dirección MAC, el sistema le transmite un paquete Ethernet e ingresa esta información en su tabla de caché;

5) el enrutador virtual recibe este paquete y decide dónde transferirlo: tiene una política que debe reenviar (reemplazando la dirección de retorno) todos los paquetes desde 192.168.A.0 / 24 a otros nodos de Internet;

6) dado que esta política supone que la dirección de retorno debe coincidir con la dirección más baja en la interfaz a través de la cual se transmitirá este paquete, el enrutador virtual primero decide a quién se debe transmitir exactamente este paquete, y él, como en el ejemplo anterior, debe enviarlo en AAA254 (la puerta de enlace del proveedor de Internet, en este caso, también somos nosotros), porque no tiene rutas más específicas para BBB1 que 0.0.0.0/0;

7) significa que el enrutador virtual reemplaza la dirección de retorno del paquete, de ahora en adelante es un paquete de AAA1: 44444 (el número de puerto, por supuesto, puede ser diferente) a BBB1: 11111 ;

8) el enrutador virtual recuerda lo que hizo, por lo tanto, cuando se recibe una respuesta de BBB1: 11111 para AAA1: 44444 , sabrá que debe cambiar la dirección y el puerto del destinatario a 192.168.A.1: 55555 .

9) ahora el enrutador virtual debe transferirlo a la red del proveedor de Internet a través de AAA254 , lo que significa que, tal como ya lo mencionamos, encuentra la dirección MAC de AAA254 y envía el paquete a la puerta de enlace del proveedor de Internet;

10) los proveedores de Internet transfieren en sus redes un paquete de AAA1 a BBB1 ;

11) el enrutador en BBB1 recibe este paquete en el puerto 11111;

12) hay una regla en el enrutador virtual, que estipula que los paquetes recibidos de cualquier remitente a este puerto deben transmitirse a 192.168.B.2: 3389 ;

13) el enrutador encuentra la red 192.168.B.0 / 24 en la tabla de enrutamiento y la envía directamente a 192.168.B.2 , ya que tiene una interfaz 192.168.B.254 / 24 ;

14) para esto, el enrutador virtual encuentra la dirección MAC para 192.168.B.2 y le pasa este paquete a través de la red Ethernet virtual;

15) 192.168.B.2 recibe este paquete en el puerto 3389, acuerda establecer una conexión y forma un paquete en respuesta desde 192.168.B.2: 3389 a AAA1: 44444 ;

16) su sistema envía este paquete a la dirección de la puerta de enlace del enrutador ( 192.168.B.254 en nuestro caso), porque no tiene otras rutas más específicas para AAA1 , por lo tanto, debe pasar el paquete a lo largo de la ruta predeterminada (0.0.0.0 / 0);

17) de la misma manera que en casos anteriores, el sistema que se ejecuta en la computadora con la dirección 192.168.B.2 encuentra la dirección MAC 192.168.B.254 , ya que está en la misma red con su interfaz 192.168.B.2 / 24 ;

18) El enrutador acepta este paquete. Cabe señalar que recuerda que recibió un paquete de AAA1 en BBB1: 11111 y cambió la dirección y el puerto del destinatario a 192.168.B.2: 3389 , por lo tanto, cambia la dirección del remitente a un paquete de 192.168.B.2: 3389 para AAA1: 44444 en BBB1: 11111 ;

19) El enrutador decide a quién reenviar este paquete. Lo envía a, digamos, BBB254 (la puerta de enlace del proveedor de Internet, cuya dirección exacta no conocemos), porque no tiene rutas más específicas para AAA1 que 0.0.0.0/0;

20) los proveedores de Internet transfieren un paquete de BBB1 a AAA1 en sus redes;

21) el enrutador virtual en AAA1 recibe este paquete y recuerda que cuando envió el paquete desde 192.168.A.1: 55555 a BBB1: 11111 , cambió su dirección y el puerto del remitente a AAA1: 44444 . Entonces, esta es la respuesta que debe transmitirse a 192.168.A.1: 55555 (de hecho, como mencionamos en el ejemplo anterior, también hay algunas comprobaciones más allí, pero esta vez no las abordamos también);

22) entiende que debe enviarse directamente a 192.168.A.1 , ya que está en la misma red que él, lo que significa que tiene una entrada correspondiente en la tabla de enrutamiento que lo obliga a enviar paquetes para todo 192.168.A.0 / 24 directamente;

23) el enrutador encuentra la dirección MAC para 192.168.A.1 y le envía este paquete;

24) el sistema operativo en el servidor con la dirección 192.168.A.1 recibe un paquete de BBB1: 1111 1 para 192.168.A.1: 55555 e inicia los siguientes pasos para establecer una conexión TCP.

De la misma manera que en el caso anterior, en este caso el servidor con la dirección 192.168.A.1no sabe nada sobre la computadora con la dirección 192.168.B.1 , solo se comunica con BBB1 . La computadora con la dirección 192.168.B.1 tampoco sabe nada sobre el servidor con la dirección 192.168.A.1 . Él cree que se conectaron con él desde la dirección AAA1 , y el resto está oculto para él.

Conclusión


Así sucede cuando se conecta dentro de un túnel VPN entre la oficina del cliente y el entorno en la nube, así como cuando se conecta fuera del túnel VPN. Y si aún tiene preguntas o necesita nuestra ayuda para resolver problemas en la nube, comuníquese con 24x7.

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


All Articles