DNS comodín con BIND

14

Estoy tratando de configurar BIND para que capture todas y cada una de las solicitudes que se le realicen y las señale a un conjunto específico de servidores NS y a un registro A específico.

Tengo alrededor de 500 dominios, y estoy agregando nuevos a razón de 10-15 por día, por lo que no quiero agregar explícitamente una zona para cada dominio.

Mi configuración actual es: en mi named.conf, tengo una vista (llamada external) con la siguiente zona:

zone "." {
        type master;
        file "ext.zone";
};

Esto coincide con todas las solicitudes.

ext.zone es:

$ TTL 3600
@ EN SOA. root.nsdomain.com. (
                              1; De serie
                         3600; Actualizar
                          300; Procesar de nuevo
                         3600; Expirar
                         300); Caché negativo TTL


        EN NS ns1.example.com
        EN NS ns2.example.com

ns1 IN A 192.0.2.4
ns2 IN A 192.0.2.5

*. EN UN 192.0.2.6

por lo tanto, el objetivo es: para todas las solicitudes NS, devolver ns1.example.comy ns2.example.com para todas las solicitudes A, excepto donde está ns1.example.como ns2.example.com, devolver 192.0.2.6. Para el ns1.example.comregreso 192.0.2.4, para el ns2.example.comregreso 192.0.2.5.

Esto casi funciona, el único problema es que cuando hago una excavación, obtengo:

dig @localhost somedomain.example

; > DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3> @localhost somedomain.example
; (1 servidor encontrado)
;; opciones globales: printcmd
;; Tengo respuesta:
;; código de operación: QUERY, estado: NOERROR, id: 37733
;; banderas: qr aa rd; PREGUNTA: 1, RESPUESTA: 1, AUTORIDAD: 2, ADICIONAL: 2

;; PREGUNTA SECCIÓN:
; somedomain.example. EN UN

;; SECCION DE RESPUESTA:
somedomain.example. 3600 IN A 192.0.2.6 // como se esperaba

;; SECCIÓN DE AUTORIDAD
. 3600 IN NS ns1.example.com. // esperado, no sé si el "." Al principio es malo, sin embargo.
. 3600 IN NS ns2.ejemplo.com. // véase más arriba.

;; SECCION ADICIONAL
ns1.example.com. 3600 IN A 192.0.2.6 // no esperado, esto debería ser 192.0.2.4
ns2.example.com. 3600 IN A 192.0.2.6 // no esperado, esto debería ser 192.0.2.5

¿Cómo puedo solucionar esto? ¿Estoy haciendo algo horrible? ¿Hay una mejor manera de hacer esto?

Jon Wu
fuente

Respuestas:

12

Su origen para la zona es .según su configuración. Va a crear registros de ns1.y ns2.en lugar de ns1.example.com.e ns2.example.com. Desde ns1.example.comy ns2.example.comno están definidas, que se corresponden con el comodín.

EDITAR: aquí hay una edición de su configuración y zona:

zone "example.com." {
        type master;
        file "ext.zone";
};

zona ext .:

$TTL    3600
@       IN      SOA     ns1 root (
                              1         ; Serial
                         3600         ; Refresh
                          300         ; Retry
                         3600         ; Expire
                         300 )        ; Negative Cache TTL


        IN      NS      ns1
        IN      NS      ns2
        IN      A       192.0.2.6


ns1     IN      A       192.0.2.4
ns2     IN      A       192.0.2.5

*      IN      A       192.0.2.6

Todo en la zona es relativo al nombre de la zona en la configuración nombrada, por lo que agregar una segunda zona solo apunta al mismo archivo:

