Encaminhar hostnames diferentes para diferentes IPs internos através do roteador NAT

5

Eu tenho um endereço IP público, um roteador e vários servidores atrás do roteador.

Gostaria de encaminhar domínios diferentes (todos usando HTTP) através do roteador para diferentes servidores.

Por exemplo:

example1.com      =>  192.168.0.110
example2.com      =>  192.168.0.120
foo.example2.com  =>  192.168.0.130
bar.example2.com  =>  192.168.0.140

Eu entendo que isso pode ser feito usando o Port Forwarding, mas preciso de todos os hosts em execução na porta 80.

Encontrei algumas informações sobre o IP Masquerading, mas achei isso difícil de entender, e não tenho certeza se é o que estou procurando.

Outra solução que encontrei é direcionar todo o tráfego para o servidor Proxy reverso, que encaminha as solicitações para o servidor apropriado. E quanto ao iptables?

Estou usando um roteador Billion 7404 VNPX. Existe um recurso que esse roteador tenha que possa realizar isso?

Estas são minhas únicas opções? Eu perdi algo completamente? É um recomendado sobre os outros?

Eu pesquisei por aí, mas não acho que estou atingindo as palavras-chave corretas.

    
por John Gardeniers 22.12.2010 / 01:29

2 respostas

5

A melhor solução seria usar um proxy reverso HTTP. Para isso você pode usar:

Estamos usando o apache com mod_proxy, mas estou pensando em usar o pound.

Como um appliance de hardware, você pode usar um Cisco Content Service Switch. Veja: link

    
por 22.12.2010 / 02:19
0

Eu tive uma ideia e gostaria de saber se alguém tem algum feedback sobre isso.

Se eu usar a ideia do Proxy Reverso, acho que posso resolver o problema de maneira simples. Eu já estou usando Nginx nos outros servidores, então este é o meu servidor de escolha para um proxy reverso.

No roteador, irei encaminhar todas as conexões de entrada na porta 80 para o meu servidor Proxy Reverso. Eu vou ter o Nginx rodando neste servidor com o seguinte arquivo de configuração:

server {
    listen *:80;
    location / {
        proxy_pass    http://$host;
    }
}

O que isso parece fazer é fazer proxy da solicitação para o mesmo host. Mas aqui está o truque, no meu arquivo / etc / hosts vou mapear todos os domínios para seus IPs internos.

182.168.0.110 example1.com
182.168.0.120 example2.com
182.168.0.130 foo.example2.com
182.168.0.140 bar.example2.com

Assim, o servidor Proxy Reverso encaminhará o host solicitado para o mesmo host, mas, nesse ponto, deverá procurar o arquivo de hosts locais e mapeá-lo para o endereço IP interno. Isso também significa que posso "definir e esquecer" o arquivo de configuração do Nginx.

Um possível problema é que, se um nome de host local não tiver sido configurado, o proxy reverso enviará a solicitação de volta à Internet. No entanto, acho que o NAT impedirá que isso fique preso em um loop infinito.

Esta solução parece funcionar na minha cabeça e no papel, mas eu não vou conseguir configurar isso por um tempo.

Alguém pode ver alguma razão para isso não funcionar?

Obrigado.

    
por 22.12.2010 / 04:36