Redes con múltiples Nics


16

Tengo un servidor Ubuntu 12.04 con 4 adaptadores de red. Necesito usar cada NIC para una función separada. Aquí hay una descripción de mi configuración:

etho = 10.234.0.2 netmask = 255.255.255.252 gw = 10.234.0.1 This is on vlan 234
eth1 = 10.235.0.2 netmask = 255.255.255.252 gw = 10.235.0.1 This is on vlan 235
eth2 = 10.236.0.2 netmask = 255.255.255.252 gw = 10.236.0.1 This is on vlan 236
eth3 = 10.237.0.2 netmask = 255.255.255.252 gw = 10.237.0.1 This is on vlan 237

Necesito poder dirigir el tráfico hacia y desde las direcciones IP individuales para servicios web separados. es decir, 10.235.0.2 es un sitio web, 10.236.0.2 es un sitio diferente y 10.237.0.2 es un tercer sitio. La primera IP es para la gestión del servidor.

Creo que el problema es un problema de enrutamiento, pero soy lo suficientemente nuevo en Linux para no tener una comprensión completa de los entresijos de las capacidades de enrutamiento.

Esto es lo que hay en mi /etc/network/interfacesarchivo:

auto lo
iface lo inet loopback

# WWW Management
auto eth0
iface eth0 inet static
address 10.234.0.2
netmask 255.255.255.252
gateway 10.234.0.1
nameseervers 10.230.1.103, 10.230.70.70

# WWW
auto eth1
iface eth1 inet static
address 10.235.0.2
netmask 255.255.255.252
gateway 10.235.0.1

# WTB
#auto eth2
#iface eth2 inet static
#address 10.236.0.2
#netmask 255.255.255.252
#gateway 10.236.0.1

# Moodle
#auto eth3
#iface eth3 inet static
#address 10.237.0.2
#netmask 255.255.255.252
#gateway 10.237.0.1

He desactivado las dos últimas redes solo para aliviar la confusión.

Gracias de antemano por toda la ayuda, comentarios y sugerencias.

Respuestas:


15

Después de hacer una configuración normal de solo eth0, volví y agregué config para eth1. Con solo eth0 arriba, la tabla de rutas era:

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

Pero una vez que mencioné eth1, el orden de las instrucciones de ruta predeterminadas determinó qué interfaz se usaba siempre. Como se muestra a continuación, sucede que elige la ruta eth1 a la puerta de enlace 192.168.1.65.

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.1.65 dev eth1 metric 100
default via 192.168.0.97 dev eth0 metric 100

solo una declaración de puerta de enlace

El primer problema puede ser la ruta predeterminada adicional 'vía 192.168.1.65'. Aparece allí si la definición eth1 en / etc / network / interfaces tiene una declaración "gateway 192.168.1.65". Elimine cualquier declaración de puerta de enlace adicional y devuelva la interfaz:

# ifdown eth1
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

configurar una nueva tabla de enrutamiento

Cree una nueva tabla de enrutamiento separada que contenga una ruta predeterminada apropiada para todo el tráfico que sale de eth1. El número de la tabla aquí no es importante; 101 simplemente no es la tabla de enrutamiento principal. Haga esto con un comando 'post-up' en la configuración de eth1 en / etc / network / interfaces. Agregue solo una publicación en eth1; No lo agregue a ninguna de las eth1: subinterfaces.

post-up ip route add default via 192.168.1.65 dev eth1 table 101

Rebote eth1. La tabla de enrutamiento principal no cambia, y la tabla 101 contendrá la ruta predeterminada vía 192.168.1.65 si eth1 está activo.

# ifdown eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101   (ie, table is empty, no output)
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101
default via 192.168.1.65 dev eth1

nueva regla de enrutamiento

Agregue una regla de enrutamiento para usar la tabla 101 para seleccionar una ruta predeterminada para los paquetes que deberían salir eth1.

# ip rule add from 192.168.1.64/27 lookup 101
# ip rule show
0:     from all lookup local
32765: from 192.168.1.64/27 lookup 101
32766: from all lookup main
32767: from all lookup default

Agregue la regla al /etc/network/interfacesarchivo también:

post-up ip rule add from 192.168.1.64/27 lookup 101

Ahora asegúrese de agregar limpieza para eliminar la ruta y la regla cuando la interfaz se caiga:

post-down ip rule del from 192.168.1.64/27
post-down ip route del default via 192.168.1.65 table 101

[EDITAR para ubuntu 16.04+] Como se indica aquí y de la prueba que hice con esta ayuda, ip route2 ha cambiado su estructura de comandos. Para hacer el trabajo tendrás que adaptarte solo un poco para hacer en el orden cómo van los man ip puntos .

up ip route add default table 101 dev eth1 via 192.168.1.65
up ip rule add from 192.168.1.64/27 lookup 101
down ip rule del from 192.168.1.64/27
down ip route del default table 101 via 192.168.1.65

O terminará después de un comando ifdown - ifup con un mensaje de error @ifdown (mensaje estándar para indicar que los periféricos no están configurados correctamente), y @ifup la ausencia de una ruta en la tabla 101.


Bien, pero no me gusta usar rc.local ... buscando un paso final más elegante ...
drAlberT

Fue editado, supongo :) ..
drAlberT

¿Existe realmente un archivo / etc / interfaces, o es un error tipográfico?
user100464

@ user100464/etc/network/interfaces
Zenexer

Hay una referencia a la primera en la respuesta. No puedo editarlo
user100464
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.