Deixe o Debian Stretch Webserver responder em ambas as placas de rede

Deixe o Debian Stretch Webserver responder em ambas as placas de rede

Eu obtiveumservidor web comdois nicsem sub-redes individuais192.168.188.xe192.168.198.x. Este servidor web está conectado a 2 roteadores diferentes (192.168.188.1 e 192.168.198.1) e via Portforwarding uma porta 80 diretamente à internet (cada roteador também possui um endereço IP público próprio).

     (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 -------+

Eu gostaria de reagir ao servidor na porta 80 porambossub-redes. Infelizmente, ele responde na configuração padrão apenas ao roteador que está definido como gateway padrão, o que é bastante lógico. Mas preciso agir para enviar os pacotes de volta para a interface de onde os pacotes vieram. Como conseguir isso? Não há nenhuma possibilidade de configuração adicional acima do encaminhamento de porta nos roteadores, por exemplo, para nat etc., qualquer coisa precisa ser feita no servidor web, que é o trecho debian.

Lembre-se de que só enfrento problemas de rede uma vez a cada 10 anos, portanto, simplifique. :)

Responder1

Se o seu servidor web estiver configurado corretamente para ouvir 0.0.0.0:80, que você pode verificar, ss -lentão o seu problema não é o problema de configuração do servidor web, mas o problema de roteamento. Apenas uma rota pode ser detectada por vez, mesmo se você tiver duas. A única maneira de conseguir o que deseja é adicionar uma segunda rota padrão e usar o roteamento da política de origem. Se o servidor for Linux isso pode ser feito via iptables. Tentaresseouesse.

Responder2

A solução requer uma configuração complexa de roteamento.

  1. O servidor web deve escutar os endereços ( 192.168.188.11e 192.168.198.11) ou o 0.0.0.0endereço, o que significa all addresses. Verifique com ss -tlnp sport == :80o comando.

  2. Crie uma tabela de roteamento separada para cadapernas:

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 as regras de roteamento para rotear as respostas pela mesma interface, através da qual a solicitação foi recebida:
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. Solução de problemas:
  • Use o tcpdump -ni <iface> 'tcp port 80'para farejar o tráfego. Pelo menos você deve ver as solicitações http de fora.
  • Confira a rota parasolicitações decom ip route get <dst> from <src> iif <iface>. Deve mostrar a localrota. Se mostrar outra coisa, verifique o comando rp_filterwith ip netconf show dev <iface>. Deveria estar offou no loosemodo.
  • Verifique a rota real pararespostaswith ip route get <dst> from <src-address>, onde o endereço de destino é o endereço de origem dosolicitações devocê viu na tcpdumpsaída.
  • Verifique as regras do firewall com o comando iptables-save -c. A configuraçãonão requerqualquer adicionalnaturalregras!

informação relacionada