Rota o tráfego da Internet para corrigir o servidor interno (com base no nome do host)

2

Eu tenho dois servidores na minha rede local, o que eu quero tornar acessível para a Internet.

Eu quero que todo o tráfego para server1.example.com seja roteado para 10.0.0.1 e todo o tráfego para server2.example.com seja roteado para 10.0.0.2

Se necessário, posso configurar um terceiro servidor para executar um proxy ou o que for necessário. Eu preferiria uma solução Mac / Linux.

A maioria das outras soluções que vi apenas serviços específicos de proxy. Eu quero proxy todo o tráfego.

Como posso rotear com base no nome do host?

    
por Travis 01.06.2017 / 17:34

2 respostas

2

Como @Andriy afirmou, usando apenas IP, isso não é possível.

Quando o computador se conecta a server1.example.com , ele está realmente resolvendo isso para um endereço IP, por exemplo: 123.123.123.123 .

Quando tiver o endereço IP, ele tentará se conectar à porta relevante no host 123.123.123.123 . Neste ponto, não há nenhum conceito de ' hostname ' ou DNS.

Se você quiser conseguir isso, então você tem duas opções:

  • Diferencie os serviços usando endereços IP públicos diferentes.
  • Diferencie os serviços usando portas diferentes.

Você já declarou que " não quer que seja específico do protocolo ", mas (por exemplo) se você estivesse usando HTTP (S), então isso seria possível.

Isso só é possível porque o HTTP inclui informações adicionais em seus cabeçalhos, depois de se conectar ao host em 123.123.123.123 , ele diz " Por favor, aja como se eu estivesse falando com server1.example.com ".

É trivial conectar-se a 123.123.123.123 e dizer " Por favor, aja como se eu estivesse falando com someotherhost.example.com " - mesmo que este host não seja publicamente anunciado. Se esta solicitação é acionada depende da sua configuração.

    
por 01.06.2017 / 18:24
3

Infelizmente, não há nomes de host no roteamento IP, apenas endereços IP. O cabeçalho IP contém apenas IPs de origem e de destino, não nomes de host.

Assim, você não pode fazer proxy de todo o tráfego com base em nomes, simplesmente porque os pacotes IP não têm nomes de domínio.

Alguns protocolos, como o HTTP 1.1, carregam nomes de domínio para dentro. Assim, você pode configurar um proxy HTTP reverso, examinar as solicitações HTTP e encaminhá-las para seus servidores internos com base nos nomes de domínio / URLs dentro dessas solicitações.

Há uma variedade de proxies reversos HTTP. Basicamente, a maioria dos servidores HTTP, como o Apache, pode ser configurada como um proxy reverso. Aqui está um exemplo de tal configuração:

link

    
por 01.06.2017 / 18:07