Como o aviso habitual - procurei uma solução por algum tempo, mas ainda não encontrei nenhuma solução de trabalho.
Meta: crie uma solução de DNS dinâmico para acessar minha rede doméstica sem serviços de terceiros.
Configuração: Servidor da Internet executando nginx com domínios disponíveis, rede local com roteador, atribuído automaticamente um novo IP a cada dia pelo provedor.
Alcançado até agora: consegui usar nginx como proxy reverso para encaminhar solicitações para https://dyn.mydomain.tld
para https://my.current.ip.address
usando uma diretiva server
correspondente a
server {
443 ssl http2;
ssl on;
ssl_certificate /etc/letsencrypt/live/dyn.mydomain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dyn.mydomain.tld/privkey.pem;
location / {
proxy_pass https://my.current.ip.address;
}
}
Isso redirecionou com êxito e transparência a solicitação para a interface da Web do roteador local.
Problema: No entanto, é claro que preciso que isso funcione com meu endereço IP dinâmico. Eu posso dizer ao meu roteador para chamar um URL arbitrário, passando o novo endereço IP sempre que ele muda, então o que eu pareço é uma URL no meu servidor que irá atualizar o IP para o qual o nginx redireciona as requisições. O que estou procurando é uma solução que faça isso com tão pouco desempenho e (mais importante) implicações de segurança.
Pensamentos: O que eu pensei primeiro é ter esse IP em um arquivo que é lido pelo nginx, mas eu li isso deve dar um desempenho muito ruim (se é que é possível fazer uma variável ler de um arquivo na configuração do nginx).
Outra ideia seria ter um script para atualizar o endereço IP em algum lugar e ter o nginx recarregado para "estaticamente" carregar o valor. No entanto, isso significaria que eu teria que dar privilégios de script / URL de acesso público, pelo menos para reiniciar o nginx e talvez reescrever um arquivo - o que parece ser algo que eu não gostaria de fazer?
Pergunta (conciso): existe uma maneira de fornecer ao nginx um valor dinâmico para o encaminhamento de IP que pode ser atualizado pela execução de um script em uma solicitação HTTPS iniciada pelo roteador?
Afora: A implementação listada como "alcançado até agora" apresenta o certificado Lets Encrypt instalado no servidor para o navegador, enquanto o certificado (autoassinado) do navegador não é mais usado (ao acessar a página de configuração do roteador diretamente através de seu IP atual ou através de um serviço de DNS dinâmico de terceiros, o navegador reclama do certificado autoassinado). Embora isso pareça um progresso de conveniência, isso não é um problema de segurança, pois a identidade do roteador pode não ser verificada corretamente?