Encaminhar nomes de host diferentes para IPs internos diferentes por meio do roteador NAT

Encaminhar nomes de host diferentes para IPs internos diferentes por meio do roteador NAT

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 servidores diferentes.

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

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

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

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 deste roteador que pode fazer isso?

Essas são minhas únicas opções? Perdi alguma coisa completamente? Um é recomendado em detrimento dos outros?

Pesquisei, mas acho que não estou encontrando as palavras-chave corretas.

Responder1

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 libra.

Como dispositivo de hardware, você pode usar um Cisco Content Service Switch. Ver:http://www.cisco.com/en/US/products/hw/contnetw/ps792/index.html

Responder2

Tive uma ideia e gostaria de saber se alguém tem algum feedback sobre ela.

Se eu usar a ideia do proxy reverso, acho que posso resolver o problema de maneira bastante simples. Já estou usando o Nginx nos outros servidores, então este é meu servidor preferido para proxy reverso.

No roteador, encaminharei todas as conexões de entrada na porta 80 para meu servidor proxy reverso. Terei 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 é proxy da solicitação para o mesmo host. Mas aqui está o truque: no meu arquivo /etc/hosts mapearei 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

Portanto, o servidor proxy reverso roteará o host solicitado para o mesmo host, mas neste ponto eledeveprocure o arquivo de hosts locais e mapeie-o para o endereço IP interno. Isso também significa que posso “definir e esquecer” o arquivo de configuração do Nginx.

Um problema potencial é 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 não poderei configurá-la por um tempo.

Alguém pode ver alguma razão pela qual isso não funcionará?

Obrigado.

informação relacionada