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.