miércoles, 3 de julio de 2013

mnoGoSearch


mnoGoSearch, es uno de los tantos buscadores e indexadores mediocres que existen en el mundo del software libre. De los todos los que hay, es el que menos apesta.
Lo mas triste del caso, es que no está en los repositorios de debian, no se cual será el misterioso motivo por el que lo quitaron, para dejar hyperestraier.

Descarga el que más te acomode aquí yo prefiero usar el código fuente compilado, el mismo, cógelo aquí.

Puede usar mil y una base de datos, pero mejor compilamos la de sqlite3 nada más.
aptitude install libsqlite3-dev

Luego:

atool -x mnogosearch-3.3.12.tar.gz
cd mnogo-*
./configure --prefix=/opt/mnogosearch --with-sqlite3

Se manda a configurar y si NO te dio bateo, entonces... 

make install

La configuración... bueno, eso son otros $20. Por ejemplo, la conexión con la base de datos, es todo una ceremonia, que poco se parece a lo que dice en la documentación, ya que el mismo, no pincha como en el ejemplo.

En el fichero /opt/mnogosearch/etc/indexer.conf le pones esta linea para crear la conexión con la BD:



DBAddr sqlite3://mnogo:@/opt/mnogosearch/mnogosearch.db/?dbmode=blob&Deflate=yes&zint4=yes



También debes especificarle la conexión al buscador en el fichero:

/opt/mnogosearch/etc/search.htm

Fíjate que es diferente, el parámetro dbmode=blob tiene ahora:

LiveUpdates=yes

Esto quiere decir que la puntación de cada documento se actualiza cada vez que accedas a él.

DBAddr sqlite3://mnogo:@/opt/mnogosearch/mnogosearch.db/?dbmode=blob&LiveUpdates=yes&Deflate=yes&zint4=yes


Como todos los indexadores; tiene un crawler y un frontend web para buscar. Pero volviendo con el crawler en "indexer.conf".

A mi me gusta tener los tipos de ficheros aparte, ya que uso "varios crawler"; una configuración para la documentación de flash, otra para los correos, etc... pero lo mejor es tener los tipos de ficheros aparte y así funciona con todos. Entonces pones una linea que diga:

Include filetypes.conf

y en el fichero /opt/mnogosearch/etc/filetypes.conf vamos a poner una buena catatombe de cosas extrañas. Sería más fácil si manejas los conceptos de MIME type; y si conoces el fichero .mailcap entenderás todo facilito. Por tanto, te sugiero que veas por arribita "man mailcap" para que tengas una idea de como funciona el mime-type; también deberías mirar /etc/mailcap.

Aclaración para el que leyó man mailcap: La única diferencia es que aquí, la declaraciones de los tipos mime van por un lado, y el comando a ejecutar va por otro.

Te explico lo que vamos hacer. Aquí vamos a declarar que fichero se permiten o no, además que hacer con cada fichero, ya que mnogosearch solo entiende de texto plano o de html; por tanto, usaremos terceras aplicaciones que conviertan lo que queremos en HTML puro. Además, el fichero también controla que extensiones el crawler debe revisar y cuales debe ignorar. En adicción, la opción NoCase, hará que ignore su si extención es .EXT o .ext, a ambas las tomará por la misma, osea
obviando la maýuscula.
Allow */ *.html *.htm *.txt *.ps *.pdf NoCase
Allow *.1.gz *.2.gz *.3.gz *.4.gz *.5.gz *.6.gz *.7.gz *.8.gz NoCase
Disallow * 

Ahí dice, primero permitir los ficheros *.(véase arriba) y aunque la documentación dice que soporta expresiones regulares, la práctica demuestra lo contrario, por eso no puse *.[0-0].gz y tienes que hacer la pincha del indio poniendo número a número.

Ah! OJO, el primer Allow el el fichero "*/" osea, DIRECTORIOS, si no, el indexer NO pincha.

Ahora que tenemos declarado las extensiones de ficheros, vamos a decirle que hacer con cada uno de esos ficheros para traducirlos a HTML. Vamos a declarar el contenido mime según su extención.

# tipos de ficheros y extenciones
AddType text/plain          *.txt  *.pl *.js *.h *.c *.pm *.e .py *.sh NoCase
AddType text/html           *.html *.htm NoCase
AddType application/pdf         *.pdf
AddType application/msword     *.doc
AddType application/oasis-document *.odt
AddType application/man   *.1.gz *.2.gz *.3.gz *.4.gz *.5.gz *.6.gz *.7.gz *.8.gz NoCase

Vites? cargamos un tipo de mime y lo casamos con una extención, hemos declarado que los ficheros cuyo nombre termine .doc será un fichero del tipo application/msword. Ahora que todo es mime-content lo demás es cuesta abajo, solo es cuestión del comando adecuado.

Cada vez que se reciba un contenido que NO sea html, se buscara en la tabla de de conversión y se ejecutará un comando. En dicha tabla, cada fichero debe estar casado con un comando a ejecutar, la tabla le dice a mnogosearch que hacer ante cada mime-content. mnoGoGearch le manda el contenido como parámetro y el comando ha de devolver HTML pero OJO!!! el comando debe devolver el HTML por SALIDA ESTANDAR (stdout)

Osea:

entra fichero como parametro (el $1)
sale HTML como salida estandar

<= comando foo.doc
=> <p>este es el contenido del documento word</p>

Mientras respetes eso, puedes agregar cuantos mimes quieras con el comando que te de la gana. En linux hay mil y convertidores tufichero2html, busca "aptitude search 2html" y "aptitude search tohtml" para que veas.

Esta es la mía:

Mime application/msword            "text/plain; charset=utf-8" "catdoc -a -dutf-8 $1"
Mime application/man              text/html                  "gunzip -c $1|man2html"
Mime application/pdf                text/html                  "pdftohtml -stdout $1"
Mime application/oasis-document     text/html                  "odt2txt $1|markdown"

La sintáxis es:

Mime contenido/mime  forma/salida   "comando que ejecuta"

Veamos un ejemplo abstraído, convertir todos los ficheros del tipo chipojo verde, en html.

AddType chipojo/verde *.chv
Mime chipojo/verde text/html  "reptil2html --input-type chipojo --color green --stdout -i $1"

Si miras la ultima parte veras que se declara a los ficheros application/oasis-document son del tipo text/html, pero en realidad odt2txt lo que hace es devolver texto, NO html. Pues parae so está puesto ahí markdown. Para el que no lo conozca, markdown es uno de los llamados "lenguajes textiles"; es el más bien el rey de los lenguajes textiles, ya que por medio de texto crea fichero HTML, esos son los ficheros .md que ves en github como un html lindo.

Mira que fácil convertiresmo 3 lineas de texto plano en un lindo HTML que cumpla todos lo estándares, gracias a markdown y tidy.
lazaro@utopian:~$ echo -e "titulo\n-\nhola mundo\n_texto subrayado_"|markdown|tidy -q
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title></title>
</head>
<body>
<h2>titulo</h2>
<p>hola mundo <em>texto subrayado</em></p>
</body>
</html>


Si miras la salida de odt2txt verás que es medianamente compatible con esta sintaxis, ya que casi todos los ficheros fulanito2txt son compatibles con esto de los lenguajes textiles y casi todos mirando a markdown que es el caballo de atila.

Es más lindo convertir un odt en HTML que en txt, el txt se ve feo.

Ahora que todo está listo podemos indexar nuestros ficheros y cuanto sitio web nos parezca :D pero aún no lo hemos dichero al crawler donde y cuando tiene que ir a buscar la cosas. El cuando es relativo, ya que el organiza todos las ubicaciones como le da la gana mientras indexa.

De vuelta al fichero /opt/mnogosearch/etc/indexer.conf lo pondremos una
linea así:

# indexamos el contenido de la carpeta de documentos
Server file:///home/lazaro/Documentos/

# indexamos el blog
Server /var/www/nanoblog/

# indexamos /usr/share/doc/
Server file:///usr/share/doc/

# indexamos las paginas de man
Server file:///usr/share/man/man1/
Server file:///usr/share/man/man2/
Server file:///usr/share/man/man3/
Server file:///usr/share/man/man4/
Server file:///usr/share/man/man5/
Server file:///usr/share/man/man6/
Server file:///usr/share/man/man7/
Server file:///usr/share/man/man8/

# indexamos la memoria flash de la documentacion
Server file:///media/NEUDATRANS/

Finalmente corres el crawler y veras algo como esto:

lazaro@utopian:~$ /opt/mnogosearch/sbin/indexer
indexer[29669]: indexer from mnogosearch-3.3.12-sqlite3 started with '/opt/mnogosearch/etc/indexer.conf'
indexer[29669]: [29669]{01} URL: file:///usr/share/man/man8/grpck.8.gz
indexer[29669]: [29669]{01} URL: file:///usr/share/man/man8/update-openoffice-dicts.8.gz


Ah! mira:

Por defecto, buscara y parceará todos vínculos en los archivos HTML, además de que irá a buscarlos también, osea si tiene salida al mar, y el crawler chcoca con un documento que hace referncia a otro, ira a buscar ese otro, solamente ese otro (si no haría un mirror de internet completo) Por ejemplo si tiene un documento que diga "puede ver aquí tal cosa" dale por sentado que está en el indice de mnogosearch porque el fue a buscarlo ;)

Pero bueno ponte cómodo que esto va pa largo :D

En lo que palo va y viene, vamos a ir configurando el fronted-web que lo
tenemos tirado a mierda

Localizas la URL y veras el buscador

http://localhost/cgi-bin/search.cgi

Bueno pero aún no puedes buscar por que el indice no esta hecho, declaramos que fuera del tipo "blob" (mira la documentación para una explicación más linda) por tanto, tenemos que crear el índice de referencia. Mira que comando más raro, el parámetro es "-Eblob"

lazaro@utopian:~$ /opt/mnogosearch/sbin/indexer -Eblob
indexer[31030]: Converting to blob
indexer[31030]: Loading URL list

Pa largo igual :D así que ponte cómodo de nuevo

Lo mejor de esto, es que puedes indexar una flash con documentación y luego desconectar la flash (muy útil para mis 4 gigas bytes de disco duro) no depende de que el fichero indexado sea alcanzable, ya que puedes hacer click en el link que dice "cache copy" y ver el documento. 

Además, cuando vez un cache copy, los parámetros de tu búsqueda salen resaltado en amarillo ;) cada vez que hagas click en en documento, el cgi acutaliza la base de datos y tratarará de refrescar la cache si hiciste click en el enlace, también tomara las palabras claves y reoganizará la relevancia, todo eso sucederá si tiene el parametro LiveUpdates=yes, lo cual haría un poco (imperceptible) lenta la busqueda, si quieres precindir de estas características simplemetne quita ese parámetro en la conección de search.htm.

Ah! search.html puede conecectar a varias bases de datos con distintos  paráemtros, como es mi caso; tengo conectada una base de datos para la flash y otras para el disco duro local. Al crwaler le puedes mandar distintos fichero indexer.conf para indexar distintos sitios; pero el search.htm puedes usar TODAS las bases de datos a la vez. Con el LiveUpdate eso podría llegar a ser dolorosamente lento, sobre todo en bases de datos como SQLite.

Yo puedo decir descansadamente que uso más mnogosearch que google; porque al menos en debian, /usr/share/doc y man contienen todo lo necesario para echar a andar las aplicaciones...

martes, 2 de julio de 2013

Ctrl-S


Para los que usen aterm, xter, wterm algoTerm, etc... Sucede que cunado tocas Control y S se apra el terminal, entonces hay que meter pa control Q u otras maromas...

pon:

stty -ixon

En el .bashrc y se acabó la jodienda...

jueves, 25 de abril de 2013

6in4 en 4 patadas

Un túnel 6in4, es una de las tantas tecnologías transicionales. Dicen que es malísimo y vulnerable pro yo creo que no es nada que un buen y sencillo cortafuegos no pueda resolver.

Para que tena una idea de la teoría: Encapsulamos paquetes ipv en una 4, localizamos el destino, si es alncanzable por cuatro, el mandamos un 4 encapsulado, si no, le mandamos el paquete a un túnel cualquiera que se tengamos cerca y este se encarga de meterlo en la red ipv6 nativa. Osea, levantaremos una interfaz visual que con una ruta especial se encargará de todos estos menesteres. Primero y principioso, crear el tunel:

Pero eso lleva muchos pasos. Necesitaremos una ipv4 pública. Supongamos que nuestra ip es 10.0.0.1 A partir de esa ip, generaremos una "subnet" ipv6 que sera todita nuestra. Osea, a partir de una ipv4, tendremos todo un rango ipv6 para asignarle un ip a cada partícula de polvo en nuestra empresa.

ipv6calc --quiet --action conv6to4 10.0.0.1

y nos devuelve nuestro prefijo: 2002:a00:1::

Ese será nuestro rango ipv6. Pero qué hacer con el? Pues crear ipevesieses y asignarla a cuanta interfaz nos venga en gana; pero antes, hay que terminar el túnel y asignarle una. Con este pase mágico, lo hacemos:

ip tunnel add tun6to4 mode sit ttl 255 remote any local 10.0.0.1
ip link set tun6to4 up
ip -6 addr add 2002:a00:1::1/16 dev tun6to4

Pero por razones de seguridad, no le podremos aún el toque mágico que lo hecha a andar. Aseguremos primero el cortafuegos. Algo sencillo, permitirá todas las conexiones apara afuera pero nada para adentro.


ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -j DROP

y permitiremos que se haga forward de nuestra LAN, osea que nuestra LAN acceda a la ip6 pero que nadie acceda a nuestra LAN

ip6tables -A FORWARD --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A FORWARD -j DROP
sysctl net.ipv6.conf.all.forwarding=1

Sin complicaciones. Ahora que estamos asegurados, levantamos el túnel poniendo la guinda en la punta del pastel. En debian, este tabaco hace que se redireccione todo como expliqué arriba. Abra cadabra:

ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1

...y al carajo albañiles que se acabó la mezcla! Te pones otra ip como esa en una interfaz real que de a la lan, por ejemplo, eth0

ip -6 addr add 2002:a00:1::cafe/64 dev eth0

y configuras las máquina de tu LAN asignándoles una ipv6 de ese rango y a 2002:a00:1::cafe como su puerta de enlace. OJO, las direcciones asignadas a interfaces reales son /64

Un ejemplo decomo quedaría el fichero /etc/network/interfaces


iface eth1 inet6 static
        address 2002:a00:1:21c:c0ff:feb2:91c2
        netmask 64
        gateway 2002:a00:1::cafe



Bienvenido al sixbone! Agáchate que viene la galleta, el hacker está a 2x1 con descuento para los 6in4.




iptables con psd para evitar escaneos

Sencillo pero eficiente. El módulo psd para en seco los escaneos de puertos. Cómo lo hace? Pues ni puta idea; lo hace y lo hace MUY bien. Pero el ritual ha llevar a cabo es particularmente complejo ya que hay que crear un modulo... instalamos lo necesario; los paquetes son: iptables-dev iptables-persistent xtables-addons-common module-assistant

Con esto se compila le módulo:

 module-assistant auto-install xtables-addons-source 

 y andando se quita el frio:

iptables -A INPUT -m psd -j DROP

lunes, 25 de marzo de 2013

¿me dice la hora por favor?


Cualquiera que sincronize debidamente por NTP, tienen las misma hora EPOCH,
es decir, hasta los mismos segundos. Pero surge una interrogante:


                           ¿Que cosa es un segundo?

Hace unos años un segundo era el tiempo que tardaba el volante de un reloj en moverse de un lado a otro. Pero cuando el volante cambia su tamaño, material o peso, cambia el tiempo que tarda en moverse de un lado a otro. Si vamos a los números muy pequeños, a los 0,00N segundos, dos volantes no tendrán la misma noción de un segundo. Tengamos en cuenta que el tiempo es una magnitud cuya existencia real es aun cuestionada por los físicos más escapaos del yuma.

Mientras tanto, aparecieron las computadoras. Ya no hay un volantes pero persiste el problema del milisegundo. Los relojes deben medir el tiempo basándose en la frecuencia del microprocesador.

                      ¡¿y qué pasa cuando sube el voltaje?!

Pues la frecuencia varía. Además, pal caso es la misma mierda, porque si tomamos un volante que pese una pendejésima menos que el otro, su segundo sera entonces un pendejisegundo de diferencia con respecto al otro volante.

No parece haber un sistema decente que mantenga un flujo de tiempo constante. No hay un árbol de tiempo, ni un caudal de un rió fluye siempre igual. La marea del mar varía de solo mirarlo, también según como esté la luna, que es particularmente venática.

:-P drama descomunal. Parece no tener solución

Pero eso No ha frenado a nuestra civilización de querer demostrar la existencia del tiempo real; hasta decir que es una dimensión más del universo ¿Se ha puesto a pensar, como se comporta el flujo de tiempo en una
cuerda? Debe ser algo sublime.

Pero de vuelta a lo que nos compete...

Decíamos que el EPOCH (la hora de unix) es la cantidad de segundos transcurridos desde 1970 hasta la ACTUALIDAD. Alabao! ¿y qué es "la actualidad" entonces?! ¡ÑÓ! ¡Cuantas preguntas existenciales! Pues en epoch, la actualidad o el presente, es la cantidad de segundos que se suman desde 1970 hasta la hora
que tiene la máquina. Por ende:

Si nuestra máquina tiene UN segundo de atraso,
dará el EPOCH de manera incorrecta.

Si un satélite de GPS se equivoca UN SEGUNDO, dará mal unos metros la ubicación de un cuerpo moviéndose en la tierra. Las triangulaciones satelitales requieren una precisión de milisegundos.

Supongamos que los Yankis tiran un misil para el Capitolio...



Mientras el misil vuela en el aire, la tierra se va trasladando a 15 grados por hora. En dos minutos, la tierra se habrá desplazado 0,5 grados sobre su propio eje y el objetivo no estará en el mismo lugar, si leí bien mi regla de cálculos, estará a 2500 metros.

Para contrarestar esta impresición, el GPS ordena al misil que corrija su curso. Le indica un ángulo de inclinación que lo vuelve a poner con destino al blanco. Esto sucede en el aire, sobre todo si el objetivo está en movimiento.

Supongamos que el sistema tiene una diferencia de 0,4 segundos y que dada la altura, el retardo ha provocado que el satélite ordene al misil, una inclinación de 7,3 miserables grados de más.

Ahora el misil que está a 32 kM de altura, recibió una inclinación que excede 7,3 grados al desplazamiento axial de la tierra y por tanto, su objetivo ya NO será el capitolio.

Por 7,3 grados nos quedamos sin estadio de pelota! 



Pero NO solo en los celajes, aquí en la baja atmósfera también suceden cagástrofes locales:

Una aplicación que trabaje con Round Robin, por ejemplo el MRTG; si le entran datos con dos EPOCH iguales, crea inconsistencias en la base de datos. Un evento que debe loguearse cada un segundo y si estos segundos están mal, el log estará alterado. Quizás a usted no le importe mucho ese asunto, pero recuerde que los países desarrollados son desarrollados por que su tecnología es de alta precisión ;) Por eso los países subdesarrollados NO fabrican cohetes, ni aún teniendo los recursos.

Entonces, definitivamente tiene que existir una fuente infalible de tiempo. Tienen que haberla inventado o no hubiesen misiles teledirigidos de alcance global.

Gracias a ntp, tenemos una fuente infalible de tiempo.

Bueno, en nuestro mundo el tiempo parece no existir. Pero en el micromundo hay algo que es bien constante. Un tipo muy escapao de la física, descubrió que si podía tomarle el pulso a un átomo, obtendría un flujo de tiempo BIEN preciso y constante. El átomo tiene un electrón que orbita alrededor del núcleo con una constancia y precisión casi infalible. Con eso, se inventó un aparatico que le dicen:

   "reloj atómico" (dicho con una gran sonrisa y los ojos cerrados)

y diiiicen, que el más preciso del mundo. Su imprecisión es de un milisegundo cada no se cuantos miles de años. Tiempo más que suficiente para morirte sin ver como tu reloj se atrasa un milisegundo :D

Pues ya, solucionado el problema, inventaron el stratum 0. Pero en la tienda de Carlos 3ero NO venden relojes atómicos :(

Los stratum 0 transmiten por honda corta la hora y los radios relojes la reciben. Calculan la diferencia usando la frecuencia y retardo de la señal y andando; se inventó el stratum 1, es decir: Aquellos relojes que reciben la hora del infalible. Bueno pero ese tampoco lo tengo :-/ Pero aún queda la opción de conectar una computadora al GPS o al raioreloj...

Bueno, resuelto el problema, que los stratum dos manden la hora por la red y todos felices.

SI TA BIEN :D créete eso

La cosa no es tan simple como mandar un string con la hora. Si NTP fuera tan simple como eso, chocaría de frente con la metatranca más grande que ha dado la física: "la relatividad de Einstein"

-son las 3 con 2 minutos y 0.0001 milisegundos, TRABA, aquí te lo mando

El paquete tardará 65 milisegundos en recorrer el cable (una fibra óptica muy de pinga). Al llegar, ya tendrá 0.6499 de atraso y ya vimos el desastre cuando hay 0,4 segundos de atraso así que solo será cuestión de tiempo que el reloj se atrase gradualmente.

COÑO! El tiempo es relativo!

Cuando miras un reloj, ves que son las 12 y media con 18 segundos. Pero la luz viaja a no se cuantos kilómetros por hora. Valla, como que 18 segundos son más que preciso pero en realidad la imagen llegó a tus ojos con unos 0,000036 segundos de retardo :D

Para resolver este problema, el protocolo NTP, compara el tiempo que tardo en viajar el paquete por la red. El paquete dice:

-son las 3 y 20, sali a las 3 y 24

Cuando llegue, ntp mira la hora y mira lo que tardó el paquete en llegar.

-segun el reloj de él, este paquete tardo 12 minutos en llegar y tenia las
  3 y 20 por tanto 4 y 12 son 16. En este momento son las 3 y 36

Balla no es así exactamente. Es mucho más complejo. El paquete de NTP es una matatranca tremenda que se se basa en una pila de cosas.


Las computadoras conectadas, al radio, o al segundo infalible (el GPS), son los llamados stratum 2, esos tienen servidor NTP y por lo general son de acceso público.


Bueno pero todo eso está muy bonito en teoría. Cuando hay que mandar un paquete por modem de 28K por un ADSL; empieza la realidad del cubano a derretir nuestro sueño. Ahí es cuando entra:

¡Chrony al rescate! Defensor de los pueblos pobres, oprimidos por el subdesarrollo o bloqueados comercialmente :D

NTP puede ser configurado para evitar que un drift muy largo descarte una fuente como fideligna. Chrony, por naturaleza, hace mil y una maroma para acercarse a la realidad. Además. Chrony, hace algo único

   "adivina nuestro hardware"

Chrony se basa en los estratos y almacena en un fichero el drift con que periódicamente falla nuestro micro. De esta forma aplica un "threshold" basado en la conducta usual de nuestro microprocesador. Por ejemplo: Si el micro se adelanta 0.005 ms cada un segundo. Chrony estará atrazándolo 0.005 ms cada un segundo para mantener la realidad acoplada.  Esto se hace de esta forma, porque cuando cambias la hora, algunos
servicios se vuelven locos. Prueba a usar "date -s" y veras como dovecot se para en seco :D porque un cambio de hora en el server es una violación de seguridad.

Si un marcapasos pulsa dos veces por segundo y tú le cambias la hora de sopetón:

 Biip biip bip-bip-bip biiiiiiiiiiiiiiiiiiiiiip ¡¡ENFERMERAAA!!

Para hacer esto de manera "imperceptible", están los llamados "threshold". Aplicar un "tresjol" no es más que: "ir restando milisegundo por milisegundo, hasta alcanzar la hora correcta"

Dime... ¿no es fascinante? Todavía hay mediocres por ahí que usan "date -s" La delgada linea que separa la ignorancia de la estupidez. Algo típico: -mi reloj (de mano) está puesto por radioreloj, tu celular está mal

¡COJONE! ¡que somos informáticos, somos científicos! Técnicos operadores de sistemas unix. NO somos copiadores de códigos ni seguidores de tutoriales baratos. Podemos tener un sistema cuya precisión de tiempo sea digna de tirar un misil ICBM y no nos cuesta nada.

Con todos esto en mi cabeza, cada vez que alguien me dice que mi nokia sincronizado por cubacell podría estar mal, lo que me dan ganas de matarlo, no sería homicidio, es que la ignorancia mata a los pueblos. Ya que tenemos un chrony tan preciso:

echo 'stratum 2' >> /etc/chrony/chrony.conf
echo 'allow 0/0' >> /etc/chrony/chrony.conf

De esta forma podremos responder con mucha precisión cuando nos pregunten:

¿qué hora es?