Não é possível acessar o IP público de dentro da rede

2

Eu tenho uma rede doméstica com um roteador que serve como um gateway para acesso à internet. Dentro dessa rede eu tenho um servidor com muitos serviços, todos mapeados dentro do roteador com DNAT.

Quando eu acesso o IP público da minha casa de fora da rede, o roteador redireciona as solicitações para o servidor interno corretamente; no entanto, quando eu acesso de dentro da casa, o roteador interpreta as conexões como se fossem para ele, por exemplo, se eu perguntar ao serviço http na porta 80 do IP público, a página de configuração do roteador será exibida.

O que está acontecendo?

    
por debuti 12.01.2015 / 02:56

1 resposta

4

Você está tentando resolver um problema que não existe. Basta usar o seu IP interno, isso fará com que os pacotes nunca atinjam o seu roteador (talvez o switch no seu roteador, mas não o próprio roteador). É melhor em todos os sentidos fazer assim. Aqui estão alguns benefícios:

  • Você terá acesso a todas as portas que desejar (não apenas às que configurou no roteador).
  • Você não desperdiçará memória do roteador com entradas NAT para serviços que só usa internamente.
  • Você vai achar MUITO mais fácil lembrar o IP interno e ele nunca mudará, a menos que você o diga.
  • Cada pacote fará menos saltos e cada salto estará em um interruptor, por isso será muito rápido.
  • Os pacotes não atingem o bloqueio que seu roteador cria enquanto ele disseca seus pacotes. Mesmo que seja um dia lento na sua rede, isso será muito mais rápido para você.
  • Seus servidores verão seu PC como um dispositivo distinto; Se você optar por usar um proxy externo para corrigir isso, você sempre será visto como originário desse proxy.
  • Se o seu serviço oferecer suporte, ele poderá usar uma paleta inteira de protocolos que não estão disponíveis para dispositivos externos. DHCP, WINS, transmissões UDP reais ... para citar apenas algumas.
  • Toda a segurança adicional que acompanha a sub-rede.

Tenho certeza de que existem mais motivos, porque é assim que deve ser feito. Além disso, você pode modificar facilmente o arquivo hosts ou o servidor DNS para fornecer um nome sem se preocupar com um serviço de tipo DNS dinâmico.

Atualizar

Algumas pessoas interpretaram essa pergunta perguntando como fazer um laptop funcionar da mesma forma dentro de uma rede como em outra rede. IMO, esta é uma questão completamente diferente e amplia significativamente o escopo da questão. Eu não vi nenhuma menção a este ser o mesmo computador de dentro e fora da rede (ou de qualquer coisa, mas um IP). Agora precisamos perguntar sobre coisas como, como você está se conectando, como você está resolvendo nomes de host, etc. No final, nenhuma resposta poderia resolver cada situação automaticamente.

Se você estiver disposto a executar um script minúsculo depois de se conectar à outra rede, então posso fornecer uma resposta simples que será bastante robusta.

Primeiro, crie um script em lote pequeno:

ping -n 1 some.local.ip.addy
if errorlevel 1 goto :isremote
cp /Y %WINDIR%\System32\Drivers\etc\hosts.local %WINDIR%\System32\Drivers\etc\hosts
goto :eof
:isremote
cp /Y %WINDIR%\System32\Drivers\etc\hosts.remote %WINDIR%\System32\Drivers\etc\hosts

Altere some.local.ip.addy para um IP real na sua rede local. Certifique-se de que seja algo que esteja sempre disponível (o IP do seu roteador funcionará bem, desde que responda a uma solicitação de PING).

Em seguida, crie um arquivo de hosts locais ( %WINDIR%\System32\Drivers\etc\hosts.local ) e coloque isso nele:

192.168.0.2 my-service.mynet.dyndns.org
192.168.0.3 my-service2.mynet.dyndns.org

Usando seus IPs reais do servidor. Isto é simplificado, gostaria de adicionar entradas que especificamente só funcionam dentro da rede também.

Em seguida, crie um arquivo de hosts remotos ( %WINDIR%\System32\Drivers\etc\hosts.remote ). Deixe em branco, não precisaremos dele agora, mas você poderá usá-lo mais tarde.

Em seguida, configure uma conta dyndns.org chamada mynet.dyndns.org e certifique-se de torná-la um curinga. É claro que o DynDNS é apenas uma das centenas de opções para um host DNS dinâmico .

Agora, depois de percorrer as redes, basta executar o script e voilà, tudo funciona da mesma maneira que dentro e (contanto que você esteja encaminhando corretamente suas portas e usando os nomes de host corretos) você só precisará use my-service.mynet.dyndns.org ou my-service2.mynet.dyndns.org ou mynet.dyndns.org:24829 para obter seus vários serviços. Se esse serviço suportar hosts virtuais, ele saberá como manipular a parte my-service. . Seu roteador provavelmente passará a mensagem para que você precise fornecer a porta também para os serviços que não sabem como lidar com a parte vhost (é claro que a maioria deles tem uma porta padrão no cliente, então você ser capaz de digitar mynet.dyndns.org normalmente).

O mesmo pode ser alcançado sem o script, se você tiver um servidor DNS em sua rede local, mas se fizer isso, provavelmente já saberá como fazê-lo. Se não, esse definitivamente merece sua própria pergunta.

    
por 12.01.2015 / 03:23