acessando um servidor de sua LAN e de fora com o mesmo domínio

acessando um servidor de sua LAN e de fora com o mesmo domínio

Situação

Eu tenho um servidor na minha LAN executando um servidor LAMP, eu o uso para TeamSpeak, nextcloud, hospedagem pessoal etc.

Eu possuo um domínio "através" do cloudflare, redirecionando para meu endereço IP público.

Eu acesso o servidor pela LAN e por fora.

meu problema / o que eu quero mudar

Devido ao meu servidor estar na minha LAN, ele tem o mesmo endereço IP público do meu cliente (somente quando estou em casa, obviamente). Portanto, não consigo acessar meu servidor porque fazer ping em meu próprio IP público não funciona (comportamento normal, eu acho).

Portanto, para superar esse problema, uso meu arquivo hosts para redirecionar meu domínio para o endereço IP local do meu servidor. Mas toda vez que mudo de posição (quase todos os dias) tenho que editar este arquivo.

E isso também funciona apenas nos poucos dispositivos nos quais posso editar este arquivo. Portanto, no meu telefone (Android), por exemplo, não consigo acessar meus sites ou qualquer coisa específica do domínio.

existe alguma maneira de superar esse problema?

Na verdade, tenho algumas ideias

  • encontrar alguma maneira para que meu endereço IP público seja "pingável" da minha LAN
  • configurando um servidor DNS local
  • arquivos de zona DNS diferentes, dependendo do endereço IP solicitante, se isso for possível (talvez o cloudflare ofereça esse recurso). (se o endereço IP solicitante for o mesmo para o qual o domínio redireciona, ele responde com meu IP local para o servidor)

editar (17.03.17)

Esqueci de mencionar que também quero usar este servidor para e-mail no futuro. Então tem que estar preparado para isso.

Agora instalei um servidor DNS que resolve meu domínio no endereço IP local do servidor (usando bind9; também para reverso). Isso funciona perfeitamente, mas para isso tive que configurar manualmente meus servidores DNS (aqueles que meu computador está solicitando), resultando em tempos de carregamento mais lentos (de outros sites). Mas essa também não é a solução perfeita, porque alguém como meus amigos não consegue acessar o servidor por não ter meu próprio servidor DNS em sua lista. Alterar os servidores DNS padrão do meu roteador resolveria esse problema?

Infelizmente, tenho um endereço IP público dinâmico, que muda a cada três semanas. Até agora eu alterei minha entrada de DNS manualmente, mas isso tem que mudar (por isso mudei para o cloudflare, eles oferecem uma API para isso).

Para acessar meu servidor de fora, tive que redirecionar/encaminhar algumas portas para ele. Aqui está uma captura de tela deles:

insira a descrição da imagem aqui

Responder1

A resposta depende da sua utilidade. Se você usar http apenas para se comunicar com o servidor em sua LAN interna (por nome público), poderá alterar o comportamento com base na porta. Você também pode emitir um redirecionamento da sua lâmpada local com base no endereço IP de origem, por exemplo. (por exemplo, se tiver o endereço de origem como gateway externo, poderá redirecionar a solicitação para o endereço IP interno). Isso não lhe daria o mapeamento de nomes.

Mesmo assim, parece que há uma configuração incorreta no encaminhamento de porta do roteador. Não estou falando de hairpinning, que meus roteadores também não suportam, mas eu uso encaminhamento de porta e posso me conectar a servidores internos de dentro ou de fora de nossa lan roteamento através do domínio/interface externo. por exemplo, eu tenho uma entrada DNS home.domain.com que aponta para a interface wan do roteador. Esteja eu dentro ou fora, as solicitações para home.domain.com vão para a interface wan e, em seguida, são encaminhadas de volta para o servidor de destino correto. Isso ainda é indireto em alguns aspectos, mas funciona, então deve funcionar para você também.

Também é uma questão de quantos outros servidores fornecem a porta/serviço dentro da sua LAN. É só esse?

Por fim, também considero esse problema de vez em quando, pois também quero uma política de nome de host que dependa da rede à qual estou conectado. Talvez uma opção fácil seja {(a) escrever um script de agendador (se você estiver no Windows) ou (b) adicionar um script ao ifup/ifcfg } que faça ping no host Linux específico ou outros ativos conhecidos dentro da LAN e então defina o valor dos hosts com base nele. Não é tão elegante quanto executar seu próprio servidor DNS com suas próprias regras internas (o que, aliás, pode ser tão fácil de lidar, já que o dhcp pode fornecer o servidor DNS LAN interno.

Talvez não esteja funcionando para você porque você está usando o redirecionamento de IP para o seu nome de domínio, em vez de DNS dinâmico? Por exemplo, nosso IP público é dinâmico, então meus servidores internos atualizam periodicamente meu sub/domínio dnsmadeeasy com o endereço IP externo/público. Em seguida, a pesquisa do nome do host vai direto para o endereço IP correto, não é redirecionada para lá.

Responder2

Lamento ter demorado tanto para finalmente escrever esta resposta final.

(já mencionado na edição da pergunta)
A maneira perfeita seria ter um roteador que suporte hairpin/NAT. Mas o meu não. É por isso que decidi usar um servidor DNS. Eu só tive que alterar os servidores DNS padrão em meus computadores e telefone e assim por diante (o que, aliás, é possível em todos os sistemas operacionais comuns). Isso resultou em tempos de carregamento pouco mas perceptíveis (pelo menos acredito nisso) mais lentos. Mas não é um grande problema.

Mas o próximo (outras pessoas não conseguindo acessar o servidor quando estavam na minha LAN por não terem meu servidor DNS em sua lista) foi um problema maior e por isso decidi deixar por aí. A única maneira que presumo que existe é alterando os servidores DNS padrão no meu roteador. Mas para fazer isso eu teria que modificar toda a configuração, mas existem maneiras conhecidas de fazer isso.

Sobre o problema com a alteração do meu endereço IP:
escrevi para mim mesmo um pequeno script que parece a cada cinco segundos se eu tenho um novo endereço IP e, se for esse o caso, ele o altera automaticamente por meio da API cloudflare mencionada acima. Se alguém precisar e tiver preguiça de escrevê-lo, posso publicá-lo.

Obrigado @Beracah pela sua resposta :)

informação relacionada