Deje que Debian Stretch Webserver responda en ambas NIC

Deje que Debian Stretch Webserver responda en ambas NIC

Obtuveunoservidor web condos nicsen subredes individuales192.168.188.xy192.168.198.x. Este servidor web está conectado a 2 enrutadores diferentes (192.168.188.1 y 192.168.198.1) y a través de un puerto 80 directamente a Internet (cada enrutador también tiene una dirección IP pública propia).

     (external ip)                Portforwarding:80                   (external ip)
    ---[ROUTER]----                                                  ---[ROUTER]----
     192.168.188.1               Router internal IP                   192.168.198.1        
           |                                                               |
           |                                                               |
           |                                                               |
           |                                                               |
           +------- 192.168.188.11:80 [WEBSERVER] 192.168.198.11:80 -------+

Me gustaría reaccionar el servidor en el puerto 80 paraambossubredes. Desafortunadamente, responde en la configuración predeterminada solo al enrutador que está configurado como puerta de enlace predeterminada, lo cual es bastante lógico. Pero necesito actuar para enviar los paquetes de regreso a la interfaz, de donde provienen los paquetes. ¿Cómo lograr esto? No hay ninguna posibilidad de configuración adicional por encima del reenvío de puertos en los enrutadores, por ejemplo, para nat, etc., se debe hacer cualquier cosa en el servidor web, que es Debian Stretch.

Tenga en cuenta que solo me enfrento a problemas de red una vez cada 10 años, así que hágalo simple. :)

Respuesta1

Si su servidor web está configurado correctamente para escuchar 0.0.0.0:80, a través del cual puede verificar, ss -lentonces su problema no es el problema de configuración del servidor web, sino el problema de enrutamiento. Sólo se puede detectar una ruta a la vez, incluso si tienes dos. La única forma de lograr lo que desea es agregar una segunda ruta predeterminada y utilizar el enrutamiento de política de origen. Si el servidor es Linux se puede hacer mediante iptables. Intentaresteoeste.

Respuesta2

La solución requiere una configuración compleja del enrutamiento.

  1. El servidor web debe escuchar ambas direcciones ( 192.168.188.11y 192.168.198.11) o la 0.0.0.0dirección, es decir all addresses. Compruébalo con ss -tlnp sport == :80el comando.

  2. Cree una tabla de enrutamiento separada para cadapiernas:

ip route add 192.168.188.0/24 dev <iface1> table 1
ip route add 0/0 via 192.168.118.1 dev <iface1> table 1

ip route add 192.168.198.0/24 dev <iface2> table 2
ip route add 0/0 via 192.168.198.1 dev <iface2> table 2
  1. Configure las reglas de ruta para enrutar las respuestas a través de la misma interfaz, a través de la cual se ha recibido la solicitud:
ip rule add from 192.168.188.11 lookup 1 pref 1000
ip rule add from 192.168.198.11 lookup 2 pref 2000
  1. Solución de problemas:
  • Utilice tcpdump -ni <iface> 'tcp port 80'para olfatear el tráfico. Al menos deberías ver las solicitudes http desde fuera.
  • Consulta la ruta parapeticionescon ip route get <dst> from <src> iif <iface>. Debería mostrar la localruta. Si muestra algo más, verifique el comando rp_filterwith ip netconf show dev <iface>. Debería estar offo en el loosemodo.
  • Verifique la ruta real pararespuestascon ip route get <dst> from <src-address>, donde la dirección de destino es la dirección de origen delpeticioneshas visto en la tcpdumpsalida.
  • Verifique las reglas del firewall con el comando iptables-save -c. La configuraciónno requiereAlgo adicionalnat¡normas!

información relacionada