
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.com
pasará por 2.2.2.2 eth0:1
pero siwget google.com
lo 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 main
tabla 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 out1
y la agregarán 10.0.0.1
como 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 out1
tabla, utilizando el dispositivo eth0
y la IP especificados 1.1.1.1
.
Recomiendo leer algunos tutoriales y guías existentes para familiarizarse con la terminología. Busque iproute2
y 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.