Servidor DNS (BIND9)

De Wikijoan
Dreceres ràpides: navegació, cerca

Configuració de BIND9 (servidor de DNS): http://www.mexicoextremo.com.mx/content/view/423/62/

bind9 a Ubuntu: http://www.gpltarragona.org/archives/421

Los nombres de dominio completamente calificados o FQDN (fully qualified domain name) se componen por lo general del nombre del host, un nombre de dominio secundario y un nombre de dominio primario o de nivel máximo (top-level domain), que son secciones organizadas jerárquicamente. Por ejemplo: 'www.ejemplo.com’. Leyéndolo de derecha a izquierda tenemos un dominio primario (’COM’), un dominio secundario (’EJEMPLO’) y el nombre del host (’WWW’).

Contingut

Configuració

Veamos como configurar BIND9 para disponer de un servidor DNS en una intranet, que resuelva dominios internos. Por ejemplo, en la intranet se utilizaran dominios que terminen en "marblestation.homeip.net” como "saturno.marblestation.homeip.net” o "luna.marblestation.homeip.net”. El servidor DNS se encargará de resolver esos dominios en sus respectivas IPs, además de resolver otros dominios de Internet como "google.com”.

Instalamos BIND9 y nos desplazamos a su directorio de configuración:

$ aptitude install bind9 #o bé
$ sudo apt-get install bind9
$ cd /etc/bind/

Editamos named.conf.local y añadimos la zona "marblestation.homeip.net”, haciendo referencia a su fichero de configuración:

zone "marblestation.homeip.net" {
    type master;
    file "/etc/bind/db.marblestation";
};

Creamos el fichero de configuración "db.marblestation” a partir de "db.local”:

cp db.local db.marblestation

; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA marblestation.homeip.net. root.marblestation.homeip.net. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry  
            2419200     ; Expire 
             604800 )   ; Negative Cache TTL
;
@           IN      NS          marblestation.homeip.net.
@           IN      A           192.168.1.130
@           IN      MX      0   marblestation.homeip.net.
www         IN      A           192.168.1.130  
saturno     IN      CNAME       marblestation.homeip.net.

fixem-nos que saturno és un alias que apunta a la mateixa IP (compte, un alias no és el mateix que un subdomini) CNAME (Canonical Name). Es un alias que se asigna a un host que tiene una dirección IP valida y que responde a diversos nombres. Pueden declararse varios para un host.

Cada vez que se cambia la configuración de BIND9, debemos reiniciar el demonio:

$ sudo /etc/init.d/bind9 restart

Para que nuestra máquina utilice el servidor de DNS que hemos configurado, debemos editar "/etc/resolv.conf” y dejamos únicamente la línea:

nameserver 127.0.0.1

és la manera de dir quin és el servidor DNS de la Intranet. Abans hi havia el 192.168.0.1, que és la manera de dir que els DNS estan en el router. En la resta de màquines de la intranet s'ha de ficar:

Para comprobar el correcto funcionamiento, utilizamos el comando "host” el cual sirve para resolver dominios:

$ host marblestation.homeip.net
marblestation.homeip.net has address 192.168.1.130
marblestation.homeip.net mail is handled by 0 marblestation.homeip.net.

$ host saturno.marblestation.homeip.net
saturno.marblestation.homeip.net is an alias for marblestation.homeip.net.
marblestation.homeip.net has address 192.168.1.130
marblestation.homeip.net mail is handled by 0 marblestation.homeip.net.

(també em funciona en Windows)

Si deseamos también disponer de resolución de dominios inversa, es decir, que podamos preguntar por la IP "192.168.48.32″ y el servidor DNS nos diga que pertenece a marblestation.homeip.net, debemos añadir a "/etc/bind/named.conf.local”:

zone "192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192";
};

Creamos el archivo de configuración "/etc/bind/db.192″ a partir del "/etc/bind/db.127″:

cd /etc/bind/
cp db.127 db.192

Editamos "/etc/bind/db.192″, substituimos "localhost” por "marblestation.homeip.net” y cambiamos la última línea:

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@   IN  SOA marblestation.homeip.net. root.marblestation.homeip.net. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@   IN  NS  marblestation.homeip.net.
130.1.168   IN  PTR marblestation.homeip.net.

De forma que, la última linea indica que la IP [192.]168.1.130 (escrita a la inversa y omitiendo el 192 que ya se especifico en "named.conf.local”) corresponde al dominio marblestation.homeip.net.

Podemos comprobar su funcionamiento reiniciando el demonio BIND9 y realizando una consulta:

$ sudo /etc/init.d/bind9 restart
$ host 192.168.1.130
130.1.168.192.in-addr.arpa domain name pointer marblestation.homeip

En el Mozilla, funcionen correctament:

http://localhost/googling/

http://192.168.1.130/googling/

http://marblestation.homeip.net/googling/ (també funciona en el IE del Windows)


Administración del servicio de DNS

Arranque del servicio.

$ /etc/init.d/bind9 start
 - o -
$ service bind9 start -> no vàlid a Ubuntu

Alto del sistema.

$ /etc/init.d/bind9 stop
 - o -
$ service bind9 stop -> no vàlid a Ubuntu

Verificación del sistema.

$ ps -fea |grep bind9
 - o -
$ service bind9 status -> no vàlid a Ubuntu

Automatización al arranque del equipo.

chkconfig -level 123 bind9 on -> no vàlid a Ubuntu, buscar com es fa amb Ubuntu (veure el fitxer howto_runlevel.txt) de fet, no cal. La instal.lació del bind9 ja fica en el seu lloc els scripts per tal que l'inici sigui automàtic

$ cd /etc/rc2.d
$ cat S15bind9

(la S significa start, i és un script que s'executa en l'inici del sistema amb run level=2)

Subdominis amb Apache

Ara que ja hem aconseguit fer funcionar http://marblestation.homeip.net/ (seria equivalent a http://www.homeip.net/), ara hem d'aconseguir configurar un subdomini, del tipus:

http://forum.homeip.net/

Hauré de fer dues coses:

1) a nivell de DNS, que apunti a la IP correcte (en ppi la mateixa, 192.168.1.130)

