
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 eth0
con 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 eth1
y 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.com
desde mi LAN no funciona. Creo que esto se debe a que el servidor recibe el paquete de la interfazeth0
pero luego respondeeth1
y el otro dispositivo descarta la respuesta ya que proviene de una IP diferente. - Al arrancar, el servidor debe elegir
1.2.3.4
la red a la que dirigir el tráfico de Internet para que funcione el acceso externomydomain.com
. Sin embargo, dado que amboseth0
tieneneth1
acceso a Internet a través de las respectivas puertas de enlace, a veces se inicia y selecciona10.0.0.1
como puerta de enlace predeterminada y luego el accesomydomain.com
no funciona. Creo que este es un problema similar con el tráfico que ingresaeth0
pero saleeth1
.
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 por
eth0
- Todo el tráfico que ingresa
eth0
se responde a través deeth0
- Todo el tráfico que ingresa
eth1
se 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, tcpdump
pude 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.5
y luego el servidor identifica las 10.0.0.X
direcciones 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.com
redirigir 10.0.0.5
en 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.