P11. Servidor DNS amb CentOS

De Lordwektabyte Wiki
Salta a la navegació Salta a la cerca

Enunciat

Crea un servidor DNS a la maquina virtual CentOS amb la zona boeck.cat.

Les proves en local NO SERVEIXEN. El client que farà servir el servidor serà l'amfitrió.

Preliminar

Partirem d'una màquina virtual CentOS 7 minimal amb la IP 192.168.56.50. L'administració es farà a través d'SSH des de l'amfitrió de la MV.

Primer de tot instal·laré l'editor de text que estic acostumat en comptes del que ve instal·lat amb la minimal de CentOS

yum install nano -y

També instal·larem wget per a poder descarregar arxius des de la xarxa, necessari per instal·lar Webmin.

yum install wget -y

També deshabilitarem SELinux per evitar problemes amb directives de seguretat

setenforce 0

Per a fer-ho permanent, entre reboots, podem editar /etc/selinux/config i editar la línia corresponent amb el valor disabled

Procediment

Instal·lació de paquets

Servidor DNS

Haurem d'instal·lar els paquets necessaris per al servidor DNS. En el meu cas, instal·laré el servidor BIND:

yum install bind bind-utils -y

Veurem que se'ns instal·len altres dependències necessàries. Una vegada instal·lat el podem engegar i habilitar l'inici on boot amb

systemctl start named
systemctl enable named

Després haurem d'obrir el port corresponent al Firewall de manera que màquines de la xarxa puguin enviar peticions DNS en aquest servidor

firewall-cmd --permanent --add-service=dns
firewall-cmd --reload

Webmin

Des de la pàgina oficial de Webmin anirem a la secció de descàrregues i copiarem el link de l'arxiu RPM i el descarregarem al CentOS utilitzant wget

wget https://prdownloads.sourceforge.net/webadmin/webmin-1.890-1.noarch.rpm

