¿Podría prestar su experiencia para comprender cómo configurar la separación del tráfico de red en dos interfaces de red?
Según tengo entendido hasta ahora, las rutas estáticas se usan para el tráfico de red que no está diseñado para usar una puerta de enlace predeterminada. La puerta de enlace predeterminada se usa para todo el tráfico que no está destinado a la red local y para el que no se ha especificado una ruta preferida en una tabla de enrutamiento.
El escenario es el siguiente.
- Cada computadora en la red tiene dos tarjetas de red.
- La interfaz de producción para cada uno es
eth0
(GW = 10.10.10.1). - La interfaz de gestión para cada uno es
eth1
(GW = 192.168.100.1). - El tráfico de producción y gestión debe estar totalmente separado.
He publicado, a continuación, qué cosas he probado con Debian Wheezy. Y mi problema es que, aunque tengo hosts configurados de tal manera que se comunican en ambas interfaces, los hosts individuales parecen "escuchar" el tráfico en la interfaz incorrecta. Por ejemplo:
Anfitrión 140
eth0 Link encap:Ethernet HWaddr 08:00:27:d1:b6:8f
inet addr:10.10.10.140 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fed1:b68f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1341 errors:0 dropped:0 overruns:0 frame:0
TX packets:2530 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:641481 (626.4 KiB) TX bytes:241124 (235.4 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:ad:14:b6
inet addr:192.168.100.140 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fead:14b6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7220 errors:0 dropped:0 overruns:0 frame:0
TX packets:5257 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:602485 (588.3 KiB) TX bytes:1022906 (998.9 KiB)
Desde el host 140, que ejecuta este comando: tcpdump -i eth0
. En una sesión separada en el host 140, ejecuto ping 192.168.100.50
.
19:17:29.301565 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 10, length 64
19:17:30.301561 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 11, length 64
19:17:31.301570 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 12, length 64
19:17:32.301580 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 13, length 64
¿Por qué veo el resultado anterior activado eth0
? Creo que solo debería ver el tráfico para 10.10.10.140. También veo esto eth1
, como se esperaba:
19:18:47.805408 IP 192.168.100.50 > 192.168.100.140: ICMP echo request, id 1605, seq 247, length 64
Si hago ping desde el Host 50 (los mismos ifconfig
resultados, solo un último quad diferente), entonces eth0
estoy en silencio y veo el eco ICMP activado eth1
, como se esperaba.
Me gustaría entender cómo configurar cada interfaz para manejar solo el tráfico del que es responsable en dos variedades principales de Linux. Creo que ya casi estoy allí, pero me falta algo que parece que no puedo encontrar.
- Debian Wheezy (7.x) o Debian Jessie (8.x)
- Enterprise Linux (6.x) (RedHat / CentOS / Scientific / Oracle).
Sé que una solución para Debian debería ser buena tanto para Wheezy como para Jessie, y que una solución para un EL debería ser la misma para todas las versiones de EL 6.x. Me gustaría evitar usar un script RC para ejecutar comandos, optando por usar los archivos de configuración.
En Debian, los archivos de configuración relevantes que conozco son:
/etc/network/interfaces
En EL 6.x, los archivos de configuración relevantes que conozco son:
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/route-eth0
/etc/sysconfig/network-scripts/route-eth1
/etc/sysconfig/network-scripts/rule-eth0
/etc/sysconfig/network-scripts/rule-eth1
Mi /etc/network/interfaces
archivo "Jessie" de Debian 8 :
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# Production interface
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.10.10.140
netmask 255.255.255.0
gateway 10.10.10.1
# Management interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.100.140
netmask 255.255.255.0
Creo que netstat -anr
podría ilustrar el problema:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 eth0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
iptabels -L -t nat
Respuestas:
Me encantaría saber más sobre este tema para refinar la configuración para que sea lo mejor posible, pero esto es lo que tengo hasta ahora. Incluso sin habilitar el filtrado ARP en todas las interfaces de red (
net.ipv4.conf.all.arp_filter = 0
), como lo menciona @spuk, el tráfico parece estar completamente separado en esta configuración.El archivo,
/etc/iproute2/rt_tables
es el mismo en EL 6.xy DEB 7/8, al menos. Este es el archivo que crea una tabla de enrutamiento con nombre para rutas estáticas.Arriba, el número de la ruta estática nombrada, 1, es esencialmente arbitrario; o, cada ruta estática obtiene su propio número único entre 1 y 252.
El archivo,
/etc/network/interfaces
en DEB 7/8, al menos:El resultado de
ip route show
en Debian:El
/etc/sysconfig/network
archivo EL 6.x :Arriba, GATEWAY es la ruta predeterminada. A continuación, si BOOTPROTOCOL estaba configurado en DHCP, la ruta predeterminada se adquiriría de DHCP.
EL
/etc/sysconfig/network-scripts/ifcfg-eth0
archivo EL 6.x , sin "HWADDR" y "UUID":EL
/etc/sysconfig/network-scripts/ifcfg-eth1
archivo EL 6.x , sin "HWADDR" y "UUID":El
/etc/sysconfig/network-scripts/route-eth1
archivo EL 6.x :El
/etc/sysconfig/network-scripts/rule-eth1
archivo EL 6.x :El resultado de
ip route show
en EL 6.x:fuente
No he leído completamente toda su publicación (lo siento, realmente no puedo pasar el tiempo en este momento), pero creo que puede estar relacionado con la forma en que Linux implementa el modelo de host IP :
De esa misma página:
Es decir, en Linux, por defecto, las direcciones IP "pertenecen al host", no estrictamente "a la interfaz". Puede cambiar ese comportamiento a través de la
arp_filter
,rp_filter
,arp_announce
,arp_ignore
sysctls (ya ha recibido LVS: El problema de ARP , visto aquí ). Además, vea ip-sysctl.txt .fuente