Crear unha zona directa
A creación dunha zona consiste na realización dunha serie de pasos, os cales podemos resumir nos seguintes:
- Crear un ficheiro de zona. De xeito opcional, antes da creación de ningún ficheiro de zona, podemos crear un directorio onde vaiamos gardar todos os ficheiros de zona de BIND.
- No ficheiro de zona, definir os rexistros de recursos necesarios. Ao inicio do ficheiro definiremos o TTL e, como mínimo, o rexistro
SOA. - Enlazar o ficheiro de zona creado no ficheiro de configuración
/etc/bind/named.conf.local. - Comprobar a configuración coa utilidade
named-checkconf. - Reiniciar BIND para aplicar os cambios.
- Opcionalmente, podemos comprobar o estado do servizo de BIND para comprobar que non se producíu ningún error.
- Por último, configurar os clientes para que utilicen o servidor BIND configurado.
A continuación, descríbense cada un dos pasos de forma detallada.
Crear o directorio para os ficheiros de zona
O primeiro que imos facer é crear unha carpeta zones que gardará todos os ficheiros de zona do servidor de nomes primario.
$ sudo mkdir /etc/bind/zones
A creación do directorio non é obrigatorio, só é para manter unha mellor organización dos ficheiros de zona. Este paso só o temos que facer a primeira vez que creamos un ficheiro de zona.
Crear o ficheiro de zona
Se queremos engadir unha nova zona para o dominio servidor.com, antes de nada, temos que crear un novo ficheiro de zona:
$ sudo nano /etc/bind/zones/db.servidor.com
O nome do ficheiro pode ser calquera, xa que o importante é que coincida coa ruta que se indique despois no ficheiro /etc/bind/named.conf.local.
Como alternativa, en lugar de escribir manualmente todos os rexistros, podemos tomar como base un ficheiro que xa existe. Un deles pode ser /etc/bind/db.local. Podemos duplicalo da seguinte forma:
$ sudo cp /etc/bind/db.local /etc/bind/zones/db.servidor.com
Definir o TTL
Independentemente de se o creamos desde cero ou o duplicamos para modificar, temos que definir correctamente os rexistros de recursos. En primeiro lugar, imos indicar o TTL. Recordemos que o TTL (Time To Live) é un parámetro que determina canto tempo pode estar un rexistro na caché dun cliente ou servidor DNS. Podemos poñerlle 1 día, o cal en segundos equivale a 86400:
$TTL 86400
@ IN SOA servidor.com. root.servidor.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS servidor.com.
@ IN A 192.168.1.100
Definir o rexistro SOA
A continuación, o primeiro dos rexistros DNS que debemos indicar é o rexistro SOA:
$TTL 86400
@ IN SOA servidor.com. root.servidor.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS servidor.com.
@ IN A 192.168.1.100
É importante respectar a sintaxe tal e como está indicada no exemplo: non pode faltar ningún punto e coma nin paréntesis. No caso de non facelo, obteremos errores. Podemos obviar, iso si, os comentarios e os paréntesis. É dicir, isto tamén sería válido:
$TTL 86400
@ IN SOA servidor.com. root.servidor.com. 2 604800 86400 2419200 604800;
@ IN NS servidor.com.
@ IN A 192.168.1.100
Definir o resto de rexistros
Despois do rexistro SOA, definimos o resto de rexistros. Por exemplo, podemos indicar un rexistro NS e un rexistro A:
$TTL 604800
@ IN SOA servidor.com. root.servidor.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS servidor.com.
@ IN A 192.168.1.100
O rexistros indican:
- O servidor de nomes para
servidor.coméservidor.com.. - O dominio
servidor.comcorresponde coa dirección IP192.168.1.100.
Enlazar o ficheiro de zona
Unha vez rematado de editar o ficheiro de zona, para que este se teña en conta, temos que agregalo ao ficheiro /etc/bind/named.conf.local:
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "servidor.com" {
type master;
file "/etc/bind/zones/db.servidor.com";
};
Na configuración indícase:
- A zona é
servidor.com. - O tipo de servidor DNS é primario (master).
- O ficheiro de zona atópase na ruta
/etc/bind/zones/db.servidor.com.
Comprobar a configuración
Para comprobar que os ficheiros de zona non conteñen errores, executamos o seguinte comando:
$ sudo named-checkconf
Este comando devolverá algún tipo de mensaxe no caso de conter erros ou non devolverá nada se todo está ben.
Reiniciar BIND
Reiniciamos BIND para aplicar os cambios:
$ sudo systemctl restart named
Consultar o estado de BIND
Consultamos o estado de BIND para comprobar que non se produciron errores:
$ systemctl status named
Exemplo de saída do comando
$ systemctl status named
● named.service - BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-02-01 09:36:59 CET; 4s ago
Docs: man:named(8)
Main PID: 24769 (named)
Tasks: 8 (limit: 4615)
Memory: 27.7M
CGroup: /system.slice/named.service
└─24769 /usr/sbin/named -f -4 -u bind
feb 01 09:36:59 vm2-us named[24769]: managed-keys-zone: loaded serial 37
feb 01 09:36:59 vm2-us named[24769]: zone 0.in-addr.arpa/IN: loaded serial 1
feb 01 09:36:59 vm2-us named[24769]: zone servidor.com/IN: loaded serial 2
feb 01 09:36:59 vm2-us named[24769]: zone 127.in-addr.arpa/IN: loaded serial 1
feb 01 09:36:59 vm2-us named[24769]: zone 255.in-addr.arpa/IN: loaded serial 1
feb 01 09:36:59 vm2-us named[24769]: zone localhost/IN: loaded serial 2
feb 01 09:36:59 vm2-us named[24769]: all zones loaded
feb 01 09:36:59 vm2-us named[24769]: running
feb 01 09:37:00 vm2-us named[24769]: resolver priming query complete
Se non se producíu ningún error, no resultado do comando deberíamos ver unha liña que conteña o seguinte texto:
zone servidor.com/IN: loaded
Configurar os clientes
Agora tan só queda configurar os equipos clientes para que empreguen o noso servidor DNS. Unha vez realizado iso, cando soliciten a resolución de servidor.com, devolverase a dirección IP 192.168.1.100.