Não é possível obter IP == IP de destino para IPs públicos na rede doméstica?

0

Eu estou em uma rede doméstica NATed (10.0.0.0/8) com meu modem a cabo tendo IP público 1.1.1.2 e um servidor web "www" na rede interna 10.1.10.2 tendo a porta 80 encaminhada pelo modem a cabo.

Agora eu uso um cliente de desktop (10.1.10.3) para acessar www a partir de um navegador; O DNS traduz isso para o IP público do servidor da Web de 1.1.1.2 e o navegador trava. Isso acontece em uma variedade de máquinas internas dentro da minha rede, mas funciona bem para clientes fora da minha LAN.

Além disso, os clientes internos podem inserir 10.1.10.2 em seu navegador e acessar o servidor da Web sem problemas.

Pergunta: Alguma ideia do motivo pelo qual o IP público causa falha?

Nota: consertei esse problema executando meu próprio DNS (via dnsmasq) e definindo "www" para 10.1.10.2, enquanto encaminhava todos os outros nomes para um servidor de nomes externo.

    
por Fixee 24.08.2012 / 16:51

1 resposta

3

Para que isso funcione, seu roteador precisa suportar um recurso chamado NAT suspenso. Basicamente, ele tem que realizar a tradução NAT, mesmo que o pacote não esteja na interface WAN (que é a interface onde o NAT é normalmente aplicado). Alguns roteadores suportam isso, outros não. Linux, por exemplo, não faz, e muitos roteadores domésticos são construídos com o Linux. Você deve ter um dos que não o faz.

Esteja ciente de que, mesmo que o NAT hairpin funcione, todo o tráfego nesse cenário é forçado a passar pelo roteador, enquanto se você se comunicar diretamente com o IP interno do servidor web, o tráfego pode ir diretamente para o servidor web na camada 2. Por esse motivo, sua solução dnsmasq é melhor. Essa solução nem sempre é possível (por exemplo, se alguns hosts atrás do NAT forem estaticamente configurados para usar um servidor de nomes diferente daquele fornecido pelo servidor DHCP), mas se funcionar para você, você deve ir com ele.

    
por 24.08.2012 / 18:21