zone "example.net." {
    type master;
    file "ext.zone";
};
Cakemox
fuente
Decidí intentar especificar el dominio completo en los RR, así que cambié: ns1 IN A 1.2.3.4 a ns1.nsdomain.com. EN A 1.2.3.4, esto no funcionó. Ahora todas mis solicitudes devuelven el SOA en lugar de NS / A.
Jon Wu
¿Puedes actualizar o agregar la nueva zona?
Cakemox
Agregué una nueva zona para nsdomain.com y dejé el antiguo "." zona sola. en la zona nsdomain.com, agregué su ext.zone (renombrado a nsdomain.zone). Ahora las solicitudes de cualquier dominio, excepto nsdomain.com, funcionan como se supone que deben hacerlo, devuelven ns1.nsdomain.com/ns2.nsdomain.com con las IP correctas (1.2.3.4/1.23.5). Pero, cualquier solicitud de nsdomain.com en sí devuelve el SOA y no hay una respuesta válida :(. ¡Cerrar!
Jon Wu
Debe agregar explícitamente un registro A para el vértice. El comodín no cubre eso. Actualizaré mi ejemplo.
Cakemox
Gracias, eso funciona! ¿Por qué tiene que especificar el bit A dos veces en esta zona, pero no en la zona "comodín" (zona ".", Mi zona de extensión original)? ¿Tienes algún buen enlace para leer sobre estas cosas? ¡Gracias de nuevo!
Jon Wu
1

Para configurar un comodín de subdominio bind, debe usar el siguiente formato:

name.tld.   IN  A   IP    # main domain ip
*.name.tld. IN  A   IP    # wildcard subdomains ip

Ejemplo:

mydomain.com.   IN  A   1.1.1.1
*.mydomain.com. IN  A   1.1.1.1 
Pedro Lobito
fuente
0

Según su configuración ns1.example.comes 192.0.2.4y ns2.example.comes 192.0.2.5. Debe configurar la resolución del nombre del servidor NS en la example.comzona para obtener las IP adecuadas.

Espero dejarme en claro. Vuelve a mí si necesitas más información.

Istvan
fuente
Entonces, ¿debo agregar otra zona para nsdomain.com y configurar el NS / A allí para nsdomain.com?
Jon Wu
Entonces, si tiene 2 zonas como somedomain.com y nsdomain.com, debe configurar la información relacionada con nsdomain en la zona adecuada. La respuesta corta es sí, tienes que configurar otra zona.
Istvan
-5

¡Los comodines de DNS pueden causar problemas!

así que no quiero agregar explícitamente una zona para cada dominio.

Hay muchas maneras de hacerlo, desde scripts SHELL hasta servidores DNS basados ​​en SQL.


UPD (2019-11) : Entonces, como dije hace 8 años , SHELL-scripting es un camino a seguir y se ha demostrado con la solución propuesta de respuesta aceptada "agregar entrada de zona", claramente no se basa en el uso de comodines. ;-)

En 2019 es aún más fácil encontrar recursos que expliquen las desventajas de los comodines de DNS y, aunque la mayoría de ellos se escribieron "en los albores de Internet", todavía tienen cierto valor. Por ejemplo, RFC1912 menciona algunas cosas relacionadas con el uso de comodines DNS. El problema principal se explica claramente como "...

Los comodines MX pueden ser malos, ya que hacen que algunas operaciones tengan éxito cuando deberían fallar . ... "

Sin embargo, también tiene algunos ejemplos de la vida real algo anticuados.

poige
fuente
¿Por qué sería DNS comodín malvado? No es malo en absoluto ...
Istvan
@poige 1) esa URL ya no se resuelve, 2) cita un documento de 8 años al momento de su respuesta, ahora supuestamente 16 años, que es como la eternidad en Internet, y 3) su instantánea en web.archive.org /web/20030922093331/https://www.iab.org/… se reduce principalmente a "En particular, recomendamos que los comodines DNS no se usen en una zona a menos que el operador de la zona comprenda claramente los riesgos, y que no deben usarse sin el consentimiento informado de aquellas entidades que han sido delegadas debajo de la zona ".
Patrick Mevzek
Escribí esto hace más de 8 años. Todavía estás leyendo y respondiendo. :)
Poige