Eu tenho um domínio example.com
e uso o DNS do Azure para resolver todos os nomes de host que devem estar visíveis na Internet. Defini mail.example.com
para apontar 198.51.100.123
e pode ser resolvido por clientes externos sem nenhum problema.
O example.com
também é usado na minha LAN e usa bind para resolver todos os endereços IP locais, o que funciona bem para os nomes de host locais. Meu servidor DHCP também sabe como lidar com isso e atualiza os arquivos de zona corretamente. Todas as solicitações de DNS para outras zonas são encaminhadas para o DNS da Cloudflare.
Gostaria que meu servidor usasse o servidor de nomes local e, se não conseguir encontrar uma entrada no arquivo de zona local, entre em contato com o servidor do Azure e verifique-o. Quando adiciono as seguintes entradas ao meu arquivo de zona, isso funciona para estes nomes de host:
external-dns A 1.1.1.1
vpn NS external-dns
www NS external-dns
ftp NS external-dns
Os curingas não funcionam mais no Bind9, então não posso usar * NS external-dns
. Existe alguma outra maneira de conseguir isso?
Responder1
Use uma response-policy
zona em vez de uma zona mestre paraexample.com
Ao tentar resolver um nome de host, o bind procurará response-policy
primeiro no arquivo de zona e, se não encontrar a resposta, continuará procurando.
Aqui está um exemplo de configuração:
options {
# Your normal options
response-policy { zone "local_example_com"; };
};
zone "local_example_com" {
type master;
file "master/local_example.zone";
allow-query {none;};
};
Em seguida, adicione um arquivo de zona chamado master/local_example.zone
contendo o seguinte:
$TTL 24H
@ SOA LOCALHOST. named-mgr.example.com (1 1d 1h 30d 2h)
NS LOCALHOST.
host1.example.com A 192.168.1.1
host2.example.com A 192.168.1.2
host3.example.com A 192.168.1.3
host4.example.com A 192.168.1.4
Quando você tentar resolvê host1.example.com
-lo, obterá a resposta da response-policy
zona e, quando tentar resolvê- mail.example.com
lo, irá resolvê-lo usando example.com
servidores de nomes.
Responder2
Um curinga não é possível, então decidi usar uma abordagem diferente:
- Todos os sites externos estão hospedados no
example.com
domínio. - Todos os sites internos estão hospedados no
int.example.com
domínio.
O example.com
não foi alterado de forma alguma e ainda está disponível no DNS do Azure (como sempre foi). O servidor Bind interno agora hospeda o int.example.com
domínio e o servidor DHCP também é atualizado para enviar int.example.com
como domínio local.
Quero que meus sites internos estejam disponíveis via HTTPS, então preciso poder criar certificados usando LetsEncrypt para o int.example.com
domínio. LetsEncrypt não consegue acessar meus serviços internos, então tenho que reverter para a verificação de DNS.
Adicionei a int.example.com
zona como uma zona filha example.com
no DNS do Azure. Esta zona não terá nenhuma entrada DNS, pois para isso utilizamos o servidor local. Não queremos expor nenhuma informação interna a servidores DNS externos. Seu único objetivo é a verificação de DNS para LetsEncrypt, portanto, AcmeSh deve ter as credenciais adequadas para criar/remover registros TXT. eu seguieste guiapara criar as credenciais adequadas. Minha configuração está usando o DNS do Azure, mas deve funcionar para qualquer DNS que suporte subzonas.