Introducción
Buenas, en este post vamos a instalar y configurar un servidor DNS con bind9 usando vistas, ya que tenemos el escenario creado anteriormente en nuestro OpenStack
Instalación
Vamos a instalar el servidor DNS en freston. Instalamos bind9
y sus recomendaciones:
sudo apt install bind9 -y && sudo apt install -y bind9-doc dnsutils ufw python-ply-doc
Ficheros a modificar
named.conf.local
Modificamos el fichero:
sudo nano /etc/bind/named.conf.local
Y le añadimos el siguiente contenido:
view interna {
match-clients { 10.0.1.0/24; };
allow-recursion { any; };
zone "cabezas.gonzalonazareno.org"
{
type master;
file "db.interna.cabezas.gonzalonazareno.org";
};
zone "1.0.10.in-addr.arpa"
{
type master;
file "db.1.0.10";
};
include "/etc/bind/zones.rfc1918";
include "/etc/bind/named.conf.default-zones";
};
view dmz {
match-clients { 10.0.2.0/24; };
allow-recursion { any; };
zone "cabezas.gonzalonazareno.org"
{
type master;
file "db.dmz.cabezas.gonzalonazareno.org";
};
zone "2.0.10.in-addr.arpa"
{
type master;
file "db.2.0.10";
};
include "/etc/bind/zones.rfc1918";
include "/etc/bind/named.conf.default-zones";
};
view externa {
match-clients { 172.22.0.0/15; 192.168.202.2; };
allow-recursion { any; };
zone "cabezas.gonzalonazareno.org"
{
type master;
file "db.externa.cabezas.gonzalonazareno.org";
};
include "/etc/bind/zones.rfc1918";
include "/etc/bind/named.conf.default-zones";
};
named.conf
También tenemos que comentar en el fichero:
sudo nano /etc/bind/named.conf
La siguiente línea:
//include "/etc/bind/named.conf.default-zones";
named.conf.options
Y también añadir al fichero:
sudo nano /etc/bind/named.conf.options
El siguiente contenido para que funcionen las peticiones desde todos los sitios:
allow-query { 172.22.0.0/15;10.0.1.0/24;10.0.2.0/24;192.168.202.2; };
allow-recursion { any; };
allow-query-cache { any; };
Ahora tendremos que añadir los ficheros de zona directa e inversa para cada una de las zonas, excepto la zona externa el de resolución inversa, empezamos con el primero:
db.interna.cabezas.gonzalonazareno.org
Abrimos el fichero:
sudo nano /var/cache/bind/db.interna.cabezas.gonzalonazareno.org
Y le añadimos el siguiente contenido:
$TTL 86400
@ IN SOA freston.cabezas.gonzalonazareno.org. root.cabezas.gonzalonazareno.org. (
1 ; serial
21600 ; refresh
3600 ; retry
604800 ; expire
21600 ); minimun
;
@ IN NS freston.cabezas.gonzalonazareno.org.
$ORIGIN cabezas.gonzalonazareno.org.
dulcinea IN A 10.0.1.10
freston IN A 10.0.1.9
sancho IN A 10.0.1.12
quijote IN A 10.0.2.4
db.1.0.10
Abrimos el fichero:
sudo nano /var/cache/bind/db.1.0.10
Y le añadimos el siguiente contenido:
$TTL 86400
@ IN SOA freston.cabezas.gonzalonazareno.org. root.cabezas.gonzalonazareno.org. (
1 ; serial
21600 ; refresh
3600 ; retry
604800 ; expire
21600 ); minimum
;
@ IN NS freston.cabezas.gonzalonazareno.org.
$ORIGIN 1.0.10.in-addr.arpa.
9 IN PTR freston.cabezas.gonzalonazareno.org
10 IN PTR dulcinea.cabezas.gonzalonazareno.org
12 IN PTR sancho.cabezas.gonzalonazareno.org
db.dmz.cabezas.gonzalonazareno.org
Abrimos el fichero:
sudo nano /var/cache/bind/db.dmz.cabezas.gonzalonazareno.org
Y le añadimos el siguiente contenido:
$TTL 86400
@ IN SOA freston.cabezas.gonzalonazareno.org. root.cabezas.gonzalonazareno.org. (
1 ; serial
21600 ; refresh
3600 ; retry
604800 ; expire
21600 ); minimum
;
@ IN NS freston.cabezas.gonzalonazareno.org.
$ORIGIN cabezas.gonzalonazareno.org.
quijote IN A 10.0.2.4
dulcinea IN A 10.0.2.5
freston IN A 10.0.1.9
sancho IN A 10.0.1.12
db.2.0.10
Abrimos el fichero:
sudo nano /var/cache/bind/db.2.0.10
Y le añadimos el siguiente contenido:
$TTL 86400
@ IN SOA freston.cabezas.gonzalonazareno.org. root.cabezas.gonzalonazareno.org. (
1 ; serial
21600 ; refresh
3600 ; retry
604800 ; expire
21600 ); minimum
;
@ IN NS freston.cabezas.gonzalonazareno.org.
$ORIGIN 2.0.10.in-addr.arpa.
4 IN PTR sancho.cabezas.gonzalonazareno.org
5 IN PTR dulcinea.cabezas.gonzalonazareno.org
db.externa.cabezas.gonzalonazareno.org
Creamos el archivo:
sudo nano /var/cache/bind/db.externa.cabezas.gonzalonazareno.org
Y añadimos el siguiente contenido:
$TTL 86400
@ IN SOA freston.cabezas.gonzalonazareno.org. root.cabezas.gonzalonazareno.org. (
1 ; serial
21600 ; refresh
3600 ; retry
604800 ; expire
21600 ); minimum
;
@ IN NS freston.cabezas.gonzalonazareno.org.
$ORIGIN cabezas.gonzalonazareno.org.
dulcinea IN A 172.22.200.123
Regla DNAT en Dulcinea
Tendríamos que añadir una nueva regla a dulcinea para que funcionasen las peticiones desde el exterior:
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 53 -j DNAT --to 10.0.1.9:53
La podríamos añadir al fichero ya previamente creado en /usr/bin/dmz-snat.sh
para que funcionara al reiniciar el equipo.
También hemos deshabilitado los grupos de seguridad y la seguridad de todos los puertos en todas las instancias para que el escenario sea más realista, además que si no lo quitamos dulcinea no puede hacer consultas.
Configuración máquinas
Para que los DNS sean permanentes aunque reiniciemos la máquina, vamos a hacer un par de modificaciones:
En dulcinea y freston
Abrimos el fichero:
sudo nano /etc/resolvconf/resolv.conf.d/base
Y le añadimos el siguiente contenido:
nameserver 10.0.1.9
search cabezas.gonzalonazareno.org
domain cabezas.gonzalonazareno.org
En sancho
Editamos el fichero:
sudo nano /etc/systemd/resolved.conf
Y añadimos lo siguiente:
[Resolve]
DNS=10.0.1.9
En quijote
En quijote ya lo tenemos definido por Network-manager en nuestro fichero:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
Con el siguiente contenido:
DEVICE=eth0
HWADDR=fa:16:3e:07:09:da
MTU=8950
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=10.0.2.4
NETMASK=255.255.255.0
GATEWAY=10.0.2.5
DNS1=10.0.1.9
SEARCH=cabezas.gonzalonazareno.org
Comprobaciones
NS de cabezas.gonzalonazareno.org
Cliente interno
ubuntu@sancho:~$ dig ns cabezas.gonzalonazareno.org
; <<>> DiG 9.16.1-Ubuntu <<>> ns cabezas.gonzalonazareno.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32749
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 21149d9a7d341aff5bffb6055fdc7f8867296c25c15c2096 (good)
;; QUESTION SECTION:
;cabezas.gonzalonazareno.org. IN NS
;; ANSWER SECTION:
cabezas.gonzalonazareno.org. 86400 IN NS freston.cabezas.gonzalonazareno.org.
;; ADDITIONAL SECTION:
freston.cabezas.gonzalonazareno.org. 86400 IN A 10.0.1.9
;; Query time: 0 msec
;; SERVER: 10.0.1.9#53(10.0.1.9)
;; WHEN: Fri Dec 18 11:08:08 CET 2020
;; MSG SIZE rcvd: 122
Cliente externo
ale@arya ~ dig ns cabezas.gonzalonazareno.org
; <<>> DiG 9.11.5-P4-5.1+deb10u2-Debian <<>> ns cabezas.gonzalonazareno.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17457
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: f86d8cf0876fca410434860b5fdc7fd14b79bbae7b09b768 (good)
;; QUESTION SECTION:
;cabezas.gonzalonazareno.org. IN NS
;; ANSWER SECTION:
cabezas.gonzalonazareno.org. 79352 IN NS dulcinea.cabezas.gonzalonazareno.org.
;; ADDITIONAL SECTION:
dulcinea.cabezas.gonzalonazareno.org. 86211 IN A 172.22.200.123
;; Query time: 0 msec
;; SERVER: 192.168.202.2#53(192.168.202.2)
;; WHEN: vie dic 18 11:09:21 CET 2020
;; MSG SIZE rcvd: 123
IP de dulcinea
Cliente interno
ubuntu@sancho:~$ dig dulcinea.cabezas.gonzalonazareno.org
; <<>> DiG 9.16.1-Ubuntu <<>> dulcinea.cabezas.gonzalonazareno.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8149
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: b877092789f407d914028c185fdc8062f303d0d4ef46138a (good)
;; QUESTION SECTION:
;dulcinea.cabezas.gonzalonazareno.org. IN A
;; ANSWER SECTION:
dulcinea.cabezas.gonzalonazareno.org. 86400 IN A 10.0.1.10
;; AUTHORITY SECTION:
cabezas.gonzalonazareno.org. 86400 IN NS freston.cabezas.gonzalonazareno.org.
;; ADDITIONAL SECTION:
freston.cabezas.gonzalonazareno.org. 86400 IN A 10.0.1.9
;; Query time: 3 msec
;; SERVER: 10.0.1.9#53(10.0.1.9)
;; WHEN: Fri Dec 18 11:11:46 CET 2020
;; MSG SIZE rcvd: 147
Cliente externo
ale@arya ~ dig dulcinea.cabezas.gonzalonazareno.org
; <<>> DiG 9.11.5-P4-5.1+deb10u2-Debian <<>> dulcinea.cabezas.gonzalonazareno.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20306
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: c46ed144790395a0f41965495fdc8071bc495fa4411bc169 (good)
;; QUESTION SECTION:
;dulcinea.cabezas.gonzalonazareno.org. IN A
;; ANSWER SECTION:
dulcinea.cabezas.gonzalonazareno.org. 86051 IN A 172.22.200.123
;; AUTHORITY SECTION:
cabezas.gonzalonazareno.org. 79192 IN NS dulcinea.cabezas.gonzalonazareno.org.
;; Query time: 0 msec
;; SERVER: 192.168.202.2#53(192.168.202.2)
;; WHEN: vie dic 18 11:12:01 CET 2020
;; MSG SIZE rcvd: 123
Resolución de www
Cliente interno
dig www.cabezas.gonzalonazareno.org
; <<>> DiG 9.16.1-Ubuntu <<>> www.cabezas.gonzalonazareno.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32933
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.cabezas.gonzalonazareno.org. IN A
;; ANSWER SECTION:
www.cabezas.gonzalonazareno.org. 86400 IN CNAME quijote.cabezas.gonzalonazareno.org.
quijote.cabezas.gonzalonazareno.org. 7199 IN A 10.0.2.4
;; Query time: 3 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Dec 18 17:03:37 CET 2020
;; MSG SIZE rcvd: 98
Cliente externo
dig www.cabezas.gonzalonazareno.org
; <<>> DiG 9.11.5-P4-5.1+deb10u2-Debian <<>> www.cabezas.gonzalonazareno.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60029
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 1c378297163a972c1561e8445fdcd312e5ed16773f24941c (good)
;; QUESTION SECTION:
;www.cabezas.gonzalonazareno.org. IN A
;; ANSWER SECTION:
www.cabezas.gonzalonazareno.org. 84389 IN CNAME dulcinea.cabezas.gonzalonazareno.org.
dulcinea.cabezas.gonzalonazareno.org. 64898 IN A 172.22.200.123
;; AUTHORITY SECTION:
cabezas.gonzalonazareno.org. 58039 IN NS dulcinea.cabezas.gonzalonazareno.org.
;; Query time: 1 msec
;; SERVER: 192.168.202.2#53(192.168.202.2)
;; WHEN: Fri Dec 18 16:04:35 UTC 2020
;; MSG SIZE rcvd: 141
Resolución inversa
Desde red interna
ubuntu@sancho:~$ dig -x 10.0.1.10
; <<>> DiG 9.16.1-Ubuntu <<>> -x 10.0.1.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4636
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: e6f8ca703ce0063c1d25d25c5fdc80a15a56cf163ddd3294 (good)
;; QUESTION SECTION:
;10.1.0.10.in-addr.arpa. IN PTR
;; ANSWER SECTION:
10.1.0.10.in-addr.arpa. 86400 IN PTR dulcinea.cabezas.gonzalonazareno.org.1.0.10.in-addr.arpa.
;; AUTHORITY SECTION:
1.0.10.in-addr.arpa. 86400 IN NS freston.cabezas.gonzalonazareno.org.
;; ADDITIONAL SECTION:
freston.cabezas.gonzalonazareno.org. 86400 IN A 10.0.1.9
;; Query time: 0 msec
;; SERVER: 10.0.1.9#53(10.0.1.9)
;; WHEN: Fri Dec 18 11:12:49 CET 2020
;; MSG SIZE rcvd: 195
Desde DMZ
[centos@quijote ~]$ dig -x 10.0.2.5
; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> -x 10.0.2.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42468
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: cfdc8b42c7d342dcd647c8f95fdc80c4f09bd5984b42b9bc (good)
;; QUESTION SECTION:
;5.2.0.10.in-addr.arpa. IN PTR
;; ANSWER SECTION:
5.2.0.10.in-addr.arpa. 86400 IN PTR dulcinea.cabezas.gonzalonazareno.org.2.0.10.in-addr.arpa.
;; AUTHORITY SECTION:
2.0.10.in-addr.arpa. 86400 IN NS freston.cabezas.gonzalonazareno.org.
;; ADDITIONAL SECTION:
freston.cabezas.gonzalonazareno.org. 86400 IN A 10.0.1.9
;; Query time: 1 msec
;; SERVER: 10.0.1.9#53(10.0.1.9)
;; WHEN: Fri Dec 18 11:13:24 CET 2020
;; MSG SIZE rcvd: 194