Estoy configurando un servidor de nombres BIND (v9.16).
Su objetivo principal es funcionar como recurso habitual para nuestros servidores internos. Sin embargo, para un par de zonas específicas (las que hospedamos), necesito configurarlo como reenviador. El objetivo es evitar crear una dependencia de los servidores DNS raíz y TLD, y poder continuar utilizando nuestros servicios internos incluso en el caso de que nuestras conexiones de red externas no estén disponibles.
Esto fue fácil de configurar, aquí las partes relevantes de mi configuración:
options {
allow-recursion {
// Here comes the list of our inside networks
};
};
zone "somedomain.example" IN {
type forward;
forward first;
forwarders {
// Here comes the list of the primary servers for this zone
};
// ... repeated for all forward zones
Esta configuración funciona como se esperaba, pero con un pequeño inconveniente. La lista de servidores primarios debe repetirse para todas las zonas "adelante". Tenemos bastantes, todas con direcciones IPv4 e IPv6, y ^C/^V la lista de todas las zonas no es la cosa más elegante que he visto, ni es muy compatible con DRY.
Sé que la forwarders
declaración también se puede incluir en la options
sección global, pero a partir de experimentos básicos entiendo que esta declaración no se aplica a las zonas de reenvío, solo está destinada a un servidor de nombres de solo reenvío (la documentación no es muy clara, pero menciona que "si no forwarders
hay declaración, [...] anulándose los efectos de cualquier reenviador en la options
declaración").
¿Hay alguna manera de crear una lista de reenviadores con nombre, más o menos de la misma manera que creamos ACL, y usar este nombre simbólico en la forwarders
declaración dentro de las zonas relevantes?
Respuesta1
Como muchos otros demonios y servicios, ISC Bind admite unainclude
directiva en sus archivos de configuración.
Eso le permite mover una lista de ajustes de configuración y directivas a un archivo diferente, y puede hacer referencia a esa inclusión cuando sea necesario.
Eso reduce su carga administrativa a mantener solo su lista de reenviadores en un solo lugar y solo necesita copiar la referencia donde sea necesaria.
// "/var/named/includes/forwarders.conf"
// master list of forwarders
forwarders {
192.0.2.21;
192.0.2.88;
};
y luego en tu nombre.conf:
zone "somedomain.example" IN {
type forward;
forward first;
include "/var/named/includes/forwarders.conf";
}
zone "otherdomain.example" IN {
type forward;
forward first;
include "/var/named/includes/forwarders.conf";
}