# [Redes] Mi servidor casero no resuelve las DNS (cerrado)

## Attalya

Hola,

Tras darle muchas vueltas y con la ayuda de un amigo, pudé descubrir que mi red si funcionaba, pero... -siempre hay un pero- no me resolvía las DNS, ejemplo practico:

Mediante DHCP, le doy al portatil todos los parametros de red en los que incluyo el 'dns-domain-name-server' en el fichero tengo dos lineas, las cuales comento con una # dependiendo cual vaya a utilizar, si utilizo la 1 comento la 2 y al reves:

1 option domain-name-server 192.168.0.1, que es la dirección IP de mi servidor, el resultado es que si hago ping www.google.com no funciona y haciendo ping 216.239.59.104 si funciona.

2 option domain-name-server 217.76.128.4, es la dirección IP de Arsys, haciendo ping www.google.com, la cosa funciona.

Digamos que soy terriblemente novato en esto de montar servidores -este es el primero despues de 2 años usando Linux- y no entiendo que puede estar pasando.

¿Cómo puedo hacer para que resuelva correctamente?, ¿tengo que poner algo más en el servidor?

Un saludo

----------

## lunatc

El caso de la dns 2 está claro...le dices que sea Arsys el que resuelva las direcciones y el portatil va él obedientemente  :Wink:  a preguntar al dns de Arsys.

Para el caso de la dns 1, le dices que es tu servidor el que ha de resolver las direcciones, luego se supone que has de tener un servidor de dns (bind por ejemplo) corriendo en la máquina "servidor".

Si lo tienes verifica que está iniciado, que la configuración del mismo es correcta y/o que no tienes un cortafuegos que bloquee las peticiones desde el portatil

Por probar

Salu2

----------

## Attalya

Bueno lo que me faltaba era precisamente el servidor DNS, no tengo ninguno instalado en el servidor y de ahí vienen, todos los problemas.

¿Cual me recomendais?

Os agradecería que tambien me pasrais direciones con How-to's para poder configurarlo

ACTUALIZACION: He conseguido hacer un proxy con squid, y el navegador si que funciona, pero el resto de aplicaciones, psi, mail, amsn, Xchat etc, no funcionan. ¿Tendría que redirigir los puertos en el firewall del servidor?

----------

## pcmaster

Aquí tienes la traducción al español de la última versión del DNS-COMO:

http://cauchy.bdat.net/dns/bind-9/DNS-HOWTO-9-es/DNS-HOWTO-9.es.html

----------

## lunatc

Bien, yo con el que suelo "funcionar" es con bind (aunque hay quien dirá que hay otras alternativas, es el que conozco y me va bien)

Lo que te voy a indicar es la configuración que tengo en un par de redes pequeñas. Está hecho con bastante "corta y pega" de los ficheros que tengo funcionando pero modificados para el ejemplo (espero no haber metido la pata)

OJO: NO PRETENDE SER "EL MANUAL" DE BIND SINO MAS BIEN "LA CHAPUCILLA RAPIDA PARA UN BIND CASERO". Probablemente un purista de este tema me metería la cabeza bajo un barreño de agua hasta que no salieran mas burbujas  :Wink: 

Empecemos...

Como siempre para instalar:

```

emerge bind

```

Inmediatamente después de emerger, está la opcion de hacer que bind corra en chroot, lo cual, por cuestiones de seguridad no es mala idea.

```

ebuild /usr/portage/net-dns/bind/bind-9.2.2-r2.ebuild config

```

Luego la configuración:

Bind te permite "delegar" en otros servidores dns y/o gestionar dns en tu propia red

Yo tengo actualmente configurado bind para que me gestione los dns de la red interna y además la resolución de nombres de internet. Esto me permite que mi red sea independiente de los dns de mi isp y ademas resolver los nombres de mi red sin tocar ficheros hosts en los equipos.

Adicionalmente se puede hacer que trabaje en conjunto con dhcpd para que a medida que se registren los equipos en la red queden registrados tambien en el servidor dns.

En la config, mynet es mi red interna (192.168.5.0/26) y el servidor es 192.168.5.2

Las lineas comentadas "forward first", "forwarders", etc. son para hacer que "delegue" las consultas en otros servidores dns (normalmente los de tu isp).

