Enrutamiento entre varias subredes

10

Digamos que quiero crear una red interna con 4 subredes. No hay enrutador o conmutador central. Tengo una "subred de administración" disponible para vincular las puertas de enlace en las cuatro subredes (192.168.0.0/24). El diagrama general se vería así:

10.0.1.0/24 <-> 10.0.2.0/24 <-> 10.0.3.0/24 <-> 10.0.4.0/24

En palabras, configuro una única caja de Linux en cada subred con 2 interfaces, una 10.0.x.1 y 192.168.0.x. Estos funcionan como dispositivos de puerta de enlace para cada subred. Habrá varios hosts para cada subred 10.x / 24. Otros hosts solo tendrán 1 interfaz disponible como 10.0.xx

Quiero que cada host pueda hacer ping entre sí en cualquier otra subred. Mi pregunta es primero: ¿es esto posible? Y segundo, si es así, necesito ayuda para configurar iptables y / o rutas. He estado experimentando con esto, pero solo puedo encontrar una solución que permita pings en una dirección (los paquetes icmp son solo un ejemplo, en última instancia, me gustaría tener capacidades de red completas entre hosts, por ejemplo, ssh, telnet, ftp, etc.) .

línea gris
fuente

Respuestas:

8

Ok, por lo que tiene cinco redes 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24y 192.168.0.0/24, y cuatro cajas de enrutamiento entre ellos. Digamos que las cajas de enrutamiento tienen direcciones 10.0.1.1/192.168.0.1, 10.0.2.1/192.168.0.2, 10.0.3.1/192.168.0.3, y 10.0.4.1/192.168.0.4.

Deberá agregar rutas estáticas a las otras 10.0.x.0/24redes en cada cuadro de enrutador, con comandos como este (¡EDITADO!):

# on the 10.0.1.1 box
ip route add 10.0.2.0/24 via 192.168.0.2
ip route add 10.0.3.0/24 via 192.168.0.3
ip route add 10.0.4.0/24 via 192.168.0.4

y las rutas correspondientes en las otras cajas de enrutador. En los cuadros sin enrutamiento con una sola interfaz, establezca la ruta predeterminada a la que apuntar 10.0.x.1. Por supuesto, también tendrá que agregar las direcciones estáticas y las máscaras de red en todas las interfaces.

También tenga en cuenta que Linux no funciona como un enrutador de forma predeterminada, deberá habilitar el reenvío de paquetes con:

echo 1 > /proc/sys/net/ipv4/ip_forward

Los ipcomandos anteriores no hacen que la configuración sea persistente; la forma de hacerlo depende de la distribución.

Como dije, no he probado esto y puede haber olvidado algo.

Johan Myréen
fuente
Gracias por la ayuda aquí. Lo que aconsejó funciona cuando hago ping de enrutador a enrutador (10.0.1.1 a 10.0.2.1), pero no cuando hago ping a un host diferente. Por ejemplo, hacer ping de 10.0.1.1 a 10.0.2.2 da como resultado que no se enrute tráfico al host 10.0.2.2. ¿Sugeriría hacer alguna manipulación de iptables de alguna manera? He estado experimentando con esto durante un par de días, pero fue en vano.
greyline
Las técnicas de enrutamiento estándar deberían ser suficientes. Aquí hay una lista de verificación: 1. todas las direcciones deben configurarse en los hosts (por ejemplo, ip addr add 10.0.2.2/24 dev eth0), 2. las rutas deben configurarse en los cuatro cuadros del enrutador como se indica arriba, 3. la ruta predeterminada en los cuadros que no son enrutadores debe configurarse para que apunte al cuadro de enrutamiento en la red (por ejemplo, la ruta ip agrega el valor predeterminado a través de 10.0.1.1), 4. cat / proc / sys / net / ipv4 / ip_forward en los cuatro cuadros de enrutadores imprimir "1".
Johan Myréen
Corregí un error en los comandos de ruta de IP anteriores. También probé esta configuración, aunque solo con cuatro máquinas: dos cajas de enrutamiento y dos hosts en los lados 10.0.x.0. ¡Funciona!
Johan Myréen
Johan, gracias por tu aporte adicional. Esta configuración funciona. Resulta que la imagen de Linux que estaba usando tenía reglas predeterminadas de iptables que eran problemáticas. Gracias por ayudarme en mi aprendizaje sobre esto.
greyline