Linux routing - Acesse o IP externo da LAN

1

Estou usando o OpenWRT (baseado em Linux) no meu roteador. O roteador tem um IP local e um IP público. Eu tenho um nome de dyndns atribuído ao IP público. O roteador está encaminhando várias portas (por exemplo, ssh e https) para o meu servidor local.

Meta: Use o mesmo URL para acessar o servidor, não importando se o cliente está dentro ou fora da minha rede local.

Do lado de fora: Quando envio uma solicitação para o IP público. A solicitação é encaminhada para o meu servidor interno. Está tudo bem

De dentro: Quando envio uma solicitação para o IP público, ela acaba na interface interna do roteador. Assim, o encaminhamento de porta não funciona.

Ao escanear o IP local do roteador com o nmap de dentro, obtenho os mesmos resultados que o IP público de dentro. Então, parece que quando eu acesso o IP público por dentro, o tráfego ainda acaba no IP local.

O que posso fazer para acessar o servidor com o mesmo URL dentro e fora da minha rede local?

Editar:

  • A resolução de nomes está funcionando bem.
por ChrisK 21.07.2013 / 10:29

3 respostas

2

O mais fácil é configurar um servidor DNS interno que resolva o nome do host do seu site para o endereço IP interno.

Como alternativa, você pode inserir uma entrada / etc / hosts (ou equivalente) em sua máquina cliente e obter o mesmo resultado.

    
por 21.07.2013 / 10:30
2

Você precisa da resolução de nomes para funcionar de maneira diferente de dentro e de fora da rede. Sua entrada do dyndns será roteada para o IP externo. Rotas de firewall são diferentes de dentro e de fora da rota.

Adicione o nome do dyndns com o endereço IP do servidor ao arquivo de hosts locais no OpenWrt e o serviço DNS dnsmasq deve substituir a entrada da Internet. Se você configurou corretamente, seu nome deve resolver para o endereço IP do seu servidor de dentro da sua rede, e seu endereço IP externo de fora da rede.

É possível configurar o hairpin NAT, mas é relativamente difícil e frágil.

    
por 21.07.2013 / 15:58
1

Você poderia usar "view" no bind

acl "local_net" {
      192.168.0.0/16;
};

view "internal" in {

    match-clients { local_net; };
    recursion yes;
    additional-from-auth yes;
    additional-from-cache yes;

    zone "example.net" in {
        type master;
        allow-query { local_net; };
        allow-transfer { none; };
        allow-update { none; };
        file "master/example.net";
    };
...
}

master/example.net

@       IN      SOA     ns.example.net. root.example.net.  (
                                2013072101      ; Serial
                                3600            ; Refresh
                                900             ; Retry
                                3600000         ; Expire
                                3600 )          ; Minimum

@               IN      A       192.168.127.1
www             IN      CNAME   example.net.

Com essas configurações, todos os seus clientes locais receberão o endereço IP interno do seu nome de domínio público. Além disso, você pode resolver o problema com o iptables, mas seria uma solução mais complexa.

    
por 21.07.2013 / 12:14