![DNS: delegar la resolución de un subdominio a otro servidor de nombres](https://rvso.com/image/1502893/DNS%3A%20delegar%20la%20resoluci%C3%B3n%20de%20un%20subdominio%20a%20otro%20servidor%20de%20nombres.png)
Estoy configurando un servidor DNS en casa para que me resulte más fácil asignar un alias a algunos de mis servidores locales y también como un proyecto para comprender mejor el DNS. Como soy nuevo en esto, perdone (y corríjalo si lo desea) cualquier error de terminología.
El propósito de mi servidor DNS local es utilizar mi dominio para acceder a algunas de mis máquinas locales. Entonces, digamos que mi dominio es my-domain.com
. Tengo un servidor de medios en casa al que quiero acceder media.my-domain.com
y tengo dos servidores DNS locales que uso para este propósito. Estos servidores DNS delegan en Google DNS para otras consultas.
Aquí está mi archivo de zona my-domain.com
, que está almacenado /etc/bind/zones/db.my-domain.com
en mi servidor DNS local ns1
:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.my-domain.com. admin.my-domain.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; name servers - NS records
@ IN NS ns1.my-domain.com.
@ IN NS ns2.my-domain.com.
;
; name servers - A records
ns1.my-domain.com. IN A 10.55.55.55
ns2.my-domain.com. IN A 10.55.55.56
;
; 10.55.55.0/24 - A records
media.my-domain.com. IN A 10.55.55.100
Aquí está mi archivo de opciones que está almacenado /etc/bind/named.conf.options
en mi servidor DNS local ns1
:
acl "trusted" {
10.55.55.0/24; # home network
};
options {
directory "/var/cache/bind";
recursion yes;
allow-recursion { trusted; };
listen-on { 10.55.55.55; };
allow-transfer {none; }; # disable zone transfers
forwarders {
8.8.8.8; # google1
8.8.4.4; # google2
};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Aquí 10.55.55.0/24
está mi subred local y ns1
mis ns2
servidores DNS primario y secundario, respectivamente.
Lo estoy usando my-domain.com
para otros fines en Internet, por lo que, por ejemplo, cuando accedo, admin.my-domain.com
me lleva a la consola de administración de un sitio web visible públicamente. Es decir, si realiza una nslookup
activación admin.my-domain.com
desde los servidores DNS de Google, la verá asignada a una dirección IP pública accesible globalmente.
Desafortunadamente, después de implementar mis servidores DNS locales, no puedo resolverlo admin.my-domain.com
correctamente. Mis nslookup
solicitudes llegan a mis servidores DNS locales, que no están configurados para este subdominio, y recibo "Sin respuesta" de mi DNS local.
En cambio, el comportamiento que me gustaría es que mis servidores DNS reenvíen solicitudes a my-domain.com
Google DNS y solo proporcionen respuestas para ns1.my-domain.com
, ns2.my-domain.com
y media.my-domain.com
. He visto algunas preguntas similares a la mía, pero las respuestas tienden a ser crear un único archivo de zona para cada subdominio. ¿Es esta realmente la única manera? Realmente me gustaría poder decir "si he especificado una regla, x.my-domain.com
entonces sigue esa regla. De lo contrario, delega en la cadena (a Google DNS en mi caso)".
No estoy seguro de cómo solucionar este problema con Google ya que no tengo muy clara la terminología y como soy un novato total, no sé por dónde empezar a solucionarlo yo mismo. ¿Es posible lo que estoy pidiendo? Cualquier ayuda sobre cómo podría implementar este comportamiento o buscarlo sería muy apreciada. ¡Gracias!
Respuesta1
El problema es que configuró Bind para que tenga autoridad para todo example.com
.
Por lo tanto, debe configurar su Bind local para que contenga no solo sus registros DNS internos, sino también una copia de todos sus registros DNS públicos en el archivo de zona para example.com
.
Alternativamente, en lugar de hacer que Bind tenga autoridad para example.com
reservar un subdominio de ejemplo.com para su uso interno, haga que su DNS interno solo tenga autoridad para eso. es decir, cree una zona llamada home.example.com
y use media.home.example.com
. De esa manera, no podrá tener registros conflictivos en su DNS público e interno.