GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué el tráfico de red de Linux solo pasa por eth0?

Hay dos modelos de diseño posibles para una pila de red TCP/IP:un modelo de host fuerte y un modelo de host débil. Está esperando un comportamiento que coincida con el modelo de host fuerte. Linux está diseñado para usar el modelo de host débil. En general, el modelo de host débil es más común, ya que reduce la complejidad del código de enrutamiento y, por lo tanto, podría ofrecer un mejor rendimiento. De lo contrario, los dos modelos de host son solo principios de diseño diferentes:ninguno es intrínsecamente mejor que el otro.

Básicamente, el modelo de host débil significa que el tráfico saliente se enviará por la primera interfaz enumerada en la tabla de enrutamiento que coincida con la dirección IP del destino (o la puerta de enlace seleccionada, si no se puede acceder directamente al destino), sin tener en cuenta la dirección IP de origen .

Esta es básicamente la razón por la que generalmente no es recomendable usar dos interfaces físicas separadas si necesita dos direcciones IP en el mismo segmento de red. En su lugar, asigne dos direcciones IP para una interfaz (alias de IP:por ejemplo, eth1 =192.168.8.142 y eth1:0 =192.168.8.140). Si necesita más ancho de banda del que puede proporcionar una única interfaz, conecte (o equipe, si corresponde) dos o más interfaces y luego ejecute ambas direcciones IP en el enlace/equipo.

Al ajustar una serie de configuraciones de sysctl y usar la funcionalidad de "enrutamiento avanzado" para configurar tablas de enrutamiento independientes para cada NIC, es posible hacer que Linux se comporte como un sistema de modelo de host fuerte. Pero esa es una configuración muy especial, y recomendaría pensarlo dos veces antes de implementarla.

Vea las respuestas en Linux Source Routing, Strong End System Model / Strong Host Model. si realmente lo necesitas.


Un punto adicional a considerar es que la interfaz eth1 está configurada con una máscara de subred de 255.255.255.255.

Esto significa que la interfaz eth1 está configurada para no esperar otros dispositivos (hosts) en su interfaz de red. Esto significa que no podrá comunicarse con su cliente 192.168.8.142.


Después de mucha búsqueda, encontré ¿Por qué netcat no usa la interfaz correcta asociada con la IP? , y este es el mismo problema. Como dijo @telcoM, el tráfico saliente se enviará a la primera interfaz, y ese es el problema, por lo que la forma más fácil de resolverlo es:

ip route add default via 192.168.8.142 dev eth1 table 142
ip rule add from 192.168.8.142 table 142

Esta ruta hará ip route get 192.168.8.135 from 192.168.8.142 devuelve eth1 en lugar de eth0. Entonces todo funciona como se esperaba.


Linux
  1. Linux – ¿Por qué Linux permite ‘init=/bin/bash’?

  2. Linux:¿por qué no funciona Setuid?

  3. Linux – ¿Por qué Locale Es_mx funciona pero no Es?

  4. Linux:¿el dispositivo Eth0 no parece estar presente, lo que retrasa la inicialización?

  5. Servicio de sistema operativo Linux 'red'

Ejemplos de Tcpdump - Captura de tráfico de red en Linux

Linux:¿cómo reenviar tráfico entre espacios de nombres de red de Linux?

Cómo monitorear y registrar el tráfico de red en Linux usando vnStat

¿Cómo puedo canalizar todo el tráfico de mi red a través de SSH?

Enrutar solo tráfico específico a través de VPN

¿Por qué hexdump intenta leer EOF?