Tabla de contenidos
ftp
Para resolver nombres OpenBSD emplea rutinas propias
de resolución incluidas en la librería de C, se configuran
en /etc/resolv.conf
. Este archivo
puede incluir, dominio (domain
),
lista de servidores (nameserver
), orden de fuentes
donde buscar (lookup
), lista de dominios en los
cuales buscar (search
),
retornar direcciones IP en orden (sortlist
),
opciones (options
). Un ejemplo del
archivo /etc/resolv.conf
es:
search miong.org nameserver 192.168.16.1 lookup file bind
lookup
permite especificar un orden para
hacer resolución de acuerdo a uno o más de los siguientes
argumentos separados por espacio:
bind
que indica usar servidor de nombres
(named
)
file
que indica buscar en
/etc/hosts
yp
que indica emplear el sistema YP si
ypbind está corriendo.
Un servidor recursivo recibe consultas de dominios y las reenvia a otros
servidores –comenzando por los servidores raiz– o si tiene respuesta a
las consultas en su repositorio temporal fresco (cache) lo usa para responder.
Es útil para responder consultas de una red local rapidamente, y en tal caso
debe responder consultas que se hagan desde la red interna pero no desde
Internet --como posiblemente ocurre con la vista recursiva del archivo
/var/named/etc/named.conf
si tiene uno.
A continuación explicamos como configurar unbound (que hace parte del sistema base desde OpenBSD y adJ 5.7) como servidor recursivo.
En /etc/rc.conf.local
agregue
unbound_flags="-c /var/unbound/etc/unbound.conf"
Y a la varialbe pkg_scripts
agreguele unbound
Configurelo en /var/unbound/etc/unbound.conf
, cambiando al menos:
Si su cortafuegos tiene en la red interna la IP 192.168.100.100 responda sólo a esa interfaz:
interface: 192.168.100.100
Permita consultas desde la red interna, añadiendo:
access-control: 192.168.100.0/24 allow
Las zonas autoritarias que nsd
esté sirviendo también
debe responderlas de manera autoritaria con unbound pero dirigiendo a la
red interna, por ejemplo respecto al ejemplo de la sección anterior,
suponiendo que en la red Interna el servidor que responde correo es
192.168.100.101:
local-zone: "miescuela.edu.co." static local-data: "correo.miescuela.edu.co. IN A 192.168.100.101" local-data: "ns1.miescuela.edu.co. IN A 192.168.100.100" local-zone: "100.168.192.in-addr.arpa." static local-data-ptr: "192.168.100.101 correo.miescuela.edu.co." local-data-ptr: "192.168.100.100 ns1.miescuela.edu.co."
Inicie el servicio con
sudo sh /etc/rc.d/unbound start
Revise posibles errores en las bitacoras /var/log/messages
y /var/log/servicio
Pruebe que responde con:
dig @192.168.100.100 correo.miescuela.edu.co
que debería dar la IP privada.
Si prefiere examinar con más detalle puede iniciarlo para depurar con:
unbound -c /var/unbound/etc/unbound.conf -vvvv -d
Desde adJ y OpenBSD 5.7 hace parte del sistema base junto con unbound (que vinieron a replazar named). Usa una configuración basada en la de named por lo que es sencilla la migración.
Agregue a /etc/rc.conf.local
la línea:
nsd_flags="-c /var/nsd/etc/nsd.conf"
e incluya nsd
en la variable pkg_scripts
El archivo de configuración principal ubíquelo en
/var/nsd/etc/nsd.conf
,
por cada zona maestra que maneje de manera autoritaria (es decir cada zona
master en la vista view "authoritative
de
/var/named/etc/named.conf
)
incluya líneas de la forma:
zone: name: "miescuela.edu.co" zonefile: "miescuela.edu.co"
Para que responda hacía Internet en un cortafuegos con IP pública (digamos 200.201.202.203) en el mismo archivo asegurese de dejar:
ip-address: 200.201.202.203
En el directorio /var/nsd/zones
debe dejar un archivo de zona por cada
zona que configure. Afortunadamente NSD reconoce la misma sintaxis de
archivos de zona que bind
, así que basta que copie los de las zonas
autoritarías (que tipicamente se ubican en /var/named/master/
).
Un ejemplo de un archivo de zona /var/nsd/zones/miescuela.edu.co
es:
$ORIGIN miescuela.edu.co. $TTL 6h @ IN SOA ns1.miescuela.edu.co. root.localhost. ( 2 ; Serial 1d ; Refresco secundario 6h ; Reintento secundario 2d ; Expiracion secndaria 1d ) ; Cache NS ns1 A 200.201.202.203 MX 5 correo.miescuela.edu.co. correo A 200.201.202.203 ns1 A 200.201.202.203 * A 200.201.202.203
Si tiene zonas secundarias (esclavas) puede crear el directorio
/var/nsd/zones/secundaria/
, copiar allí las zonas de
/var/named/slave/
y en el archivo de configuración de NSD
agregar secciones del siguiente estilo:
zone: name: "miotrozona.org" zonefile: "secundaria/miotrazona.org" allow-notify: 193.98.157.148 NOKEY request-xfr: 193.98.157.148 NOKEY
Inicie el servicio con
doas sh /etc/rc.d/nsd start
(o reinicielo con restart
en lugar de start
).
Revise posibles errores en las bitacoras /var/log/messages
y /var/log/servicio
Pruebe que responde desde Internet con:
dig @200.201.202.203 correo.miescuela.edu.co
que debería dar la IP pública.
OpenBSD aún incluye como paquete el servidor
BIND 9, bajo el nombre named
, que por defecto corre
con chroot en el directorio
/var/named
y que puede hacer las labores de unbound
y nsd.
Puede configurarse y probarse antes de iniciarlo en cada
arranque. Para configurarlo por primera vez pueden seguirse primero
los pasos de /etc/rc
.
El archivo de configuración es
/var/named/etc/named.conf
. Se sugiere
que se agregue información de zonas de las cuales es maestro en
en archivos del directorio
/var/named/master
.
Pueden configurarse archivos como dice en [AA_Linux]
por ejemplo los datos un servidor DNS primario del dominio miong.org
pueden quedar en el archivo
/var/named/master/miong.org
:
$TTL 1D @ IN SOA @ root.localhost. ( 03091025 ; Serial 1D ; Refresco secundario 6H ; Reintento secundario 2D ; Expiración secundaria 1D ) ; Cache de registro de recursos NS @ A 65.8.9.234 MX 5 correo.miong.org. correo IN A 201.2.3.74 ns1 IN A 201.2.3.74 www IN A 201.2.3.74
Note que se declara el mismo dominio como servidor de nombre autoritario,
se relaciona con la IP (65.8.9.234), el nombre
correo.miong.org
identificara la misma máquina
y es el nombre que se usará para intercambiar correos; el nombre
www.miong.org
será un alias para el mismo servidor.
Note que todo nombre que no termine con punto (.), será completado por
bind con el dominio (i.e www
será
completado a
www.miong.org
, si se olvida el punto después
de correo.miong.org
, bind lo
completará a
correo.miong.org.miong.org
).
Recuerde aumentar el número serial cada vez que haga algún cambio, para que
la información pueda ser actualizada en los servidores secundarios.
Puede probar cada archivo de zonas que haga con:
named-checkzone miong.org /var/named/master/miong.org
Agregue una referencia al archivo de zonas maestro en
/var/named/etc/named.conf
, en la sección para
zonas maestras algo de la forma:
zone "miong.org" { type master; file "master/miong.org"; }
Si desea que un servidor sea secundario de algún servidor primario,
agregue en /var/named/etc/named.conf
en la sección
para zonas esclavas algo como:
zone "miong.org" { type slave; file "slave/miong.org"; masters { 65.8.9.234; }; }
Cuando named lea de nuevo sus archivos de configuración
traerá la información del servidor primario y la dejará en el archivo
/var/named/slave/miong.org
.
El servidor se inicia con
doas sh /etc/rc.d/named start
Los errores que se produzcan antes de hacer chroot
son enviados a /var/log/servicio
.
Para probar el funcionamiento antes de modificar
/etc/resolv.conf
puede usar:
dig @localhost miong.org
Si requiere volver a leer los archivos de configuración
(por ejemplo después de cambiar los archivos de zonas) puede
enviar la señal SIGHUP
al proceso con:
pkill -HUP named
o con
rndc reload
Una vez compruebe que su servidor DNS está operando correctamente puede
indicar que se inicie en cada arranque agregando a
/etc/rc.conf.local
:
named_flags=""
y en el mismo archivo en la definición de pkg_scripts
agregando named
.
Si cuenta con una LAN conectada a Internet por medio de un cortafuegos con OpenBSD que maneja el DNS de su organización y si además cuenta con una DMZ tal que las peticiones a algunos puertos del cortafuegos son redirigidas a uno o más servidores, seguramente tendrá inconvenientes al resolver nombres de su dominio en la LAN, pues el nombre de su organización (digamos miong.org) será resulto a la dirección externa, la cual conectará al cortafuegos por el puerto pedido y tratará de redirigir la conexión al servidor en la DMZ (i.e se reflejará). Por este motivo desde su LAN en general no resolverá nombres de su dominio.
Una solución
(ver /var/named/etc/named-dual.conf
) es
configurar
bind para que tenga dos
vistas, una para computadores fuera de la LAN y otra
para computadores dentro de la LAN. Un posible
archivo de configuración (basado en los distribuidos
con OpenBSD) es:
acl clients { localnets; ::1; }; options { version ""; listen-on { any; }; listen-on-v6 { any; }; allow-recursion { clients; }; }; logging { category lame-servers { null; }; }; view "internal" { // Para la red interna match-clients { clients; }; match-recursive-only yes; recursion yes; zone "." { type hint; file "standard/root.hint"; }; zone "localhost" { type master; file "standard/localhost"; allow-transfer { localhost; }; } zone "127.in-addr.arpa" { type master; file "standard/loopback"; allow-transfer { localhost; }; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" { type master; file "standard/loopback6.arpa"; allow-transfer { localhost; }; }; zone "com" { type delegation-only; }; zone "net" { type delegation-only; }; zone "miong.org" { type master; file "refleja/miong.org.org"; }; }; view "external" { // Para Internet recursion no; additional-from-auth no; additional-from-cache no; zone "miong.org" { type master; file "master/miong.org"; }; zone "168.74.245.200.IN-ADDR.ARPA" { // Para resolución inversa type master; file "master/db.168.74.245.200"; }; };
El archivo master/miong.org
sería el típico
para resolver externamente, mientras que en
refleja/miong.org
tendría los mismo nombres del
anterior pero con las direcciones de la red local.
master/db.167.74.245.200
tendría datos para resolución
de nombres inversa desde fuera de la organización, por ejemplo:
$TTL 1D @ IN SOA @ root.localhost. ( 49 ; Serial de Zona 1D ; Refesco secundario 6H ; Retintento secundario 2D ; Expiración secundaria 1D ) ; Cache de registros de recurso @ IN NS cortafuegos.miong.org. IN PTR www.miong.org. IN PTR correo.miong.org IN PTR ns1.miong.org
Sección sobre DNS de las guías Aprendiendo a aprender Linux. [AA_Linux]
Referencia para administradores de BIND 9 [bind9arm].
Ayudas para configurar Bind incluido en OpenBSD.
Puede consultar más sobre vistas y reflexión de consultas DNS en http://www.bind9.net/manual/bind/9.3.1/Bv9ARM.ch06.html#view_statement_grammar.
Las siguientes páginas man: named(8). dig(8). unbound(8). nsd(8). unbound.conf(5). named.conf(5).
https://calomel.org/nsd_dns.html
http://eradman.com/posts/run-your-own-server.html
https://calomel.org/unbound_dns.html