El enrutamiento de Linux no maneja nombres de dominio

El enrutamiento de Linux no maneja nombres de dominio

Me pregunto si tengo un VPS con 2 Interfaces de Red (1.1.1.1 Y 2.2.2.2) y 1.1.1.1 configurado como principal...

eth0 = 1.1.1.1
eth0:1 = 2.2.2.2

Ahora quiero enrutar todo el tráfico para dominio.com (no sé el dominio si usa Cloudflare) para que pase a través de la IP 2.2.2.2 eth0:1

ex1:

si no lo ejecuta, wget domain.compasará por 2.2.2.2 eth0:1
pero si wget google.comlo ejecuta, pasará por 1.1.1.1 eth0

ex2:

si voy a "whatismyip.com" para pasar a través de eth0, se mostrará que mi IP es "1.1.1.1",
pero si voy a "whatismyipaddress.com", se pasará a través de eth0:1, por lo que mostrará que mi IP es "2.2.2.2"

Respuesta1

Hay algunas cosas a considerar:

El enrutamiento de Linux no maneja nombres de dominio

Hay muchas opciones de configuración para el enrutamiento en Linux, pero ninguna acepta nombres de dominio simples. Después de todo, estamos hablando de enrutamiento IP. Por lo tanto, es necesario definir reglas para las direcciones IP, que obviamente se "romperán" cuando cambien los registros DNS de un dominio.

Preferencia de interfaz

En este caso, hay 2 interfaces que proporcionan una ruta a la misma subred (0.0.0.0/0, también conocida como Internet). Para indicarle al Kernel que prefiera una interfaz específica, debemos aplicar el enrutamiento basado en políticas (PBR).

Como su nombre lo indica, el enrutamiento basado en políticas funciona definiendo una política (también conocida como "regla") para determinar qué interfaz usar. Sin políticas, el núcleo elegirá la primera ruta que coincida con la red de un destino.

Rutas, Reglas, Tablas

El kernel utiliza rutas para determinar cómo manejar los paquetes. Una ruta es una definición simple que incluye la dirección de destino y el enlace (interfaz) a utilizar.

Las rutas se agrupan en tables, la tabla que se utiliza depende de las políticas definidas.

Una policy(o regla) le dice al kernel qué tabla examinar para enrutar paquetes. La definición de la política incluye el origen, el destino y la tabla de enrutamiento de un paquete que se examinará.

Mostrar rutas y políticas actuales

Para mostrar las rutas utilizadas actualmente por el sistema, ejecute ip route

Esto muestra todas las entradas en la maintabla de enrutamiento. Se puede acceder a otras tablas ejecutando ip route show table <tablename>.

Para mostrar las políticas utilizadas actualmente, ejecute ip rule

Esto enumera todas las políticas/reglas utilizadas por el kernel. Se repiten de arriba a abajo, hasta que una regla coincida con el paquete que se está manejando.

Ejemplo

echo "101 out1" >> /etc/iproute2/rt_tables
ip rule add from all to 3.4.5.6 table out1
ip route add default via 10.0.0.1 dev eth0 src 1.1.1.1 table out1
ip route add 10.0.0.0/8 dev eth0 src 1.1.1.1 table out1

Estos comandos crearán una nueva tabla de enrutamiento out1y la agregarán 10.0.0.1como puerta de enlace para acceder a Internet. El tráfico dirigido a 3.4.5.6(que debe reemplazarse con una dirección IP real resuelta del dominio de destino) se enviará a través de la puerta de enlace predeterminada definida en la out1tabla, utilizando el dispositivo eth0y la IP especificados 1.1.1.1.

Recomiendo leer algunos tutoriales y guías existentes para familiarizarse con la terminología. Busque iproute2y linux advanced routing and traffic control.

Y por último, pero no menos importante: pruebe sus cambios antes de aplicarlos en un sistema en vivo. Los errores ocurren, personalmente prefiero freír una VM en lugar de un servidor remoto.

información relacionada