Tengo 2 servidores DNS (BIND9) (primario, secundario) y 1 dominio. Tengo un servidor web con IP dinámica. Entonces, si mi IP cambió, no puedo acceder a mi sitio a través del dominio, porque en los servidores DNS la IP de la zona del dominio cambió.
Mi pregunta es: ¿Cómo puedo actualizar mi zona desde mi servidor con mi dirección IP pública cada x veces? ¿Alguien puede darme un script de actualización en Linux (Debian 9)?
Gracias
Respuesta1
Puede utilizar RFC 2136 "DNS UPDATE", ya sea mediante un script de la nsupdate
herramienta o mediante un cliente de terceros compatible:
Clave secreta compartida (TSIG)
Genere una clave secreta para autenticar las actualizaciones:
$ tsig-keygen -r /dev/urandom | tee tsig-key.private key "tsig-key" { algorithm hmac-sha256; secret "7P6HbRZRJCmtauo/lV0jwN9wkMgBTUikhf9JuaTvYT4="; };
Esta clave es conocida por el servidor y el cliente, y nadie más.
Copie el texto impreso en su
named.conf
. (Puede tener varias claves para diferentes hosts, cada una con un nombre único en elkey "…"
campo).Habilite las actualizaciones dinámicas en la configuración de la zona:
zone … { … update-policy { /* grant <key_name> <policy> <record_types> */ grant "tsig-key" name myserver.example.com ANY; }; };
Se pueden utilizar varias políticas diferentes; por ejemplo,
zonesub
permite actualizar elcompletozona, ysubdomain dyn.example.com
tiene el significado obvio.Realizar actualizaciones:
$ nsupdate -k tsig-key.private > zone example.com > del myserver.example.com > add myserver.example.com 3600 A 100.64.1.1 > send
Hay varios clientes capaces de realizar actualizaciones automáticas.
Clave pública/privada (SIG(0))
Genere un par de claves:
$ 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
El
*.key
archivo contiene la clave pública; agréguela a su zona DNS.El
*.private
archivo contiene la clave privada; cópiela en la computadora cliente. (En realidad, copiaambosarchivos a la computadora cliente.)Configure
update-policy { }
exactamente de la misma manera que con TSIG.Realice actualizaciones también de la misma manera usando
nsupdate -k <filename>.private
.
(Nota: si bien los nombres de las claves TSIG son arbitrarios, las claves SIG(0) se almacenan en DNS y, por lo tanto, siempre se denominan como nombres de host/subdominios. El nombre de la claveno esSin embargo, debe coincidir con el nombre de host que está actualizando).
Kerberos (GSS-TSIG)
Un poco fuera de alcance, pero BIND9 también lo admite (principalmente para usar con Active Directory).