Ayuda OnLine de GULiC
Configurar un servidor con BIND (3)
No se preocupen porque vean que esta serie sigue y sigue… todo se acaba 
Hoy vamos a ver los tipos de RR que se quedaron en el tintero, comenzando, lo prometido es deuda, por la resolución DNS inversa.
Resolución inversa
Si además de ser los poseedores, o valga el caso, administradores de un dominio somos los administradores de un rango de direcciones IP somos los responsables de proporcionar resolución inversa, es decir, de informar, a quien pregunte, qué nombre se corresponde con cada IP. Es gracias a esa reslución inversa que cuando hacemos un traceroute, o un netstat, o un simple last o who, el ordenador nos da nombres DNS en lugar de direcciones IP, igual que en los logs del Apache o del servidor FTP.
Pero no hay que pensar que eso no va con nostros, ya que no se refiere sólo a las direcciones IP públicas: es un servicio que también funciona en los rangos privados, y el nombre devuelto se considera el nombre canónico correspondiente a esa IP.
$ host ulysses.gulic.org
ulysses.gulic.org has address 193.145.155.12
$ host 193.145.155.12
12.155.145.193.in-addr.arpa domain name pointer gulic3.ulpgc.es.
Como vemos, el nombre canónico de ulysses es gulic3.ulpgc.es, lo que quiere decir que está en el rango de direcciones que administra la ULPGC. En una red privada se puede establecer el mismo servicio, ya que las direcciones las asignamos nosotros.
El árbol arpa
Aparte de los nombres de dominio de primer nivel que todo el mundo conoce como .org, .net o .es (los de dos letras correspondientes a países o territorios y los de más de dos conocidos como genéricos) hay un dominio de primer nivel dedicado a dar soporte a la infraestructura misma de la red: el dominio .arpa (el nombre viene del nombre original de Internet).
Dentro del dominio .arpa tenemos el subdominio in-addr (inverse address) cuyo objetivo es, precisamente, proporcionar la infraestructura necesaria para la resolución inversa.
Para solicitar el nombre canónico de un ordenador no se pregunta directamente por el nombre que corresponde a una dirección, sino por el nombre que corresponde a otro nombre (un poco como los RR CNAME) del árbol in-addr.arpa, como vemos en el ejemplo de arriba: este nombre se compone poniendo los números de la dirección IP en orden inverso y añadiendo al final .in-addr.arpa para poner los nombres más generales más cerca de la raíz.
Así, 12.155.145.193.in-addr.arpa es un subdominio de 155.145.193.in-addr.arpa que corresponde a todas las direcciones 193.145.155.0-193.145.155.255 y sucesivamente.
Lo mismo en una red privada: si hemos decidido utilizar la red 192.168.0.0/24 en casa, deberíamos dar cobertura al subárbol 0.168.192.in-addr.arpa.
Todo el trabajo se hace mediante un fichero de zona igual que los de la entrega anterior, sólo que en vez de registros A o registros CNAME utilizamos registros PTR:
;Fichero de zona inversa para 193.145.155.0/24
$TTL 1200
155.145.193.in-addr.arpa. IN SOA ns.ulpgc.es. hostmaster.ulpgc.es. (
2005110815
28800
7200
604800
86400 )
@ IN NS ns.ibn.ulpgc.es.
@ NS ns.ulpgc.es.
@ NS ns2.ibn.ulpgc.es.
@ NS ns2.ulpgc.es.
@ NS sun.rediris.es.
@ NS chico.rediris.es.
2 IN PTR SERVICIOSEXTERNOS-RC1.red.ulpgc.es.
3 PTR SERVICIOSEXTERNOS-RC2.red.ulpgc.es.
4 PTR osl.ulpgc.es.
7 PTR arbitros2.ulpgc.es.
8 PTR latienda.sitie.ulpgc.es.
9 PTR arbitros.ulpgc.es.
10 PTR gulic.ulpgc.es.
11 PTR gulic2.ulpgc.es.
12 PTR gulic3.ulpgc.es.
13 PTR SERVICIOSEXTERNOS-RC3.red.ulpgc.es.
14 PTR SERVICIOSEXTERNOS-RC4.red.ulpgc.es.
18 PTR arq.cda.ulpgc.es.
19 PTR arucas.cda.ulpgc.es.
20 PTR tafira2.cda.ulpgc.es.
21 PTR tomas2.sic.ulpgc.es.
27 PTR ARQ-ARQUITECTURAPUB-RC1.red.ulpgc.es.
28 PTR ARQ-ARQUITECTURAPUB-RC2.red.ulpgc.es.
29 PTR ARQ-ARQUITECTURAPUB-RC3.red.ulpgc.es.
30 PTR ARQ-ARQUITECTURAPUB-RC4.red.ulpgc.es.
34 PTR preciemar.ccbb.ulpgc.es.
35 PTR vpnseas1.ccbb.ulpgc.es.
36 PTR vpnseas2.ccbb.ulpgc.es.
37 PTR q115portatil.ccbb.ulpgc.es.
38 PTR edutecan.ccbb.ulpgc.es.
49 PTR CCBB-CCBBPUB-HSRP.red.ulpgc.es.
50 PTR tindaya.ccbb.ulpgc.es.
51 PTR zeus.ccbb.ulpgc.es.
52 PTR ciemar.ccbb.ulpgc.es.
53 PTR eros.ccbb.ulpgc.es.
54 PTR capo.ccbb.ulpgc.es.
56 PTR capo2.ccbb.ulpgc.es.
57 PTR oceanchem2.ccbb.ulpgc.es.
58 PTR b203-3.ccbb.ulpgc.es.
59 PTR CCBB-CCBBPUB-RC1.red.ulpgc.es.
60 PTR CCBB-CCBBPUB-RC2.red.ulpgc.es.
61 PTR CCBB-CCBBPUB-RC3.red.ulpgc.es.
62 PTR CCBB-CCBBPUB-RC4.red.ulpgc.es.
65 PTR POL-CIDIAPUB-HSRP.red.ulpgc.es.
66 PTR servidor.cidia.ulpgc.es.
75 PTR POL-CIDIAPUB-RC1.red.ulpgc.es.
76 PTR POL-CIDIAPUB-RC2.red.ulpgc.es.
77 PTR POL-CIDIAPUB-RC3.red.ulpgc.es.
78 PTR POL-CIDIAPUB-RC4.red.ulpgc.es.
81 PTR POL-IUMAPUB-HSRP.red.ulpgc.es.
91 PTR POL-IUMAPUB-RC1.red.ulpgc.es.
92 PTR POL-IUMAPUB-RC2.red.ulpgc.es.
93 PTR POL-IUMAPUB-RC3.red.ulpgc.es.
94 PTR POL-IUMAPUB-RC4.red.ulpgc.es.
97 PTR EMPRE-BIBPUB-HSRP.red.ulpgc.es.
98 PTR tamadaba.biblioteca.ulpgc.es.
99 PTR bdigital.biblioteca.ulpgc.es.
100 PTR bentayga.biblioteca.ulpgc.es.
101 PTR machi.biblioteca.ulpgc.es.
102 PTR bdigitalm.biblioteca.ulpgc.es.
103 PTR ansite.biblioteca.ulpgc.es.
107 PTR EMPRE-BIBPUB-RC1.red.ulpgc.es.
108 PTR EMPRE-BIBPUB-RC2.red.ulpgc.es.
109 PTR EMPRE-BIBPUB-RC3.red.ulpgc.es.
110 PTR EMPRE-BIBPUB-RC4.red.ulpgc.es.
130 PTR becario-docu.sic.ulpgc.es.
133 PTR alojamiento.ulpgc.es.
145 PTR cisco-vet-155-seg9.red.ulpgc.es.
146 PTR sasrv.vet.ulpgc.es.
148 PTR iusa-srw.vet.ulpgc.es.
162 PTR geminis.dma.ulpgc.es.
178 PTR cicei.sitie.ulpgc.es.
179 PTR cief.sitie.ulpgc.es.
180 PTR ingb.sitie.ulpgc.es.
181 PTR osl.sitie.ulpgc.es.
182 PTR novellpruebas.sitie.ulpgc.es.
187 PTR ING-INGENIERIAPUB-RC1.red.ulpgc.es.
188 PTR ING-INGENIERIAPUB-RC2.red.ulpgc.es.
189 PTR ING-INGENIERIAPUB-RC3.red.ulpgc.es.
190 PTR ING-INGENIERIAPUB-RC4.red.ulpgc.es.
209 PTR HUMANIDADESPUB-HSRP.red.ulpgc.es.
212 PTR colmillo.humanidades.ulpgc.es.
213 PTR hd118a.humanidades.ulpgc.es.
219 PTR HUMANIDADESPUB-RC1.red.ulpgc.es.
220 PTR HUMANIDADESPUB-RC2.red.ulpgc.es.
221 PTR HUMANIDADESPUB-RC3.red.ulpgc.es.
222 PTR HUMANIDADESPUB-RC4.red.ulpgc.es.
225 PTR POL-IUCTCPUB-HSRP.red.ulpgc.es.
227 PTR iuctc.ulpgc.es.
228 PTR ccpc.ciber.ulpgc.es.
229 PTR mcculloch.ciber.ulpgc.es.
230 PTR pcjcarlos.ciber.ulpgc.es.
237 PTR RouterCore1-155-seg14.red.ulpgc.es.
238 PTR RouterCore2-155-seg14.red.ulpgc.es.
¿Y si administro una red más grande?
La estructura del árbol in-addr.arpa hace que se pueda dar servicio a una red compuesta de varias redes /24 creando un fichero de zona para cada una, o a una red /16 con, simplemente, quitar un elemento del nombre de dominio.
¿Y si administro una red más pequeña?
La respuesta típica sería que no se puede, que es el administrador de la red /24 el que tiene que hacerlo, y que tienes que ponerte de acuerdo con él y, en todo caso, mandarle los cambios para que él los incluya en el fichero.
Pero las cosas no son tan crudas.
Ya que andamos trasteando con DNS, se pueden utilizar las herramientas propias de DNS para solucionar el problema. Veamoslo con un ejemplo sacado del RFC 2317:
Supongamos que administramos la red 192.0.2.0/24 y hemos asignado subredes de la siguiente manera:
192.0.2.0/25 a la organización A
192.0.2.128/26 a la organización B
192.0.2.192/26 a la organización C
Normalmente habría que usar un fichero de zona inverso único como:
$ORIGIN 2.0.192.in-addr.arpa.
;
1 PTR host1.A.domain.
2 PTR host2.A.domain.
3 PTR host3.A.domain.
;
129 PTR host1.B.domain.
130 PTR host2.B.domain.
131 PTR host3.B.domain.
;
193 PTR host1.C.domain.
194 PTR host2.C.domain.
195 PTR host3.C.domain.
Pero lo vamos a resolver utilizando registros de tipo CNAME:
$ORIGIN 2.0.192.in-addr.arpa.
@ IN SOA my-ns.my.domain. hostmaster.my.domain. (...)
; <<0-127>> /25
0/25 NS ns.A.domain.
1 CNAME 1.0/25.2.0.192.in-addr.arpa.
;Esto mapea 1.2.0.192.in-addr.arpa (basta fijarse en el $ORIGIN)
2 CNAME 2.0/25 ; Aquí acortamos gracias también al $ORIGIN
3 CNAME 3.0/25
; <<128-191>> /26
128/26 NS ns.B.domain.
129 CNAME 129.128/26
130 CNAME 130.128/26
131 CNAME 131.128/26
; <<192-255>> /26
192/26 NS ns.C.domain.
193 CNAME 193.192/26
194 CNAME 194.192/26
195 CNAME 195.192/26
Y luego cada administrador de las organizaciones A, B y C crea ficheros como estos:
Organización A:
$ORIGIN 0/25.2.0.192.in-addr.arpa.
@ IN SOA ns.A.domain. hostmaster.A.domain. (...)
@ NS ns.A.domain.
1 PTR host1.A.domain.
2 PTR host2.A.domain.
3 PTR host3.A.domain.
Organización B:
$ORIGIN 128/26.2.0.192.in-addr.arpa.
@ IN SOA ns.B.domain. hostmaster.B.domain. (...)
@ NS ns.B.domain.
129 PTR host1.B.domain.
130 PTR host2.B.domain.
131 PTR host3.B.domain.
Organización C:
$ORIGIN 192/26.2.0.192.in-addr.arpa.
@ IN SOA ns.C.domain. hostmaster.C.domain. (...)
@ NS ns.C.domain.
193 PTR host1.C.domain.
194 PTR host2.C.domain.
195 PTR host3.C.domain.
Pero por si alguien argumenta que la barra no es un carácter válido (que sí lo es, porque esto no son nombres de host), se puede utilizar cualquier otro en su lugar, como el guión.
Por otro lado, un CNAME puede apuntar fuera del árbol in-addr.arpa con lo que se facilita aún más el trabajo de los administradores de las organizaciones A, B y C:
1.2.0.192.in-addr.arpa. IN CNAME 1.A.domain.
Y luego podemos poner juntos:
1.A.domain. IN PTR host1.A.domain.
host1.A.domain IN A 192.0.2.1
$GENERATE
Justo en la creación de ficheros repetitivos como estos es de utilidad la directiva $GENERATE que mencionamos en la entrega anterior.
$GENERATE se utiliza indicando un esqueleto de RR a generar, indicando un rango y sustituyéndolo con $:
$GENERATE 5-8 host$.dominio. A 192.168.0.$
se convierte en:
host5.dominio. A 192.168.0.5
host6.dominio. A 192.168.0.6
host7.dominio. A 192.168.0.7
host8.dominio. A 192.168.0.8
El rango puede ser del tipo comienzo-final o comienzo-final/paso, y los tres valores deben ser positivos. Si no se especifica el paso se toma, como se puede imaginar, que es 1.
El tipo de RR es obligatorio ponerlo, y sólo puede ser PTR, CNAME, DNAME, A, AAAA o NS.
Si se quiere poner un signo “$” en el resultado debe hacerse con \$ (aunque por compatibilidad con versiones anteriores de BIND se puede usar $$).
Se pueden añadir una clase y un TTL como en los RR normales.
El resultado de $ se puede modificar sumándole o restándole una cantidad fija y/o representándolo en decimal, octal u hexadecimal. Para ello se utilizan llaves: ${desplazamiento,tamaño,base}:
$GENERATE 2-3 ${9}.155.145.193.in-addr.arpa. PTR gulic$.ulpgc.es.
se convierte en:
11.155.145.193.in-addr.arpa. PTR gulic2.ulpgc.es.
12.155.145.193.in-addr.arpa. PTR gulic3.ulpgc.es.
y
$ORIGIN midominio.
$GENERATE 2-3 ${0,4} A 192.168.0.$
se convierte en:
0002.midominio. A 192.168.0.2
0003.midominio. A 192.168.0.2
y finalmente
$GENERATE 1-4 host${7,2,X}.midominio. A 192.168.0.${100}
se convierte en:
host08.midominio. A 192.168.0.101
host09.midominio. A 192.168.0.102
host0A.midominio. A 192.168.0.103
host0B.midominio. A 192.168.0.104
con lo que vemos que tenemos, además de la conversión “d” (decimal) por defecto, las conversiones “o” (octal), “x” (hexadecimal con letras minúsculas) y “X” (hexadecimal con letras mayúsculas) para usar como base.
Con esto, el fichero de zona inversa en el caso del ejemplo anterior es algo tan sencillo como:
$ORIGIN 2.0.192.in-addr.arpa.
@ IN SOA my-ns.my.domain. hostmaster.my.domain. (...)
; <<0-127>> /25
0/25 NS ns.A.domain.
$GENERATE 1-126 $ CNAME $.0/25
; <<128-191>> /26
128/26 NS ns.B.domain.
$GENERATE 129-190 $ CNAME $.128/26
; <<192-255>> /26
192/26 NS ns.C.domain.
$GENERATE 193-254 $ CNAME $.192/26
NOTA: $GENERATE no es parte estándar del sistema DNS, sino una extensión propia de BIND.
Otros tipos de RR
Pues aparte de los tipos ya vistos (SOA, NS, A, AAAA, MX, CNAME y PTR) hay otros tipos válidos definidos en distintos RFC:
A6 Dirección IPv6 que puede ser parcial (un sufijo) e indicar dónde encontrar el resto de la dirección. Experimental. RFC 2874.
AFSDB Servidores de bases de datos AFS. Experimental. RFC 1183.
APL “Address Prefix List”. Experimental. RFC 3123.
CERT Certificado digital. RFC 2538.
DNAME Reemplaza el nombre de dominio especificado con otro nombre en el que buscar, haciendo un alias de una rama completa del árbol DNS en vez de un nombre simple como CNAME. RFC 2672.
GPOS Especifica la posición global. Superado por LOC.
HINFO Identifica el tipo de CPU y el Sistema Operativo utilizados. RFC 1035.
ISDN Representación de direcciones RDSI. Experimental. RFC 1183.
KEY Almacena una clave pública asociada a un nombre DNS. RFC 2535.
KX Servidor de claves para este nombre DNS. RFC 2230.
LOC Para información GPS. Experimental. RFC 1876.
NAPTR Puntero a la autoridad DNS. RFC 2915.
NSAP Un punto de acceso a servicios de red. RFC 1706.
NXT Se utiliza en DNSSEC para indicar de manera segura que los RR con un nombre determinado no existen en una zona e indicar qué tipos sí existen. RFC 2535.
PX Mapea entre direcciones RFC 822 y X.400. RFC 2163.
RP Información sobre las personas responsables de un dominio. Experimental. RFC 1183.
RT Enlace a través de rutas para equipos que no tienen su propia dirección directa de red de área amplia (WAN). Experimental. RFC 1183.
SIG (“signature”) Contiene datos autentificados en DNSSEC. RFC 2535.
SRV Informa sobre servicios de red bien conocidos (reemplaza a WKS). RFC 2782.
TXT Registros de texto. RFC 1035.
WKS Informa sobre servicios de red bien conocidos. Histórico.
X25 Direcciones de redes X.25. Experimental. RFC 1183.
En la próxima entrega
Sabiendo ya crear ficheros de zona, en la próxima entrega veremos el resto de la configuración de un servidor BIND sencillo.
- blog de Envite
- Inicie sesión para enviar comentarios
- 3076 lecturas




