Configurar múltiples conexiones Ethernet en un servidor Linux

Configurar múltiples conexiones Ethernet en un servidor Linux

Tengo la siguiente topología

                                                                                        .───────────────.        
   ┌──────────────────┐                                                             _.─'                 `──.    
   │                  │                                                          ,─'                         '─. 
   │    ISP Router    │ Dynamic IP                                              ;                               :
   │     with NAT     ├─────────────────────────────────────────────────────────:           Internet            ;
   │                  │                                                          ╲                             ╱ 
   └─────────┬────────┘                                                           '─.                       ,─'  
             │                                                                       `──.               _.─'     
             │  10.0.0.1                                                                 `──────┬──────'         
             │                                                                                  │                
      .──────┴────.                                                                       .─────┴─────.          
   ,─'             '─.                   ┌─────────────────────────┐                   ,─'             '─.       
 ,'                   `.                 │                         │                 ,'                   `.     
;          LAN          :  Static DHCP┌──┴───┐                  ┌──┴───┐ Static IP  ;      Public Net       :    
:                       ;─────────────┤ eth1 │     My Server    │ eth0 ├────────────:                       ;    
 ╲     10.0.0.0/24     ╱     10.0.0.5 └──┬───┘                  └──┬───┘  1.2.3.5    ╲     1.2.3.4/20      ╱     
  `.                 ,'                  │       Debian Buster     │    mydomain.com  `.                 ,'      
    '─.           ,─'                    │                         │                    '─.           ,─'        
       `─────────'                       └─────────────────────────┘                       `─────────'

Por razones históricas, mi ISP utiliza una red separada para proporcionar IP estáticas. Esto significa que tengo que conectar mi servidor directamente a una conexión especial que esté directamente expuesta a Internet (en el diagrama esto es eth0con IP 1.2.3.5).

Sin embargo, uso este mismo servidor como NAS en mi casa y como es una red completamente separada, lo conecto usando una interfaz diferente eth1y creo una asignación DHCP estática con dirección 10.0.0.5. De esta forma, otros dispositivos de la red doméstica pueden encontrarlo y acceder a los soportes de la red.

Por último, tengo un registro DNS con mi dominio, en este ejemplo mydomain.com, apunta a 1.2.3.5.

Me encuentro con un par de problemas:

  • Cuando intento acceder mydomain.comdesde mi LAN no funciona. Creo que esto se debe a que el servidor recibe el paquete de la interfaz eth0pero luego responde eth1y el otro dispositivo descarta la respuesta ya que proviene de una IP diferente.
  • Al arrancar, el servidor debe elegir 1.2.3.4la red a la que dirigir el tráfico de Internet para que funcione el acceso externo mydomain.com. Sin embargo, dado que ambos eth0tienen eth1acceso a Internet a través de las respectivas puertas de enlace, a veces se inicia y selecciona 10.0.0.1como puerta de enlace predeterminada y luego el acceso mydomain.comno funciona. Creo que este es un problema similar con el tráfico que ingresa eth0pero sale eth1.

Si bien estoy familiarizado con aspectos básicos de redes, no tengo experiencia en tener un servidor conectado a múltiples redes a la vez como esta. Idealmente me gustaría configurar el servidor para que:

  • Todo el tráfico de Internet sale poreth0
  • Todo el tráfico que ingresa eth0se responde a través deeth0
  • Todo el tráfico que ingresa eth1se responde a través deeth1

Mi servidor ejecuta Debian, agradecería cualquier ayuda.

EDITAR: Entonces, después de deshabilitar la puerta de enlace eth1 y jugar un poco, tcpdumppude confirmar que el tráfico ingresa desde eth0 y sale de eth1. El problema es que el ISP no realiza NAT en el tráfico que va al punto final 1.2.3.5y luego el servidor identifica las 10.0.0.Xdirecciones como ubicadas en la interfaz eth1.

Respuesta1

Este es un problema de enrutamiento que se puede resolver con enrutamiento basado en fuente o enrutamiento de políticas. Esto implica dos tablas de enrutamiento, una para cada dirección de origen:

Verhttp://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.htmlpara más detalles.

Respuesta2

Creo que esto se debe a que el servidor recibe el paquete de la interfaz eth0 pero luego responde a través de eth1.

No. El enrutador ISP con NAT conectará la dirección 10.0.0.0 de su cliente a una dirección dinámica de ISP, por lo que su servidor responderá a esa dirección en lugar de a la interna. Hay excepciones como FTP que no son necesariamente compatibles con NAT ya que pasarán su dirección IP interna al otro extremo de la conexión; sin embargo, en el caso general, su tráfico NAT permanecerá en eth0.

Verifique sus registros para confirmar que los clientes salen a 1.2.3.4 y que el servidor obtiene conexiones de las direcciones NAT ip.ip.ip.ip.

Al arrancar, el servidor debe elegir 1.2.3.4 como red a la que dirigir el tráfico de Internet para que el acceso externo funcione a través de midominio.com. Sin embargo, dado que tanto eth0 como eth1 tienen acceso a Internet a través de las respectivas puertas de enlace

No hagas eso. Tener múltiples puertas de enlace predeterminadas en configuraciones de múltiples servidores rara vez funciona como la gente pretende. En términos generales, solo se deben utilizar múltiples puertas de enlace predeterminadas cuando ambas rutas brindan acceso a redes idénticas, como por ejemplo para redundancia de enrutador/alta disponibilidad en una configuración empresarial. Dado que el enrutador de su ISP a Internet y su conexión directa a la red pública no son idénticos, debe eliminarlo. eth0 debería tener una ruta predeterminada, eth1 debería tener una ruta a 10.xxx. Aún puedes hacer esto con DHCP, sin embargo, abordaría esto como una reserva/exclusión para 10.0.0.5 y configuraría la IP del servidor manualmente.

Aparte de la ruta predeterminada extraña, lo que usted describió es la operación predeterminada normal. Asegúrese de buscar otros problemas no descritos anteriormente:

  • Archivos de host que difieren de DNS (¿intentó que los clientes se conectaran a 10.0.0.5 en lugar de 1.2.3.4? Me gusta usar un nombre técnico internamente como webserver1.internalfqdn.com y un nombre descriptivo externamente comowww.externalfqdn.com)
  • Las tablas de rutas manuales no se reflejan arriba (¿intentó utilizar un acceso directo de 10.0.0.xa 1.2.3.4 a 10.0.0.5 como enrutador? Esto puede funcionar, pero requiere una configuración adicional)
  • Protocolos de enrutamiento (por ejemplo, RIP) (en realidad, una variación de lo anterior, pero si tiene habilitado RIP u otra publicación de rutas, es posible que esté publicando rutas incorrectas).

Respuesta3

Terminé resolviendo el problema usando undividir DNSenfoque, implementar un servidor DNS en mi host y hacer que toda la LAN lo use como el servidor DNS predeterminado. Allí, agregué reglas de reescritura de DNS personalizadas para mydomain.comredirigir 10.0.0.5en lugar de la dirección pública. De esta manera, los hosts en la LAN resuelven mi dominio en la IP interna y los hosts fuera de la LAN lo resuelven en la IP pública, con el beneficio de que el tráfico local no tiene que salir a través de la red del ISP como antes.

Otra alternativa que creo que debería poder solucionar este problema esenrutamiento en horquilla. Sin embargo, el enrutador que proporciona mi ISP no parece admitirlo.

información relacionada