Qué sucede durante las conexiones dentro y fuera del túnel VPN.

De las cartas al servicio técnico de Tucha nacen verdaderos artículos. Recientemente, un cliente nos contactó para aclarar qué sucede con las conexiones dentro del túnel VPN entre la oficina del usuario y el entorno en la nube, así como con las conexiones fuera del túnel VPN. Por lo tanto, todo el texto que se presenta 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 deanonimizar al cliente. Pero, sí, el servicio de soporte técnico de Tucha es realmente conocido por sus respuestas elaboradas y cartas informativas. 🙂

Por supuesto, entendemos que para muchos este artículo no será una revelación. Sin embargo, dado que en Habr aparecen de vez en cuando artículos para administradores principiantes, y debido a que este artículo surgió de una carta real a un cliente real, compartiremos esta información aquí también. Hay una gran probabilidad de que para alguien sea útil.
Por lo tanto, explicamos detalladamente qué sucede entre el servidor en la nube y la oficina si están conectados a través de una red site-to-site. Cabe destacar que, en este caso, algunos servicios son accesibles solo desde la oficina, mientras que otros se pueden acceder desde cualquier lugar de la red Internet.

Primero explicaremos que nuestro cliente deseaba que en el servidor 192.168.A.1 se pudiera acceder por RDP desde cualquier lugar, conectándose a A.A.A.2:13389, mientras que a los demás servicios solo desde la oficina (192.168.B.0/24), conectada a través de VPN. También se configuró inicialmente que a la máquina 192.168.B.2 en la oficina también se podía acceder por RDP desde cualquier lugar, conectándose a B.B.B.1:11111. Ayudamos a organizar 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 cada caso. Para responder todas estas preguntas, de hecho, le escribimos todo lo que pueden leer a continuación.

Qué sucede durante las conexiones dentro y fuera del túnel VPN.

Ahora examinemos estos procesos con más detalle.

Primera posición

Cuando algo se envía desde 192.168.B.0/24 en 192.168.A.0/24 o desde 192.168.A.0/24 en 192.168.B.0/24, entra en la VPN. Es decir, este paquete se cifra adicionalmente y se transmite entre B.B.B.1 y A.A.A.1, pero 192.168.A.1 ve el paquete exactamente desde 192.168.B.1. Pueden comunicarse entre sí mediante cualquier protocolo. Las respuestas de vuelta también se transmiten a través de la VPN, lo que significa que el paquete desde 192.168.A.1 para 192.168.B.1 se enviará como un datagrama ESP desde A.A.A.1 en B.B.B.1, que en el otro lado del enrutador se desplegará, extraerá ese paquete y lo entregará a 192.168.B.1 como un paquete de 192.168.A.1.

Ejemplo específico:

1) 192.168.B.1 se refiere 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 la conexión desde 192.168.B.1:55555 (el número de puerto para la retroalimentación lo elige él mismo, aquí y en adelante usaremos el número 55555 como ejemplo de un número de puerto que el sistema elige al formar la conexión TCP) a 192.168.A.1:3389;

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

4) para ello intenta 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 who-has de difusión a la red 192.168.B.0/24. Cuando 192.168.B.254 en respuesta, envía su dirección MAC, el sistema envía el paquete Ethernet para ella y registra esta información en su tabla de caché;

5) el enrutador recibe este paquete y decide a dónde enviarlo: tiene una política establecida de que debe enviar todos los paquetes entre 192.168.B.0/24 y 192.168.A.0/24 por el túnel VPN entre B.B.B.1 y A.A.A.1;

6) el enrutador forma un datagrama ESP de B.B.B.1 en A.A.A.1;

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

8) de la misma manera, como ya se dijo, encuentra la dirección MAC para B.B.B.254 y envía el paquete a la puerta de enlace del proveedor de internet;

9) los proveedores de internet transmiten por sus redes el datagrama ESP de B.B.B.1 en A.A.A.1;

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

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

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

13) 192.168.A.1 recibe este paquete en el puerto 3389, acepta establecer la conexión y forma un paquete en respuesta de 192.168.A.1:3389 en 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, no tiene, por lo tanto debe enviar el paquete por la ruta predeterminada (0.0.0.0/0);

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

16) el enrutador virtual recibe este paquete y decide a dónde enviarlo: tiene una política que establece que debe manejar todos los paquetes entre 192.168.A.0/24 y 192.168.B.0/24 por el túnel VPN entre A.A.A.1 y B.B.B.1;

17) el enrutador virtual forma un datagrama ESP de A.A.A.1 para B.B.B.1;

18) el enrutador virtual decide a quién enviar este paquete y lo envía a A.A.A.254 (puerta de enlace del proveedor de Internet, en este caso, también somos nosotros), porque no hay rutas más específicas a B.B.B.1, que 0.0.0.0/0;

19) los proveedores de Internet transmiten el datagrama ESP a través de sus redes con A.A.A.1 en B.B.B.1;

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

21) entiende que debe enviarlo precisamente a 192.168.B.1, ya que está en la misma red, por lo tanto, hay una entrada correspondiente en la tabla de enrutamiento que 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 el ordenador con dirección 192.168.B.1 recibe el paquete de 192.168.A.1:3389 para 192.168.B.1:55555 e inicia los siguientes pasos para establecer una conexión TCP.

En este ejemplo, de forma bastante concisa y simplificada (y aquí se pueden recordar muchos detalles), se describe lo que ocurre en los niveles 2-4. Los niveles 1, 5-7 no se consideran.

Posición dos

Si desde 192.168.B.0/24 se envía algo precisamente a A.A.A.2, no va por VPN, sino directamente. Es decir, si el usuario desde la dirección 192.168.B.1 se refiere a A.A.A.2:13389, este paquete se deriva desde la dirección B.B.B.1, pasa a A.A.A.2, y allí el enrutador lo recibe y lo envía a 192.168.A.1. 192.168.A.1 no sabe nada sobre 192.168.B.1, ve el paquete de B.B.B.1, ya que este lo envió. Por lo tanto, la respuesta a esta solicitud sigue la ruta general, se deriva igualmente desde la dirección A.A.A.2 y va a B.B.B.1, y ese enrutador entrega esta respuesta a 192.168.B.1, ese ve la respuesta de A.A.A.2, al que se refería.

Ejemplo específico:

1) 192.168.B.1 se refiere a A.A.A.2, desea establecer una conexión TCP con A.A.A.2:13389;

2) 192.168.B.1 envía una solicitud para establecer la conexión desde 192.168.B.1:55555 (este número, al igual que en el ejemplo anterior, puede ser otro) en A.A.A.2:13389;

3) el sistema operativo que funciona en la computadora con la dirección 192.168.B.1, decide enviar este paquete a la dirección de puerta de enlace del enrutador (192.168.B.254 en nuestro caso), porque no tiene otras rutas más específicas para A.A.A.2, ella no tiene, lo que significa que envía el paquete por la ruta por defecto (0.0.0.0/0);

4) para esto, como mencionamos en el ejemplo anterior, intenta 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 who-has de difusión a la red 192.168.B.0/24. Cuando 192.168.B.254 en respuesta, envía su dirección MAC, el sistema envía el paquete Ethernet para ella y registra esta información en su tabla de caché;

5) el enrutador recibe este paquete y decide a dónde enviarlo: tiene una política que establece que debe derivar (sustituyendo la dirección de retorno) todos los paquetes de 192.168.B.0/24 a otros nodos de la red 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 determina a quién debe enviar este paquete, y él, como en el ejemplo anterior, debe enviarlo a B.B.B.254 (puerta de enlace del proveedor de internet), porque no tiene rutas más específicas que A.A.A.2, que 0.0.0.0/0;

7) por lo tanto, el enrutador reemplaza la dirección de retorno del paquete, de ahora en adelante el paquete de B.B.B.1:44444 (el número de puerto, por supuesto, puede ser diferente) a A.A.A.2:13389;

8) el enrutador recuerda lo que hizo, así que cuando de A.A.A.2:13389 a B.B.B.1:44444 reciba una respuesta, sabrá que debe cambiar la dirección y el puerto del destinatario a 192.168.B.1:55555.

9) ahora el enrutador debe transmitirlo a la red del proveedor de servicios de internet a través de B.B.B.254, por lo tanto, exactamente como ya hemos mencionado, encuentra la dirección MAC de B.B.B.254 y envía el paquete a la puerta de enlace del proveedor de internet;

10) los proveedores de servicios de internet transmiten el paquete de B.B.B.1 en A.A.A.2;

11) el enrutador virtual en A.A.A.2 recibe este paquete en el puerto 13389;

12) en el enrutador virtual hay una regla que establece que los paquetes que lleguen de cualquier remitente a este puerto deben ser transmitidos a 192.168.A.1:3389;

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

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

15) 192.168.A.1 recibe este paquete en el puerto 3389, acepta establecer la conexión y forma un paquete en respuesta de 192.168.A.1:3389 en B.B.B.1:44444;

16) su sistema transmite 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 B.B.B.1, no tiene, por lo tanto debe enviar el paquete por la ruta predeterminada (0.0.0.0/0);

17) de manera similar a los casos anteriores, el sistema que opera 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 que su interfaz 192.168.A.1/24;

18) el enrutador virtual recibe este paquete. Cabe señalar que recuerda que recibió el A.A.A.2:13389 paquete de B.B.B.1:44444 y le cambió la dirección y el puerto del destinatario a 192.168.A.1:3389, por lo tanto, el paquete de 192.168.A.1:3389 para B.B.B.1:44444 cambia la dirección del remitente a A.A.A.2:13389;

19) el enrutador virtual decide a quién enviar este paquete, lo envía a A.A.A.254 (puerta de enlace del proveedor de Internet, en este caso, también somos nosotros), porque no hay rutas más específicas a B.B.B.1, que 0.0.0.0/0;

20) los proveedores de servicios de internet transmiten el paquete con A.A.A.2 en B.B.B.1;

21) el enrutador en B.B.B.1 recibe este paquete y recuerda que, cuando envió el paquete de 192.168.B.1:55555 para A.A.A.2:13389, cambió su dirección y puerto del remitente a B.B.B.1:44444, así que significa que es una respuesta que debe ser enviada a 192.168.B.1:55555 (en realidad, hay algunas verificaciones adicionales, pero no nos profundizamos en esto);

22) entiende que debe ser enviado directamente a 192.168.B.1, ya que está en la misma red, por lo tanto, tiene una entrada correspondiente en la tabla de enrutamiento que obliga a enviar paquetes para toda 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 el paquete de A.A.A.2:13389 para 192.168.B.1:55555 e inicia los siguientes pasos para establecer una conexión TCP.

Es importante señalar que en este caso la computadora con la dirección 192.168.B.1 no sabe nada del servidor con la dirección 192.168.A.1, solo se comunica con A.A.A.2. De la misma manera, el servidor con la dirección 192.168.A.1 no sabe nada de la computadora con la dirección 192.168.B.1. Considera que se ha conectado desde la dirección B.B.B.1, y no sabe nada más, por así decirlo.

Además, hay que señalar que si esta computadora intenta acceder a A.A.A.2:1540, no se establecerá la conexión, porque el reenvío de conexiones al puerto 1540 no está configurado en el enrutador virtual, incluso si en algún servidor de la red virtual 192.168.A.0/24 (por ejemplo, en el servidor con la dirección 192.168.A.1) hay servicios que están esperando conexiones en ese puerto. Si al usuario de la computadora con la dirección 192.168.B.1 le es extremadamente necesario establecer conexión con este servicio, debe usar VPN, es decir, conectarse directamente a 192.168.A.1:1540.

Es importante subrayar que cualquier intento de establecer conexión con A.A.A.1 (aparte de la conexión IPSec desde B.B.B.1 ) no tendrá éxito. Cualquier intento de establecer conexión con A.A.A.2, a excepción de las conexiones al puerto 13389, también no tendrá éxito.
También hay que mencionar que si alguien más se conecta a A.A.A.2 (por ejemplo, C.C.C.C), todo lo que se describe en los puntos 10-20 también le aplicará. Lo que sucede antes y después depende de lo que realmente esté detrás de C.C.C.C. No poseemos tal información, por lo que recomendamos acudir a los administradores del nodo con la dirección C.C.C.C.

Tercera posición

Y, a la inversa, si algo se envía a algún puerto que está configurado para ser reenviado hacia B.B.B.1 (por ejemplo, 11111), tampoco pasa por la VPN, sino que simplemente se redirige desde 192.168.A.1 y se dirige a A.A.A.1 , y este ya lo envía a algún lugar como, digamos, B.B.B.1192.168.B.2:3389 . Este ve este paquete no desde, sino desde 192.168.A.1. Y cuando A.A.A.1responde, el paquete viaja desde 192.168.B.2 A.A.A.1, B.B.B.1 en y luego llega al iniciador de la conexión — 192.168.A.1:55555 192.168.A.1.

Ejemplo específico:

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

2) 192.168.A.1 envía una solicitud para establecer la conexión desde 3) el sistema operativo que se ejecuta en el servidor con la dirección (este número, al igual que en el ejemplo anterior, puede ser otro) en B.B.B.1:11111;

4) para esto, como mencionamos en ejemplos anteriores, intenta encontrar la dirección MAC para la dirección IP 192.168.A.1, decide enviar 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 B.B.B.1, por lo tanto, envía el paquete por la ruta predeterminada (0.0.0.0/0);

como respuesta le envía su dirección MAC, el sistema envía un paquete Ethernet para él y registra esta información en su tabla de caché; 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 who-has de difusión a la red 192.168.A.0/24. Cuando 192.168.A.254 en respuesta envía su dirección MAC; el sistema transmite un paquete Ethernet para él y registra esta información en su tabla de caché.