Tengo algunas dudas
Veo que se puede instalar un servidor de nombres en casa sin tener que pagar a ningún proveedor para que te aloje en su servidor de nombres y te lo apunte a tu máquina.
¿Quién informa a los ROOT-SERVERS o a los servidores por encima de uno, como llegar a ti? ¿Tu propio servidor de Nombres?
¿Y que pasa si te lo configuras como microsoft.com o dominioinventado.com?
¿Has de abrir/redireccionar algún puerto en tu router?
Me imagino que tengo que tener un IP fija, pero ¿Y si tengo una dinámica con un dominio no-ip apuntando a mi máquina, puedo hacerlo?
Disculpa mi ignorancia. Gracias de antemano por tu respuesta.
Felices Fiestas
Por delegación
Los root servers tienen delegado cada dominio .es, .com, .uk, a la entidad de gestión correspondiente. Así que cuando los consultas son ellos los que te dicen “pregunta al servidor de nombres xxx que es el que gestiona el dominio que pides”.
A su vez los servidores de nombre que gestionan el dominio, por ejemplo, .es tienen delegado los dominios de las diversos organismos y empresas. Es decir el servidor de nombres del dominio .es te dice “pregunta al servidor de nombres yyy que es el que gestiona el domino ola.es”. Y así sucesivamente hasta llegas al servidor que tiene la entrada A con la IP de la máquina que buscas.
Por lo tanto para tener un dominio es necesario comprarlo. Puedes montar tu propio servidor DNS pero para que alguien lo encuentre el dominio que quieres debe ser te delegado y apuntar a tu servidor.
Hecho esto podrás crear el número de entras de quieras en tu servidor. Incluso podrás crear subdominios y delegarlos a otras máquinas.
Lo que nadie te impide es montar un servidor de nombres de dominio para tu red interna. O montar tu servidor de nombres y que tus amigos lo utilicen, de forma de que puedes crear una “internet” paralela donde microsoft.com no va a la página que debería. Pero todo eso solo te afectaría a ti y los que usen tu servidor. Si no entras en la jerarquía mundial del DNS, tu servidor no existe para el resto del mundo.
El puerto de comunicación del DNS es el 53 por TCP y UDP. Si quieres montar un servidor al mundo exterior debes tenerlo abierto y redireccionado a tu servidor.
¿Qué es eso dominio no-ip apuntando hacia ti?
—
May the Free Software Force be with you…
DNS dinámicos
no-ip es http://www.no-ip.com/ muy parecido a dyndns y otros proveedores que te asocian una ip dinámica con un nombre de subdominio estilo micasa.dyndns.org.
Estos proveedores tienen el servicio “especial” (pagando) de que con el mismo programita con el que asignas tu ip dinamica a loquesea.dyndns.com, si les transfieres el dominio a ellos y les pagas, puedes tambien asignar tu ip dinámica a loquesea.com y gestionar los subdominios *.loquesea.com en tu servidor de nombres.
A esto le veo yo dos problemas:
El primero es el bajo tiempo de refresco. Para las entradas de *.dyndns.org por ejemplo, ese tiempo es de 60 segundos… eso significa que tus peticiones caducan muy rápido y tienes que estar consultando al padre (dyndns.org) prácticamente siempre. Esto es lógico si tu ip es dinámica, pero no es el comportamiento tradicional de un dns, donde ese número es de 6-24 horas para que se pueda cachear bien en el resto de servidores dns (si cae dyndns.org te quedaste sind dominios).
El segundo es que si te cambian la ip tienes que reconfigurar las zonas de tu bind. Y como no vas a estar pendiente siempre, tendrás que automatizarlo. Esto es un problema meramente técnico que se arregla con algo de scripting.
Problema con reverse no funciona
Hola esta muy bueno tu documento pero tengo una pregunta como hago para hacer lo siguiente:
Tengo una red 192.168.1.0/20
quiero hacer un solo archivo donde yo agregue todos los reverses pero me gustaria una opinion tuya en el named.conf lo coloque asi
zone “0/20.0.168.192.in-addr.arpa” {
type master;
file “0.168.192.in-addr.arpa.zone”;
notify yes;
};
0.168.192.in-addr.arpa.zone
$TTL 2D
…..
@ IN NS ns1.caplinux.com
1 IN PTR ns1.caplinux.com
; Gen para 192.168.1.0
$GENERATE 2-253 $.1 PTR host$-red-1.caplinux.com.
; Gen para 192.168.2.0
$GENERATE 2-253 $.2 PTR host$-red-1.caplinux.com.
….
he intentado esto pero la verdad no me funciona, he pensado que pueda ser problema de la mascara /20 que es muy grande.
Gracias
Un par de detalles
A ver…
192.168.1.0/20 quiere decir que hay 20 bits fijos en la máscara.
Veámoslo detalladamente:
Como ves, el 1 del tercer octeto queda en la zona de host, no en la de red. Es decir, no puede existir una red “192.168.1.0/20”, es imposible. La red representada es 192.168.0.0/20, que llega desde:
hasta
Aparte de que tienes la red mal, deberías comprobar si las zonas están bien delegadas.