2) a nivell d'Apache, configurar un directori virtual per tal que ho sàpiga trobar.

Documentació de hosting virtual a Apache (castellà): http://httpd.apache.org/docs/2.0/es/vhosts/

También recordarte que, además de configurar el servidor Apache, donde te gestionan el Dominio es necesario que cambies la ip donde apunta, es decir: foros.tudominio.com debe apuntar a una IP (la de tu servidor Apache)

També:

http://www.debian-administration.org/articles/355

Resum

Així doncs, anem a crear el domini terra.joanillo.com i el subdomini lluna.joanillo.com

Editamos named.conf.local y añadimos la zona "terra.joanillo.com”, haciendo referencia a su fichero de configuración:

zone "terra.joanillo.com" {
    type master;
    file "/etc/bind/db.terra";
};

$ cp db.local db.terra

; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA terra.joanillo.com. root.terra.joanillo.com. (            
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry  
            2419200     ; Expire 
             604800 )   ; Negative Cache TTL
;
@           IN      NS          terra.joanillo.com.      
@           IN      A           192.168.1.130
@           IN      MX      0   terra.joanillo.com.      
www         IN      A           192.168.1.130  
saturn     IN      CNAME       terra.joanillo.com.   

$ sudo /etc/init.d/bind9 restart

$ host terra.joanillo.com
terra.joanillo.com has address 192.168.1.130
terra.joanillo.com mail is handled by 0 terra.joanillo.com.
$ host saturn.terra.joanillo.com
saturn.terra.joanillo.com is an alias for terra.joanillo.com.
terra.joanillo.com has address 192.168.1.130
terra.joanillo.com mail is handled by 0 terra.joanillo.com.

el fitxer resolv.conf ja està ben editat:

nameserver 127.0.0.1 -> diem quin és el servidor DNS

Anem a configurar el subdomini lluna.joanillo.com

Editamos named.conf.local y añadimos la zona "lluna.joanillo.com”, haciendo referencia a su fichero de configuración:

zone "lluna.joanillo.com" {
    type master;
    file "/etc/bind/db.lluna";
};

$ cp db.terra db.lluna

; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA lluna.joanillo.com. root.lluna.joanillo.com. (            
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry  
            2419200     ; Expire 
             604800 )   ; Negative Cache TTL
;
@           IN      NS          lluna.joanillo.com.      
@           IN      A           192.168.1.130
@           IN      MX      0   lluna.joanillo.com.      
www         IN      A           192.168.1.130  

$ sudo /etc/init.d/bind9 restart

$ host lluna.joanillo.com
lluna.joanillo.com has address 192.168.1.130

funciona, però de fet he fet un altre domini més que un subdomini. tant http://terra.joanillo.com com http://lluna.joanillo.com apunten a l'arrel de l'Apache

he de configurar l'Apache per tal que es redirigeixin a la carpeta correcte

http://terra.joanillo.com com -> /home/joan/terra/index.htm (que es vegi la paraula 'terra')

http://lluna.joanillo.com com -> /home/joan/lluna/index.htm (que es vegi la paraula 'lluna')

ja ho he aconseguit!

Explicació trobada de la Wiki del Sergi Tur:

http://acacha.dyndns.org/mediawiki/index.php/Subdominis_amb_Apache

El fitxer de configuració del Apache és el apache2.conf

#  3. Settings for virtual hosts, which allow Web requests to be sent to
#     different IP addresses or hostnames and have them handled by the
#     same Apache server process.
Include /etc/apache2/sites-enabled/

En aquest directori hi ha d'haver enllaços simbòlics a la definició del virutalhost de Terra i Lluna.

$ cd /etc/apache2/sites-available

Si fem un ls -l, veurem els dominis i subdominis que es troben a la màquina. per defecte, només hi ha default. En aquest default tinc definit uns àlies /socrathos i /googling, que el que fan és que em funcioni http://localhost/googling i http://localhost/socrathos. És a dir, tinc un site-available, el default, que apunta a l'arrel de l'apache, i uns àlies que redirigeixen a través d'un directori El que jo vull fer ara són dos nous sites, que poden apuntar a una altra IP, domini o subdomini

$ sudo joe terra (creo el fitxer terra)

El contingut del fitxer és:

NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@joanillo.com

        ServerName terra.joanillo.com

        DocumentRoot /home/joan/terra

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

</VirtualHost>

on especifico el nom del subdomini (terra.joanillo.com) i la ruta que té el subdomini (/home/joan/terra)

Anem al directori:

$ cd /etc/apache2/sites-enabled

creem un enllaç simbòlic

$ sudo ln -s /etc/apache2/sites-available/terra 060-terra

El número 60 és el posició de càrrega del domini al inciar apache. Si anteriorment fem un $ ls -l observareu que els dominis van de 10 en 10. Això permet posteriorment si has d'encavir un procés entre el 10 i el 20, doncs pots utilitzar el 15. El funcionament és el mateix que els processos d'inici del sistema GNU/Linux

El mateix que he fet per a 'terra' ho faig per a 'lluna'

Ara només cal recargar la informació de Apache 2 fent:

$ sudo /etc/init.d/apache2 reload

Ja funciona!

http://terra.joanillo.com com terra http://lluna.joanillo.com com lluna

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines