Instalación de tinydns y dnscache de djbDNS y OpenDNS sobre ubuntu Linux 9.04

Instalado en ubuntu 9.04 para servidores de 64 bits
Instalación de tinydns y dnscache de djbDNS y filtro de contenido usando OpenDNS sobre ubuntu Linux 9.04

Instalación en ubuntu de djbdns
Basado en: http://ectropic.com/wordpress/2008/05/28/tinydns-djbdns-on-ubuntu-hardy-heron/

No todo funcionó como dice, ya que /etc/inittab en ubuntu hardy no existe por lo que se deben crear asi:

/etc/inittab
-------------
id:2:initdefault:
# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

-------------

Hay que crear en algun punto de las instalaciones el archivo
/etc/event.d/svscan con el siguiente contenido:
-------------
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on shutdown
respawn
exec /usr/bin/svscanboot
--------------


PRE-INSTALL:

#sudo apt-get install build-essential
* Add to /etc/apt/sources.list: deb http://ftp2.de.debian.org/debian/ etch main contrib non-free
#sudo apt-get update

INSTALL ALL THE PACKAGES:

* ucspi-tcp-src:
#sudo apt-get install ucspi-tcp-src
#sudo build-ucspi-tcp
+ Accept all the defaults

Este paquete da problemas con el ubuntu 8.04 en la versión de 32 como de 64 bits, se arregla de la siguiente forma:

#sudo ln -s /usr/local/man /usr/man ; sudo mkdir /usr/man/man5

y volver a ejecutar el paso anterior.

* daemontools
#sudo apt-get install daemontools-installer
#sudo build-daemontools
+ Accept all the defaults
#sudo ln -s /etc/inittab{new} /etc/inittab

* DJBDNS
#sudo apt-get install djbdns-installer
#sudo build-djbdns
+ Accept all the defaults

CONFIG PACKAGES:
* Es posible que este paso se omita si los usuarios fueron creados por los paquetes anteriores

#sudo adduser -no-create-home -disabled-login -shell /bin/false dnscache
#sudo adduser -no-create-home -disabled-login -shell /bin/false dnslog
#sudo adduser -no-create-home -disabled-login -shell /bin/false tinydns
#sudo adduser -no-create-home -disabled-login -shell /bin/false axfrdns

Si se van a crear mas servicios tales como 2 tinydns, digamos tinydns2 es necesario crear el usuario también.
Recordar que DNS en el puerto 53 es en udp sin embargo hay a veces necesidad de configurarlo para que hable en tcp, para ello se usa axfrdns y se ha de configurar para que use la misma ip del tinydns

* Configure dnscache:
#sudo mkdir /var/lib/svscan
#sudo dnscache-conf dnscache dnslog /var/lib/svscan/dnscache
#sudo ln -sf /var/lib/svscan/dnscache /service

+ Check that “supervise” directory was create in /service/dnscache - If it wasn’t something is wrong… See: http://www.troubleshooters.com/linux/djbdns/index.htm

* Configure tinydns:
#sudo tinydns-conf tinydns dnslog /var/lib/svscan/tinydns 10.0.0.105
#sudo ln -sf /var/lib/svscan/tinydns /service

+ Check that “supervise” directory was create in /service/tinydns - If it wasn’t something is wrong. See: http://www.troubleshooters.com/linux/djbdns/index.htm

* Edit /etc/resolv.conf
domain dominio.com
nameserver 127.0.0.1 # o el ip de la máquina.

Antes de probar reiniciar, es necesario revisar que /service/dnscache y /service/tinydns tengan la siguiente estructura:

:/service/dnscache# ls
env log root run seed supervise

:/service/tinydns# ls
env log root run supervise

Si no cuenta con la carpeta de supervise djbdns no funcionará, por lo que para crearla hay que mover temporalmente /etc/event.d/svscan a otro nombre, reiniciar el quipo, realizar la creación del conjunto de directorios de la misma manera

# dnscache-conf dnscache dnslog /var/lib/svscan/dnscache 10.0.0.105 ; sleep 5

El sleep 5 es para darle un tiempo al comando para que cree el directorio supervise.
#sudo /etc/init.d/djbdns restart


Test Install:

#dnsip www.google.com (dnscache)

---------------

Yo utilicé el ejemplo que puso solca en mis servers para que usara opendns y todas las redes, entonces los datos importantes son:

tinydns (/service/ns1/env)
root@ib:/service/ns1/env# ls
IP IPSEND ROOT
root@ib:/service/ns1/env# cat *
10.0.0.10
10.0.0.10
/var/lib/svscan/ns1/root

en /service/ns1/root/data se alojan todos los dominios internos.

dnscache (/service/dnscache/env)
root@ib:/service/dnscache/env# ls
CACHESIZE DATALIMIT FORWARDONLY IP IPSEND ROOT
root@ib:/service/dnscache/env# cat *
7000000
4000000
1
10.0.0.12
10.0.0.10
/var/lib/svscan/dnscache/root

root@ib:/service/dnscache# cd root/
root@ib:/service/dnscache/root# cd ip/
root@ib:/service/dnscache/root/ip# ls
10.0.0 10.0.1 10.0.2 10.0.3 10.0.4 10.0.6 10.1 10.2 10.3 10.4 127.0.0.1 172.16 216.230.138
root@ib:/service/dnscache/root/ip# cd ..
root@ib:/service/dnscache/root# cd servers/
root@ib:/service/dnscache/root/servers# ls
@ 1.10.in-addr.arpa 2.0.10.in-addr.arpa 3.10.in-addr.arpa 6.0.10.in-addr.arpa @.telgua
0.0.10.in-addr.arpa 138.230.216.in-addr.arpa 2.10.in-addr.arpa 4.0.10.in-addr.arpa @.opendns usac.edu.gt
1.0.10.in-addr.arpa 16.172.in-addr.arpa 3.0.10.in-addr.arpa 4.10.in-addr.arpa @.rootservers

en @ van los de opendns, 208.67.222.222 208.67.220.220
luego los del proveedor en este caso telgua y los rootservers que ya vienen, además hay un archivo que otros usan en /etc/dnsroots.global que contiene los servidores .

Hay que colocar un 1 en FORWARDONLY de la siguiente manera:

#echo 1 > /service/dnscache/env

con eso ya debería funcionar el cache y el interno tinydns y OpenDNS resolviendo para nuestro dominio, luego bastará hacerse una identidad en http://opendns.org para agregar nuestra ip publica del servidor que resuelve para la red o de todo el bloque público en el internet para categorizar y filtrar contenido.

Comentarios

Entradas populares