Una vegada descarregat, podríem instal·lar-lo amb rpm -i però ho farem amb yum install per tal de resoldre dependències (si n'hi ha)

yum install ./webmin-1.890-1.noarch.rpm

En efecte, s'instal·len moltes dependències (sobretot de perl). Esperem que acabi la instal·lació. Quan acabi, podrem accedir a la interfície de webmin a través del port 10000 del CentOS (per HTTPS auto-signat); per tant, haurem d'afegir-lo a la configuració del Firewall

firewall-cmd --add-port=10000/tcp --permanent
firewal-cmd --reload

Podem llistar els ports oberts al firewall per comprovar que almenys el corresponent al servei DNS i el 10000 per a webmin estiguin oberts

[root@m08uf1dns ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  sources: 
  services: ssh dhcpv6-client dns
  ports: 10000/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

Si és correcte, podem navegar a https://192.168.56.50:10000 i veurem la pantalla de login del webmin acabat d'instal·lar

Entrarem amb l'usuari del sistema root i la seva contrasenya


Una vegada dins, veurem la pàgina principal/dashboard del Webmin

Ens surt un error d'un mòdul que no s'ha instal·lat


El mòdul necessari és perl-digest-md5 i el podem instal·lar amb yum

yum install perl-digest-md5

Actualitzem la pàgina de Webmin i veurem, ara sí, el dashboard amb informació sobre el servidor

M08uf1a01pt1-3.png


Configuració de BIND mitjançant Webmin

Des del panell de l'esquerra de Webmin podem desplegar Servers i obrir BIND DNS Server

M08uf1a01pt1-4.png


Veiem diverses opcions per a configurar el servidor DNS i també les zones existents: localhost, 127.0.0.1, etc. Per a crear la nova zona amb el nostre cognom (boeck.cat) farem clic a Create master zone

M08uf1a01pt1-5.png


Omplirem el domain name amb el nostre cognom+.cat com es demana i posarem també un correu electrònic (obligatori)

M08uf1a01pt1-6.png


Cliquem Create zone i automàticament ens portarà a la pantalla de control de la nova zona creada

M08uf1a01pt1-7.png


Clicarem el primer botó de la primera fila Adresses (0) per a afegir registres A (nom →adreça IP) i afegirem quatre registres de prova:

  • a01.boeck.cat serà un CentOS minimal que servirà de client i tindrà IP 192.168.56.51
  • a02.boeck.cat serà un CentOS minimal que servirà de client i tindrà IP 192.168.56.52
  • dns.boeck.cat serà el registre que apuntarà aquest domini al servidor mateix que estic treballant (IP 192.168.56.50)
  • fedora.boeck.cat correspon a la IP de la màquina anfitriona de les màquines virtuals, que comparteixen xarxa virtual i té IP 192.168.56.1
M08uf1a01pt1-8.png


Una vegada afegits els registres, haurem de modificar la configuració del servidor DNS de manera que escolti i s'anuncïi com a tal a través de la xarxa ja que, per defecte, només escolta a ell mateix.

S'ha produït un error en crear la miniatura: No es pot desar la miniatura a la destinació
Des de la zona boeck.cat clicarem Edit config file


M08uf1a01pt1-10.png


Webmin ens mostra un editor de l'arxiu via web on haurem de modificar la línia 13 i la 19 de manera que en comptes de 127.0.0.1 i localhost i figuri any.

S'ha produït un error en crear la miniatura: No es pot desar la miniatura a la destinació
Canvis fets


Reiniciarem el servei de DNS

systemctl reload named

Prova de funcionament

Local

Primer de tot, provaré de resoldre noms des del mateix servidor DNS fent servir dig i ping. Per a utilitzar el DNS que s'està executant al CentOS, hauré de modificar la configuració de la interfície de xarxa virtual corresponent a la 192.168.56.0/24 de manera que el servidor DNS sigui 192.168.56.50 (ell mateix). Puc fer-ho amb la comanda nmtui. Provaré de fer un ping a fedora.boeck.cat:

[root@m08uf1dns ~]# ping fedora.boeck.cat
PING fedora.boeck.cat (192.168.56.1) 56(84) bytes of data.
64 bytes from 192.168.56.1 (192.168.56.1): icmp_seq=1 ttl=64 time=0.316 ms
64 bytes from 192.168.56.1 (192.168.56.1): icmp_seq=2 ttl=64 time=0.442 ms

Efectivament, el nom de host es resol cap a la IP que he definit anteriorment. El següent pas és comprovar que aquesta resolució l'hagi fet el mateix CentOS on s'executa el BIND: 192.168.56.50

[root@m08uf1dns ~]# dig fedora.boeck.cat 

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> fedora.boeck.cat
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16603
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;fedora.boeck.cat.              IN      A

;; ANSWER SECTION:
fedora.boeck.cat.       38400   IN      A       192.168.56.1

;; AUTHORITY SECTION:
boeck.cat.              38400   IN      NS      m08uf1dns.

;; Query time: 0 msec
;; SERVER: 192.168.56.50#53(192.168.56.50)
;; WHEN: dg nov 04 13:25:37 CET 2018
;; MSG SIZE  rcvd: 84

De la mateixa manera, podem llegir en aquest output que el servidor 192.168.56.50 té un A Record per al nom fedora.boeck.cat que apunta a l'adreça 192.168.56.1. Per tant, és correcte.

Seria d'esperar, aleshores, que si poso en marxa 2 màquines més a la mateixa xarxa (corresponents a a01.boeck.cat i a02.boeck.cat) i les configuro per usar 192.168.56.50 com a DNS, també haurien de poder resoldre noms i connectar entre elles usant aquests noms de host. Les captures següents són simplement captures de pantalla de dues noves màquines CentOS minimal a les que he configurat la IP d'acord als registres A que corresponen als servidor DNS i la prova que cada una pot resoldre els noms de host existents al BIND

Xarxa virtual

Configuració de xarxa dels hosts extres

  • a01.boeck.cat
IP: 192.168.56.51
DNS: 192.168.56.50
M08uf1a01pt1-12.png


  • a02.boeck.cat
IP: 192.168.56.52
DNS: 192.168.56.50
M08uf1a01pt1-13.png


Prova de resolució de noms

  • El host a01 pot fer ping a fedora, a a02 i a dns
M08uf1a01pt1-14.png


  • El host a02 pot fer ping a fedora, a a01 i a dns
M08uf1a01pt1-15.png