Actualmente estoy configurando un entorno en 2 sitios. Todos los servidores son Linux/Ubuntu. El primer sitio es mi oficina y el segundo sitio es AWS. Tengo 2 servidores en AWS dentro de una VPC con VPN de sitio a sitio Web01 - 172.31.24.106 Revproxy01 - 172.31.17.216
Tengo 1 servidor y 1 cámara IP en la oficina Servidor1 - 192.168.102.1 Cámara1 - 192.168.102.79
La VPN está en el Servidor 1 (IPSec Strongswan) y está configurada para conectarse a un sitio de AWS para ubicar la VPN en el lado de AWS.
Con mucha investigación y tiempo, tengo todo en funcionamiento. Web01 y Revproxy01 pueden hacer ping al Servidor1 y el Servidor1 puede hacer ping a Web01 y Revproxy01.
Mi siguiente paso es poder hacer ping a Camera1 desde Web01 y RevProxy01. Eventualmente me gustaría acceder a la transmisión http de las cámaras desde web01 y Revproxy01.
Creo que necesito configurar el enrutamiento (en el Servidor01) para pasar los datos de Web01 a Camera01 a través del Servidor1.
¿Apreciaría mucho la ayuda de alguien y aprender cómo hacer esto?
Respuesta1
Bien, no sé hasta qué punto comprende cómo funciona el enrutamiento, así que intentaré explicarlo y veremos qué sentido puede encontrarle a mi explicación. La explicación no es del todo correcta porque en realidad hay más ruedas girando, pero debería ser suficiente.
En cada salto en la red, la pila de IP analiza cada paquete IP entrante. Se compara eldestinoDirección IP con su tabla de enrutamiento. Puedes ver esa tabla de enrutamiento con ip route
.
Primero comprueba si la IP del paquete corresponde a una de sus propias interfaces. Si es así, entonces el paquete está destinado al salto en sí y el salto "se traga" el paquete (lo empuja hacia la pila, por ejemplo, hacia la pila TCP).
Si el paquete no estaba destinado al salto en sí, el salto verifica y recorre su propia tabla de enrutamiento desde la ruta más significativa a la menos significativa. A /24
te dice que 24 de 32 bits son significativos. A /16
sería menos significativo entonces. En el caso de ip route
la pila de IP se compararía la dirección IP del paquete con las rutas mostradas de abajo hacia arriba. Gana la primera ruta que coincida con la IP del paquete. Entonces, al atravesar la tabla de enrutamiento con una IP de destino 192.168.102.10, la ruta 192.168.0.0/16 coincidirá con el paquete. Una ruta de 192.0.0.0/16 no lo hará. Puede utilizar la sipcalc
herramienta para mostrarle información de dirección de red.
La última ruta coincidente será la ruta predeterminada que coincida con todo.
Cada ruta contiene el siguiente salto, que es hacia donde se enviará el paquete. Quizás puedas ver mejor el siguiente salto en /sbin/route -n
. Es la columna "enrutador" o la columna "interfaz", dependiendo de si la red que representa la ruta está conectada directamente a una interfaz de red que está presente en el salto o no.
Cuando un paquete pasa por un túnel VPN, el paquete IP se empaqueta en un paquete diferente. En lo que a usted respecta, solo cuentan las IP internas de la entrada VPN y el punto de salida. El paquete cae en el punto de entrada y sale del punto de salida "mágicamente".
Ahora debería poder determinar en cada salto qué ruta debe tomar el paquete, incluidos los saltos de origen y destino. Si no toma el camino que te gusta entonces tendrás que agregar la ruta correspondiente. Puede ser una ruta de un solo host, también conocida como 192.168.102.79/32
(¡todos los bits son significativos! ¡Coincide solo con un único host!). Busque algunos ejemplos de ip route add
.
Lo que también desea hacer es observar los paquetes atravesando saltos. Puedes usarlo tcpdump -n -i interface
para eso (por ejemplo tcpdump -n -i eth0
). Entonces, si ve un paquete atravesando el salto 1 y cree que debería ir al salto 2, pero no puede verlo atravesando el salto 2, entonces las rutas en el salto 1 probablemente sean incorrectas y estén enviando el paquete al destino incorrecto.
De esta manera, debería poder analizar cada tabla de enrutamiento salto a salto, desde su origen hasta su destino, y ver qué ruta tiene el paquete.deberíatomar cada salto, posiblemente agregar rutas para que el paquete tome la ruta correcta y verificar que efectivamente lo haga con tcpdump
.
Tenga en cuenta que tanto las rutas desde el origen hasta el destinoyLa parte posterior debe configurarse correctamente.
Tenga en cuenta que una ruta incorrecta puede hacer que la máquina sea inaccesible a través de la red. Por lo tanto, es posible que desee tener una forma de reiniciar la máquina con un mecanismo independiente que a través de la red.
Una vez que su enrutamiento funcione, asegúrese de que sobreviva al reinicio. F.ej. escribiendo la nueva ruta /etc/network/interfaces
(el lugar donde necesita registrarse depende de cómo se configura la pila de red en esa máquina. Esto varía mucho entre diferentes Unixes, distribuciones de Linux, etc.)
Espero que esto te ayude más.