aunque yo no lo uso.

(NOTAS:

 1.-Lo de DHCP_UPDATER esta explicado mas abajo

 2.- Bind es muuuy pijo con la sintaxis pero avisa. Un punto o un punto y coma de mas o de menos y estás frito, pero avisa: mira los logs del sistema.

)

/chroot/dns/etc/bind/named.conf

```

// Ajustar control de permisos

acl "mynet" { 192.168.5.0/26; };

acl "myself" { 127.0.0.1; };

options {

        directory "/var/bind";

        pid-file "/var/run/named/named.pid";

#        forward first;

#        forwarders {

#              11.22.33.44;

#              55.66.77.88;

#        };

  //  Permitir a "mynet" hacer peticiones

      allow-query { "mynet"; "myself"; };

  //  Interfaz en la que "escuchar"

      listen-on { 127.0.0.1; 192.168.5.2; };

  //  A quien pregunta...

      version "No te interesa-Go away";

};

  

# Nota: Para permitir actualizacion desde servidor dhcp generar clave con...

#    dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER

# ... y añadir esta seccion tb a dhcp.conf

key DHCP_UPDATER {

        algorithm hmac-md5;

        secret "3nfbBMoYoq2i6ue9OFVQ3A==";

};

zone "." {

        type hint;

        file "named.ca";

};

zone "localhost" IN {

        type master;

        file "pri/localhost.zone";

        allow-update { none; };

        notify no;

};

zone "127.in-addr.arpa" IN {

        type master;

        file "pri/127.zone";

        allow-update { none; };

        notify no;

};

# COMIENZO ZONAS LOCALES

zone "midominio.dom" {

        type master;

        notify no;

        allow-update { key DHCP_UPDATER; };

        file "pri/midominio.dom";

};

zone "5.168.192.in-addr.arpa" {

        type master;

        notify no;

        allow-update { key DHCP_UPDATER; };

        file "pri/192.168.5";

};

```

Si te fijas hay definidas 5 "zonas" en la configuración

La primera es la zona "raiz", para la resolución buscando en los servidores dns "primarios" que hay en internet (están definidos en el fichero named.ca)

La segunda y tercera es para "localhost"

Las dos restantes son para la resolución de nombres en tu dominio (en este ejemplo midominio.dom)

zone "midominio.dom" se usa para la resolución de nombres (nombre -> ip) que tengan dicho dominio y los datos referentes a este dominio se configuran en el fichero indicado (file  "pri/midominio.dom";) que en mi caso esta en /chroot/dns/var/bind/pri/midominio.dom

```

$ORIGIN .

$TTL 259200     ; 3 days

midominio.dom          IN SOA   ns.midominio.dom. hostmaster.midominio.dom. (

                                200308105  ; serial

                                28800      ; refresh (8 hours)

                                7200       ; retry (2 hours)

                                2419200    ; expire (4 weeks)

                                86400      ; minimum (1 day)

                                )

                        NS      ns.midominio.dom.

                        MX      10 mail.midominio.dom.

localhost               A       127.0.0.1

ns                      A       192.168.5.2

mail                    CNAME   ns 

www                     CNAME   ns

```

En este fichero defines los nombres/ip "fijos" de ese dominio (ns es el servidor), yo tengo definidos mail y www como "alias" de ns con lo que un ping www o www.midominio.dom desde la red interna se resuelve a 192.168.5.2. 

(NOTA CHAPUZA: yo tengo incluso cosas como

```

pepitogrillo                      A       111.222.333.444

```

Para acceder a equipos de amigos sin tener que acordarme de sus ip

NO creo que sea recomendable esto, reconozco que es un "ugly hack" pero funciona)

zone "5.168.192.in-addr.arpa" se refiere a la red interna "192.168.5.X" (Siempre me parecerá curioso que lo pongan al revés y con el sufijo in-addr.arpa), y IIRC sirve para la "resolución inversa" (ip -> nombre)

El fichero es /chroot/dns/var/bind/pri/192.168.5

```

$ORIGIN .

$TTL 259200     ; 3 days

5.168.192.in-addr.arpa  IN SOA  ns.midominio.dom. hostmaster.midominio.dom. (

                                200308347  ; serial

                                28800      ; refresh (8 hours)

                                7200       ; retry (2 hours)

                                2419200    ; expire (4 weeks)

                                86400      ; minimum (1 day)

                                )

                        NS      ns.midominio.dom.

```

