1
Nuevo Gateway virtual

Solved 3 Respuestas 9 Views
Tengo un servidor con 3 interfaces de red, 2 a dos ISPs y 1 a la red local

Necesito que desde una PC cliente, cambiando su Gateway pueda salir por uno u otro ISP

Cual seria la forma mas simple de tener un segundo Gateway ?

3 Respuestas

0
Mejor respuesta

En la placa de red local podes utilizar una ip secundaria, tipo:

# ifconfig eth0 192.168.1.1 netmask 255.255.255.0
# ifconfig eth0:1 10.0.0.1 netmask 255.255.255.0

Nota: la ip secundaria, puede ser de cualquier rango, no tiene por que ser en el mismo segmento o uno distinto.

Luego, con iptables e iproute2 haces la magia:

Creamos una segunda tabla de ruteo y marcamos los paquetes que provengan de la red 10.0.0.0/24

echo "300    secondgw" >> /etc/iproute2/rt_tables
iptables -t mangle -A PREROUTING -i eth0 -s 10.0.0.0/24 -j MARK --set-mark 300
 

Luego agregamos una regla, donde los paquetes marcados con '300', utilicen una tabla de ruteo distinta (secondgw), donde defeniremos que el gateway es 172.16.100.1, esta ip la tenes que reemplazar por el gateway de tu segundo proovedor de isp
ip rule add fwmark 300 table secondgw
ip route add default gw 172.16.100.1 table secondgw
ip route flush table main

De esta manera, cuando los paquetes proovengan de la red 10.0.0.0/24 van a ser reedirigidos por otro gateway. En esta pregunta, tenian un situación parecida:  http://sysarmy.com.ar/help/?qa=17/5-redes-adsl-balanceadas

 

respondido por LordEpzylon (4,310 puntos) Jul 8, 2015
seleccionada por edux Ago 14, 2015
1Comentarios
comentado por LordEpzylon (4,310 puntos) Jul 8, 2015
Como verás, estableciendo marcas, podrás definir por que tabla de ruteo van los paquetes, por lo que podes rutear por puertos, por ip o por cualquier cosa que puedas determinar con iptables, que es casí todo, por no decir cualquier propiedad del paquete
1
El servidor es un linux?

En tal caso podrías levantar una IP alias sobre la iface de LAN y con diferentes tablas de routing (ip route) y con reglas de routing (ip rule) + marcas de iptables podrías encaminar el tráfico por una tabla u otra, logrando que salga por un ISP u otro.

Si te sirve desarrollo un poco más.

Saludos
respondido por mcharr (420 puntos) Jul 8, 2015
2Comentarios
comentado por Nairda (1,160 puntos) Jul 8, 2015
SI, es un server linux
Vos decis crear un alias con otro IP, y que ese sea el nuevo GW, y despues un par de reglas para routear... me interesa
comentado por mcharr (420 puntos) Jul 8, 2015
Bien explicó Gustavo en otra respuesta lo que te recomendaba. Esto tiene una sola cuestión que no caí en la cuenta hoy por la mañana.
No hay forma de identificar a que IP del gateway llegó el paquete cuando está como virtual (a no ser que sean de distintas redes como en el ejemplo de Gustavo) dado que el paquete no trae esa información.
Monté un escenario de pruebas y haciendo # iptables -t mangle -A PREROUTING -i eth0:1 -j MARK... no funciona.

Quizás puedas lograr esto armando un escenario un poco más complejo con un bridge y 2 placas virtuales con diferente MAC, pero ya es muy rebuscado me parece.
1
Con iproute como te dicen, pero si la pc cliente tiene ip fijo, o sabes que cambia poco, podes hacerlo sin marcar paquetes y sin un segundo gateway, ruteando por direccion source en vez de "por" destino.

Simplemente creas una tabla, le definis como gateway uno de los ISP y agregas el ip de la pc a la tabla.

Aca tenes un ejemplo: http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html

Con esto funciona, yo lo usaba para routear VPNs por una conexion especifica.

Saludos
respondido por luigibalzani (10,470 puntos) Jul 9, 2015
...