Acessar um site através do IP público de servidores da Web a partir de um PC dentro da mesma LAN

4

Se duas máquinas residirem na mesma LAN (um PC e um servidor da Web), por que é necessário habilitar o 'NAT loopback' no roteador para que o PC acesse o site hospedado no servidor usando o IP público do roteador? qual porta encaminha na porta 80 para o servidor web)? Este artigo sobre DNS dinâmico ilustra a configuração perfeitamente link

(No exemplo em que estão tentando acessar o servidor da Web usando o URL www.example.com, para o propósito de minha pergunta que não é relevante, estou interessado apenas em acessar o servidor da web por meio do IP público, sem URL envolvido )

A última frase do artigo acima diz: “Se eles tentarem acessar o computador através do hostname www.example.com, o roteador NAT tentará rotear isso para fora da sua interface WAN e depois voltar para dentro. Na maioria dos casos, isso falhará ou retornará a interface da Web para o próprio roteador porque o roteador não entende o que o usuário está tentando fazer. ”

Alguém pode oferecer uma explicação técnica sobre por que o roteador fica confuso? O que realmente acontece com os pacotes quando chegam ao roteador nesta situação para confundi-lo?

Segunda pergunta, se o roteador suporta "NAT Loopback", o que é que esse recurso muda no roteamento para permitir que você use o IP público?

    
por FitzRoy 08.09.2009 / 01:20

1 resposta

5

Aqui está um exemplo. Alguns roteadores, como o Neufbox4 (um roteador fornecido por um ISP francês), estão executando o Linux. Nesses roteadores, o programa "iptables" é usado para configurar o comportamento do NAT (o iptables é uma espécie de canivete suíço para redes Linux).

Suponha que você tenha um servidor da Web (porta TCP 80) atrás do seu roteador, escutando o endereço da LAN 192.168.0.2 e adicione um mapeamento de porta (redirecionamento) para ele. Isso se traduz em algo como isto nos termos do iptables:

iptables -t nat -A PREROUTING -i wan -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2

Isso significa que "para cada pacote que entra pela interface WAN, direcionado para a porta TCP 80, envie-o para 192.168.0.2". Qual é exatamente o que você quer. Tudo está bem ... por enquanto.

Você precisa entender que o endereço IP associado à interface WAN do roteador é seu endereço público da Internet. Por exemplo, se o seu IP da Internet for 1.2.3.4, a interface "wan" no roteador terá o endereço IP 1.2.3.4.

Agora, suponha que você esteja tentando acessar seu servidor da Web a partir da sua LAN, digamos, do seu computador pessoal, no endereço 192.168.0.3, usando seu próprio endereço na Internet. Por exemplo, você digita " link " no seu navegador.

O que acontece é que o seu computador enviará um pacote direcionado para 1.2.3.4, porta TCP 80, na LAN. O roteador receberá este pacote. Mas não irá redirecioná-lo para 192.168.0.2. Por quê? Porque a regra iptables acima lida apenas com pacotes que entram na interface WAN, não da LAN!

Então, o que acontecerá então? Bem, isso depende de outras regras de rede no roteador. De um modo geral, uma das duas coisas acontecerá:

  • O roteador verá um pacote direcionado a si mesmo (lembre-se, 1.2.3.4 é um dos endereços IP do roteador, portanto, isso é perfeitamente normal). Na maioria dos roteadores, há um servidor da Web escutando na porta 80 para a interface de administração. Conseqüentemente, este servidor da Web manipulará o pacote, não o servidor da Web na sua LAN, e você obterá a interface de administração em vez do seu site.

  • Ou o roteador soltará o pacote por algum motivo, simplesmente porque não sabe como lidar com um pacote direcionado ao seu endereço WAN em sua porta LAN.

Tecnicamente, a solução é muito simples, consiste em uma regra iptables do formulário:

iptables -t nat -A PREROUTING -i lan -d 1.2.3.4 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2

Isto significa "para cada pacote que chega através da interface LAN dirigida à porta TCP 80, E com um endereço de destino 1.2.3.4, envie para 192.168.0.2". Isso é o que você chamaria de "NAT loopback".

No entanto, a maioria dos fabricantes de roteadores obviamente não está ciente do problema e não colocou essa regra (ou o equivalente no sistema proprietário do roteador) em seu produto ...

    
por 08.09.2009 / 01:52