En principio lo puedes dejar así. 

Si dhcp trabaja en conjunto con bind, los dos ficheros se van actualizando automáticamente añadiendo los nombres e ip's de los equipos que se van registrando vía dhcp (de hecho en mis ficheros reales hay mas nombres/ip que he omitido)

Cuidado con los permisos del directorio pri y de los ficheros que contiene. Han de pertenecer a "named" que es el usuario sobre el que corre bind. 

Yo los tengo de esta manera 

(puedes cambiarlos con cd /chroot/dns/var/bind;chown -R named:named pri;chmod -R 0600 pri)

```

bash-2.05b# ls -ld pri

drwxr-xr-x  2 named named 288 nov  1 22:57 pri

bash-2.05b# ls -l pri/

total 32

-rw-------  1 named named 227 ago 12  2003 127.zone

-rw-------  1 named named 405 nov  1 22:57 192.168.5

-rw-------  1 named named 715 nov  1 22:57 midominio.dom

-rw-------  1 named named 412 ago 12  2003 localhost.zone

```

En principio esto es lo que hace falta básicamente para iniciar bind peeero

Para que tu equipo (el servidor) use el bind, aparte de iniciarlo con /etc/init.d/named start deberás añadirlo a /etc/resolv.conf (Siempre puedes añadir mas servidores por si este falla cual escopeta de feria - en el ejemplo XXX.YYY.WWW.ZZZ -)

```

bash-2.05b# cat /etc/resolv.conf

nameserver 192.168.5.2

nameserver XXX.YYY.WWW.ZZZ

search midominio.dom

```

Bien con esto a mi me ha funcionado

Ahora viene la parte en la que dhcpd se comunica con bind para indicarle que alguien se ha registrado y que su nombre es tal y que se le ha dado la ip X

Primero que nada hemos de crear una "clave" que sirve para que, tanto  dhcpd como bind, se identifiquen el uno al otro.

Hacer esto:

```

bash-2.05b# dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER

Kdhcp_updater.+157+15546

```

Esto genera una clave en dos ficheros (en este caso el que nos interesa es Kdhcp_updater.+157+15546.private

 *Quote:*   

> 
> 
> bash-2.05b# cat Kdhcp_updater.+157+15546.private
> 
> Private-key-format: v1.2
> ...

 

Lo que nos interesa está en negrita y lo añadimos tanto a dhcpd.conf (tb lo tengo en chroot), como a /chroot/dns/etc/bind/named.conf (si te fijas ya está añadido arriba en el ejemplo del named.conf):

El dhcpd.conf que tengo es algo parecido a esto: (nótese las negritas)

 *Quote:*   

> 
> 
> default-lease-time 604800;
> 
> max-lease-time 604800;
> ...

 

Rearrancar dhcpd y listo.

Esto está funcionando en dos redes con equipos linux y win, (con servidores gentoo por supuesto  :Wink:  ) desde hace bastante tiempo.

La única incidencia que he notado es que "curiosamente" es aconsejable poner como secundario en el dhcpd.conf algún servidor de nombres de tu isp además del propio bind de la red interna.

Espero que el rollo pueda servir de ayuda a alguien

Salu2

----------

## cpasoft

 *lunatc wrote:*   

> 
> 
> Esto está funcionando en dos redes con equipos linux y win, (con servidores gentoo por supuesto  ) desde hace bastante tiempo.
> 
> 

 

Mmmm.. muy interesante tu post, pero... respondeme a una pregunta... Los clientes windows toman IP's por Dhcp? ¿y estos se registran bien en el bind?. ¿Dónde le pasas la clave del registro dhcp en windows?...

Saludos...

----------

## lunatc

 *cpasoft wrote:*   

> 
> 
> Mmmm.. muy interesante tu post, pero... respondeme a una pregunta... Los clientes windows toman IP's por Dhcp? ¿y estos se registran bien en el bind?. ¿Dónde le pasas la clave del registro dhcp en windows?...
> 
> Saludos...

 

Para los clientes win funciona perfectamente: le pones en la configuracion de ip que tome todo por dhcp y listo.

Sí que quedan registrados en bind, de hecho puedes hacer un ping desde cualquier equipo win a otro win por su nombre + dominio

Esto es lo que pasa cuando un win98 que tengo por aqui renueva la dirección (he cambiado los nombres de dominio/equipo reales  :Wink:  )

```

...

Nov  2 09:47:25 [dhcpd] DHCPDISCOVER from 00:50:bf:7c:XX:XX (unequipowin) via eth0

Nov  2 09:47:26 [dhcpd] DHCPOFFER on 192.168.10.29 to 00:50:bf:7c:XX:XX (unequipowin) via eth0

Nov  2 09:47:26 [named] client 127.0.0.1#33724: updating zone 'midominio.dom/IN': adding an RR

Nov  2 09:47:26 [named] client 127.0.0.1#33724: updating zone 'midominio.dom/IN': adding an RR

Nov  2 09:47:26 [dhcpd] if IN A unequipowin.midominio.dom domain doesn't exist add 302400 IN A unequipowin.midominio.dom 192.168.10.29 add 302400 IN TXT unequipowin.midominio.dom "31ef7da55c4281546dfdd9626d7bdbba4f": success.

Nov  2 09:47:26 [named] client 127.0.0.1#33724: updating zone '10.168.192.in-addr.arpa/IN': deleting an rrset

Nov  2 09:47:26 [named] client 127.0.0.1#33724: updating zone '10.168.192.in-addr.arpa/IN': adding an RR

Nov  2 09:47:26 [dhcpd] delete IN PTR 29.10.168.192.in-addr.arpa. add 302400 IN PTR 29.10.168.192.in-addr.arpa. unequipowin.midominio.dom: success.

Nov  2 09:47:26 [dhcpd] DHCPREQUEST for 192.168.10.29 (192.168.10.2) from 00:50:bf:7c:XX:XX (unequipowin) via eth0

Nov  2 09:47:26 [dhcpd] DHCPACK on 192.168.10.29 to 00:50:bf:7c:XX:XX (unequipowin) via eth0

```

Y esto es un ping desde otro equipo (un win2k) de la red:

```

C:\Documents and Settings>ping unequipowin.midominio.dom

Haciendo ping a unequipowin.midominio.dom [192.168.10.29] con 32 bytes de datos:

Respuesta desde 192.168.10.29: bytes=32 tiempo<10ms TTL=128

Respuesta desde 192.168.10.29: bytes=32 tiempo<10ms TTL=128

Respuesta desde 192.168.10.29: bytes=32 tiempo<10ms TTL=128

Estadísticas de ping para 192.168.10.29:

    Paquetes: enviados = 3, recibidos = 3, perdidos = 0 (0% perdidos),

Tiempos aproximados de recorrido redondo en milisegundos:

    mínimo = 0ms, máximo =  0ms, promedio =  0ms

Control-C

^C

```

En los equipos win el nombre que se le pasa al dhcpd es el mismo nombre que se le haya dado al equipo win.

Salu2

----------

## Attalya

Muy bueno lunatc, 

¿por que no haces un HOW-TO sobre BIND o de como montar el servidor paso a pso? 

Yo he seguido el Howto de www.gentoo.org home-router, pero en algunas cosas me ha parecido incompleto, como es en el caso de las DNS, además de otras tantas miles de dudas, para el servidor de correo etc etc

Si lo haces dimelo, estaría encantado de leerlo   :Wink: 

Un saludo

----------

## lunatc

Gracias...  :Smile: 

Sí, estaría bien, porque de alguna manera, además de que le pueda ser útil a alguien, me sirve tambien para no olvidarme de las cosas que voy probando (esto casi se me había ido de la cabeza!)

A ver si busco algo de tiempo y le meto mano al asunto!

Salu2

----------

## focahclero

Hola, me sabe mal decir esto después de la currada que se ha pegado lunatc  :Wink:  pero antes de montar un servidor DNS hay qué plantearse sí realmente hace falta.

Lo digo porque me ha parecido entender que Attalya sólo quiere dar servicio de DNS a su propia máquina o red casera, por tanto, no es necesario para nada montar un DNS propio... con utilizar el que nos "vaya mejor" (como el de Arsys que comentabas) es suficiente.

(Aunque en este punto suele salir la típica discusión al respecto de que es más óptimo hacer las peticiones cada vez que hace falta a un servidor externo o que tengamos un DNS propio que tiene que esforzarzse en buscar las direcciones que le vamos pidiendo...)

En resumen: un servidor DNS propio se recomienda para dar servicio a una red local (o no) sobre la que tengamos "personalizados" dominios y máquinas que puden incluso no existir en Internet, o simplemente no queramos tener 100 máquinas lanzando peticiones DNS a Internet. Si sólo tenemos uno, dos, tres... PCs con utilizar un DNS externo me parece más que suficiente.

Saludos,

----------

## Attalya

Hola,

Lo primero decirte que no andas desencaminado, la consulta era respecto a una red casera, pero en mi caso soy muy novato en todo esto de las redes y lancé la pregunta pensando que era lo mejor. Ahora bien, gracias a respuestas como la tuya focahclero, la de lunatc, cpasoft, pcmaster , y la de un amigo -que tiene que estar de mi hasta más arriba de las cejas- he podido comprender un poco más el funcionamiento de las redes, y espero poco a poco ir entendiendo todo un poquito mejor.

Por ahora, el objetivo ha sido cumplido, consigo servir internet a mi pequeña red, he terminado por utilizar las DNS de mi proveedor, además de las de Arsys, la proxima meta será montar el servidor web -aunque ya tengo funcionando el Apache, aun me quedan ciertas dudas-, servidor de correo, ftp, freenet , etc No es que quiera montar un macro servidor, pero si comenzar a adentrarme en las redes -un poco olvidadas por mi parte- 

Agradeceros, vuestra ayuda, ha sido rápida y seguro que más adelante nos iremos viendo en otras preguntas que puedan saltarme o a vosotros.

Un saludo

----------

## LordAckward

yo estoy con focahclero, un servidor dns es 'overkill' en el 99.9% de las redes caseras.  :Smile:   (el 0.01% es porque ayer monte uno ya que ser resuelve incluso su propio dominio a base de peticiones SRV)

Lo primero que hay que plantearse es: que necesitas?

1) Peticiones de dns genericas

2) Resolucion de nombres a servidores propios.

El caso 1 es simple configuracion de los servidores DNS de arsys en /etc/resolv.conf si quieres hacerlo algo mejor,  mas rapidez por ejemplo o dar servicio a una red interna tampoco necesitas un servidor de DNS, necesitas un simple forwarder el mas util dnscache de tinydns. dnscache no es un servidor dns simplemente recibe peticiones dns y si las tiene cacheadas las devuelve y sino se encarga de preguntarlas y devolvertelas.

Mucho mas sencillo que montar un DNS, en serio.

El caso 2, ¿cuantos equipos?  si son pocos clientes, pocos servicios y estos son normales (todos salvo que te metas en cosas raras de enrutamiento) meter las resoluciones a piñon en /etc/hosts te quitara mil quebraderos de cabeza.

Pero si realmente necesitas un servicio DNS.... por dios! no instales bind. Hay pocos servicios con una hoja de vulnerabilidades mayor, la aplicacion esta 'bloated', hinchada y ademas es complicado de configurar.

Echale un vistazo a tinydns (http://tinydns.org) basado en djbdns. Modular (yo ayer por ejemplo instale solo el dnscache y el tinydns pero no necesite instalar la aplicacion de transferencia de zonas), pequeño, potente y aunque no lo parezca mucho mas facil de configurar que bind.

----------

## LordAckward

 *lunatc wrote:*   

> 
> 
> Si dhcp trabaja en conjunto con bind, los dos ficheros se van actualizando automáticamente añadiendo los nombres e ip's de los equipos que se van registrando vía dhcp (de hecho en mis ficheros reales hay mas nombres/ip que he omitido) 
> 
> 

 

He estado mirando tu configuracion, tienes dividida la red 192.168 en subredes,  o un bridge estraño? es que no veo el sentido a unir el dhcpd con el dns (ya resuelves los nombres dinamicamente por arp) que ventajas ofrece unir dhcp con el dns?

Actualizacion:

Lo que no tiene sentido es que meta estas gambas.   :Embarassed: Last edited by LordAckward on Wed Nov 03, 2004 9:07 am; edited 1 time in total

----------

## lunatc

 *LordAckward wrote:*   

> yo estoy con focahclero, un servidor dns es 'overkill' en el 99.9% de las redes caseras.   (el 0.01% es porque ayer monte uno ya que ser resuelve incluso su propio dominio a base de peticiones SRV)
> 
> Lo primero que hay que plantearse es: que necesitas?
> 
> 1) Peticiones de dns genericas
> ...

 

 *LordAckward wrote:*   

> 
> 
> He estado mirando tu configuracion, tienes dividida la red 192.168 en subredes, o un bridge estraño? 
> 
> 

 

Se agradece la información. Probaré tinydns.  :Wink: 

Leyendo lo que han puesto tanto LordAckward como focahclero, estoy de acuerdo en que puede ser un despropósito meter un bind en una red pequeña.   :Embarassed: 

Cuando hace algún tiempo monté bind en el par de redes que tengo, lo hice inicialmente como una curiosidad, digamos para aprender como funcionaba la cosa de los dns, y como me funcionó en su momento y no me daba problemas, me fui dedicando a aprender otros temas y así se quedó. 

Lo de la red  192.168 en subredes lo hice por la misma razón hace mucho tiempo, e igualmente así quedó. No hay una razón explicita para hacerlo así.

  Ahora retomando el tema me doy cuenta de que es verdad lo del "overkill", pero también el post puede dar pie a que alguien se meta en el berenjenal como manera de trastear con el tema y aprender algo más como me pasó a mi. 

En fin, gracias por las opiniones, me han hecho retomar el tema de modo mas realista y pensar en otras soluciones mas acordes... nunca se deja de aprender y en serio que probaré djbdns y dntinydns  :Wink: 

Salu2

PD:

 *LordAckward wrote:*   

> ...es que no veo el sentido a unir el dhcpd con el dns (ya resuelves los nombres dinamicamente por arp) que ventajas ofrece unir dhcp con el dns?
> 
> 

 

Aquí si que estoy confundido...la idea inicial que me llevó a montar bind fue la de que los equipos win entraran por dhcp y se "autoconfiguraran" con lo que les indicaba yo en el servidor dhcp. Pero así a bote pronto no encontré la manera de que los win resolvieran las ip's de la red interna (sin ficheros host en los win) sin tener que montar un servidor dns al que los equipos win preguntaran. No poseo un dominio real, sino que uso uno "inventado" para la red interna. Leyendo la doc de bind/dhcp encontré este "método colaborativo" entre bind y dhcp.

Lo de arp es lo que me descoloca, puesto que siempre pensé que arp servía solamente para la resolucion a nivel dirección-hard/ip   :Question: 

----------

## LordAckward

 *lunatc wrote:*   

> 
> 
> Aquí si que estoy confundido...la idea inicial que me llevó a montar bind fue la de que los equipos win entraran por dhcp y se "autoconfiguraran" con lo que les indicaba yo en el servidor dhcp. Pero así a bote pronto no encontré la manera de que los win resolvieran las ip's de la red interna (sin ficheros host en los win) sin tener que montar un servidor dns al que los equipos win preguntaran. No poseo un dominio real, sino que uso uno "inventado" para la red interna. Leyendo la doc de bind/dhcp encontré este "método colaborativo" entre bind y dhcp.
> 
> Lo de arp es lo que me descoloca, puesto que siempre pensé que arp servía solamente para la resolucion a nivel dirección-hard/ip  

 

.... lalalalala .....    :Rolling Eyes: 

mira!! un mono con 3 cabezas!

hehe menuda columpiada me he metido, si, arp solo se encarga de la resolucion de la direccion mac a partir de la ip. Nada que ver con el paso previo de obtener la ip a traves del nombre    :Embarassed: 

Voy a ver si encuentro una pieda y me escondo debajo que me doy verguenza a mi mismo, lo que no entiendo es en que estaria pensando   :Shocked: 

----------

## lunatc

Coño! ya decía yo! que susto con lo del arp!  , jeje

Nada hombre, comparado con montar un disipador sin quitar el plástico protector y quasi freir el procesador....!   :Embarassed: 

Salu2

----------

