Diferencia entre revisiones de «Dns sd en ubuntu y dnsjava»

De ChuWiki
Saltar a: navegación, buscar
(Página creada con «__TOC__ Me he estado entreteniendo en probar la librería [http://www.dnsjava.org/ dnsjava] para probar a consultar y añadir servicios en un servidor dns-sd. Así que me...»)
(Sin diferencias)

Revisión del 21:33 25 may 2019

Me he estado entreteniendo en probar la librería dnsjava para probar a consultar y añadir servicios en un servidor dns-sd. Así que me ha tocado instalar y configurar uno de estos en linux (ubuntu) y luego jugar con java.

¿Qué es DNS SD?

Un servidor DNS es al que se le pregunta por el nombre de algún servidor (por ejemplo, chuidiang.com) y te devuelve la IP y más información adicional sobre el servidor. Si la añadimos la parte SD (Service Discovery), también se le puede preguntar por servicios que ofrece un servidor. Por ejemplo, podemos preguntar por "_http._tcp.chuidiang.com" para obtener una lista de "servicios" http (es decir, la web) de chuidiang.com y saber el servidor, puerto e incluso paht de la URL con la que conectarnos.

Habitualmente todos nuestros PC consulta a algún servidor DNS de internet, de forma que en nuestro navegador ponemos http://chuwiki.chuidiang.org y basta con eso para el que navegador sepa a qué servidor físico conectarse y pedir la web http.

Instalación de DNS SD para test

Para las pruebas de dnsjava, además de consultar cosas, queremos añadir servicios. Obviamente, no tenemos permisos para añadir entradas en un servidor DNS de internet, así que nos montamos uno local para poder jugar con él. En este caso, con ubuntu 18.04.

El servidor DNS se llama bind9, así que lo instalamos con sudo apt install bind9.

La configuración de este servicio se situa más o menos automáticamente en /etc/bind

Para consulta todo correcto de momento, pero hay una cosa que tocar y una pega para añadir servicios.

La cosa a tocar es el fichero /etc/bind/named.conf.default-zones. Las zonas (dominios controlados por esta instalación) no son modificables. En este fichero están los de internet y además esta localhost. Podemos aprovechar este para hacerlo editable. Para ello basta añadir la línea allow-update

zone "localhost" {
	type master;
	file "/etc/bind/db.local";
        allow-update { any; };
};

Y la pega, que en realidad es doble pega :

  • los ficheros en /etc/bind y el directorio mismo deben ser del usuario y grupo bind, por lo que en ese directorio debemos ejecutar sudo chown bind:bind . para el directorio y sudo chown bind:bind * para todos los ficheros.
  • La segunda pega, en mi caso, es que hay un servicio llamado apparmor que vigila dónde puede o no escribir los demás servicios, incluido bind. Y fíjate qué cosas, no le deja escribir en /etc/bind. Así que editamos el fichero de configuración correspondiente sudo gvim /etc/apparmor.d/usr.sbin.named y buscamos la línea
/etc/bind/** r,

para cmabiarla por

/etc/bind/** rw,

Por supuesto, hay que reiniciar ambos servicios después de estos cambios

sudo /etc/init.d/apparmor restart
sudo /etc/init.d/bind9 restart

Con esto ya no deberíamos tener problemas, solo empezar a jugar con java

El código java