Tenho 2 servidores DNS (BIND9) (primário, secundário) e 1 domínio. Eu tenho um servidor web com IP dinâmico. Portanto, se meu IP mudou, não consigo acessar meu site pelo domínio, porque nos servidores DNS o berço IP da zona de domínio mudou.
Minha pergunta é: Como posso atualizar minha zona do meu servidor com meu endereço IP público a cada x vez? Alguém pode me fornecer um script de atualização no Linux (Debian 9)?
Obrigado
Responder1
Você pode usar RFC 2136 "DNS UPDATE", criando scripts para a nsupdate
ferramenta ou usando um cliente de terceiros compatível:
Chave secreta compartilhada (TSIG)
Gere uma chave secreta para autenticar as atualizações:
$ tsig-keygen -r /dev/urandom | tee tsig-key.private key "tsig-key" { algorithm hmac-sha256; secret "7P6HbRZRJCmtauo/lV0jwN9wkMgBTUikhf9JuaTvYT4="; };
Essa chave é conhecida pelo servidor e pelo cliente, e por mais ninguém.
Copie o texto impresso em seu arquivo
named.conf
. (Você pode ter diversas chaves para hosts diferentes, cada uma com um nome exclusivo nokey "…"
campo.)Habilite atualizações dinâmicas na configuração da zona:
zone … { … update-policy { /* grant <key_name> <policy> <record_types> */ grant "tsig-key" name myserver.example.com ANY; }; };
Várias políticas diferentes podem ser utilizadas; por exemplo,
zonesub
permite atualizar ointeirozona, esubdomain dyn.example.com
tem o significado óbvio.Execute atualizações:
$ nsupdate -k tsig-key.private > zone example.com > del myserver.example.com > add myserver.example.com 3600 A 100.64.1.1 > send
Existem vários clientes capazes de atualizações automáticas.
Chave pública/privada (SIG(0))
Gere um par de chaves:
$ dnssec-keygen -r /dev/urandom -T KEY -n USER myclient.example.com $ ls K* Kmyclient.example.com.+005+07399.key Kmyclient.example.com.+005+07399.private
O
*.key
arquivo contém a chave pública – adicione-a à sua zona DNS.O
*.private
arquivo contém a chave privada – copie-a para o computador cliente. (Na verdade, copieambosarquivos para o computador cliente.)Configure
update-policy { }
exatamente da mesma maneira que o TSIG.Execute atualizações também da mesma maneira usando
nsupdate -k <filename>.private
.
(Observação: embora os nomes das chaves TSIG sejam arbitrários, as chaves SIG(0) são armazenadas no DNS e, portanto, sempre nomeadas como nomes de host/subdomínios. O nome da chavenãoprecisa corresponder ao nome do host que você está atualizando.)
Kerberos (GSS-TSIG)
Um pouco fora do escopo, mas o BIND9 também suporta isso (principalmente para uso com o Active Directory).