5) el enrutador virtual recibe este paquete y decide a dónde enviarlo: tiene una política que establece que debe sustituir (cambiando la dirección de origen) todos los paquetes de 192.168.A.0/24 a otros nodos de la red Internet;

6) dado que esta política supone que la dirección de origen debe coincidir con la dirección menor en la interfaz a través de la cual se transmitirá este paquete, el enrutador virtual primero decide a quién enviar este paquete, y como en el ejemplo anterior, debe enviarlo a A.A.A.254 (puerta de enlace del proveedor de Internet, en este caso, también somos nosotros), porque no hay rutas más específicas a B.B.B.1, que 0.0.0.0/0;

7) por lo tanto, el enrutador virtual cambia la dirección de origen del paquete, de ahora en adelante este paquete es de A.A.A.1:44444 (el número de puerto, por supuesto, puede ser diferente) a B.B.B.1:11111;

8) el enrutador virtual recuerda lo que ha hecho, por lo tanto, cuando de B.B.B.1:11111 para A.A.A.1:44444 reciba una respuesta, sabrá que debe cambiar la dirección y el puerto del destinatario a 3) el sistema operativo que se ejecuta en el servidor con la dirección.

9) ahora el enrutador virtual debe enviar esto a la red del proveedor de Internet a través de A.A.A.254, por lo tanto, al igual que ya hemos mencionado, encuentra la dirección MAC para A.A.A.254 y envía el paquete a la puerta de enlace del proveedor de internet;

10) los proveedores de servicios de internet transmiten el paquete de A.A.A.1 en B.B.B.1;

11) el enrutador en B.B.B.1 recibe este paquete en el puerto 11111;

12) en el enrutador virtual existe una regla que establece que los paquetes que llegan de cualquier remitente a este puerto deben ser enviados a . Este ve este paquete no desde;

13) el enrutador encuentra en la tabla de enrutamiento la red 192.168.B.0/24 y lo 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 de 192.168.B.2 y le envía este paquete a través de la red Ethernet virtual;

15) 192.168.B.2 recibe este paquete en el puerto 3389, acepta establecer la conexión y forma un paquete en respuesta de . Este ve este paquete no desde en A.A.A.1:44444;

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

17) al igual que en los casos anteriores, el sistema que funciona 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 que su interfaz 192.168.B.2/24;

18) el enrutador recibe este paquete. Es importante señalar que recuerda que recibió en B.B.B.1:11111 paquete de A.A.A.1 y le cambió la dirección y el puerto del destinatario a . Este ve este paquete no desde, por lo tanto, el paquete de . Este ve este paquete no desde para A.A.A.1:44444 cambia la dirección del remitente a B.B.B.1:11111;

19) el enrutador decide a quién enviar este paquete. Lo envía a, digamos, B.B.B.254 (puerta de enlace del proveedor de Internet, cuya dirección exacta no conocemos), porque no hay rutas más específicas hacia A.A.A.1, que 0.0.0.0/0;

20) los proveedores de servicios de internet transmiten el paquete con B.B.B.1 en A.A.A.1;

21) el enrutador virtual en A.A.A.1 recibe este paquete y recuerda que, cuando envió el paquete de 3) el sistema operativo que se ejecuta en el servidor con la dirección para B.B.B.1:11111, cambió su dirección y puerto del remitente a A.A.A.1:44444. Por lo tanto, esta es la respuesta que debe ser enviada a 3) el sistema operativo que se ejecuta en el servidor con la dirección (en realidad, como mencionamos en el ejemplo anterior, también hay varias verificaciones, pero esta vez no profundizaremos en ellas);

22) entiende que debe enviarlo directamente a 192.168.A.1, ya que está en la misma red que él, por lo tanto, tiene una entrada correspondiente en su tabla de enrutamiento que le 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 el paquete de B.B.B.1:11111 para 3) el sistema operativo que se ejecuta en el servidor con la dirección e inicia los siguientes pasos para establecer una conexión TCP.

Al igual que en el caso anterior, en este caso el servidor con la dirección 192.168.A.1 no sabe nada de la computadora con la dirección 192.168.B.1, solo se comunica con B.B.B.1. La computadora con la dirección 192.168.B.1 tampoco sabe nada sobre el servidor con la dirección 192.168.A.1. Considera que se ha conectado desde la dirección A.A.A.1, y el resto está oculto.

Salida

Así es como ocurre todo en las conexiones dentro del túnel VPN entre la oficina del cliente y el entorno en la nube, así como en las conexiones fuera del túnel VPN. Si todavía tiene preguntas o necesita nuestra ayuda para resolver tareas en la nube, contáctenos 24x7.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster