Delegación de zona inversa a subredes inferiores a /24 en BIND. Cómo funciona

Un día me enfrenté a la tarea de darle a uno de mis clientes el derecho de editar registros PTR de la subred /28 que le había asignado. No tengo automatización para editar la configuración de BIND desde el exterior. Por lo tanto, decidí tomar una ruta diferente: delegar al cliente una parte de la zona PTR de la subred /24.

Al parecer, ¿qué podría ser más sencillo? Simplemente registramos la subred según sea necesario y la dirigimos al NS deseado, como se hace con un subdominio. Pero no. No es tan simple (aunque en realidad es generalmente primitivo, pero la intuición no ayuda), por eso escribo este artículo.

Cualquiera que quiera descubrirlo por sí mismo puede leer RFC
Quien quiera una solución ya preparada, bienvenido al gato.

Para no retrasar a los que les gusta el método copiar y pegar, publicaré primero la parte práctica y luego la parte teórica.

1. Practica. Zona de delegación /28

Digamos que tenemos una subred 7.8.9.0/24. Necesitamos delegar la subred. 7.8.9.240/28 al cliente DNS 7.8.7.8 (ns1.cliente.dominio).

En el DNS del proveedor, debe encontrar un archivo que describa la zona inversa de esta subred. Déjalo ser 9.8.7.en-addr.arpa.
Comentamos las entradas del 240 al 255, si las hay. Y al final del archivo escribimos lo siguiente:

255-240  IN  NS      7.8.7.8
$GENERATE 240-255 $ CNAME $.255-240

no olvides aumentar la zona serial y hacer

rndc reload

Esto completa la parte del proveedor. Pasemos al dns del cliente.

Primero, creemos un archivo. /etc/bind/master/255-240.9.8.7.in-addr.arpa el siguiente contenido:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

Y c nombrado.conf agregue una descripción de nuestro nuevo archivo:

zone "255-240.9.8.7.in-addr.arpa." IN {
        type master;
        file "master/255-240.9.8.7.in-addr.arpa";
};

B reinicie el proceso de vinculación.

/etc/init.d/named restart

Todo. Ahora puedes comprobarlo.

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

Tenga en cuenta que no solo se proporciona el registro PTR, sino también el CNAME. Así es como debería ser. Si se pregunta por qué, bienvenido al siguiente capítulo.

2. Teoría. Cómo funciona.

Es difícil configurar y depurar una caja negra. Es mucho más fácil si comprendes lo que sucede en tu interior.

Cuando delegamos un subdominio en un dominio dominio, entonces escribimos algo como esto:

client.domain.	NS	ns1.client.domain.
ns1.client.domain.	A	7.8.7.8

Le decimos a todo el que pregunta que no somos responsables de este sitio y decimos quién es el responsable. Y todas las solicitudes de cliente.dominio redirigir a 7.8.7.8. Al verificar, vemos la siguiente imagen (omitiremos lo que el cliente tiene allí. No importa):

# host test.client.domain
test.client.domain has address 7.8.9.241

Aquellos. Se nos informó que existe dicho registro A y su IP es 7.8.9.241. Sin información innecesaria.

¿Cómo se puede hacer lo mismo con una subred?

Porque nuestro servidor DNS está registrado en RIPE, luego, cuando solicite una dirección IP PTR de nuestra red, la primera solicitud seguirá siendo para nosotros. La lógica es la misma que con los dominios. Pero, ¿cómo se ingresa una subred en un archivo de zona?

Intentemos ingresarlo así:

255-240  IN  NS      7.8.7.8

Y... el milagro no ocurrió. No recibimos ninguna solicitud de redirección. El caso es que bind ni siquiera sabe que estas entradas en el archivo de zona inversa son direcciones IP, y más aún, no comprende la entrada del rango. Para él, esto es sólo una especie de subdominio simbólico. Aquellos. para enlazar no habrá diferencia entre "255 - 240"Y"nuestrosupercliente". Y para que la solicitud vaya a donde necesita ir, la dirección en la solicitud debería verse así: 241.255-240.9.8.7.en-dirección.arpa. O así si usamos un subdominio de caracteres: 241.nuestrosupercliente.9.8.7.in-addr.arpa. Esto es diferente a lo habitual: 241.9.8.7.en-addr.arpa.

Será difícil realizar dicha solicitud manualmente. E incluso si funciona, todavía no está claro cómo aplicarlo en la vida real. Después de todo, a pedido 7.8.9.241 El DNS del proveedor todavía nos responde a nosotros, no al del cliente.

Y aquí es donde entran en juego. CNAME.

Del lado del proveedor, debe crear un alias para todas las direcciones IP de la subred en un formato que reenvíe la solicitud al DNS del cliente.

255-240  IN  NS      ns1.client.domain.
241     IN  CNAME   241.255-240
242     IN  CNAME   242.255-240
и т.д.

Esto es para los trabajadores =).

Y para los perezosos, el siguiente diseño es más adecuado:

255-240  IN  NS      ns1.client.domain.
$GENERATE 240-255 $ CNAME $.255-240

Ahora solicita información en 7.8.9.241 de 241.9.8.7.en-addr.arpa en el servidor DNS del proveedor se convertirá a 241.255-240.9.8.7.en-dirección.arpa y va al cliente DNS.

El lado del cliente deberá manejar dichas solicitudes. En consecuencia, creamos una zona. 255-240.9.8.7.en-dirección.arpa. En él podemos, en principio, colocar entradas inversas para cualquier ip de toda la subred /24, pero solo nos preguntarán por las que nos reenvía el proveedor, por lo que no podremos trastear =).
Para ilustrar, una vez más daré un ejemplo del contenido de un archivo de zona inversa desde el lado del cliente:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

Esto se debe a que utilizamos CNAME por parte del proveedor y, en respuesta a una solicitud de datos por dirección IP, recibimos dos registros, no uno.

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

Y no olvide configurar la ACL correctamente. Porque no tiene sentido tomar una zona PTR y no responder a nadie del exterior =).

Fuente: habr.com

Añadir un comentario