[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Sincronizacion de fecha y hora



Andres Seco Hernandez wrote:
> En netstd vienen tanto rdate como netdate, y ambos usan la RFC868 para
> sincronizar la hora. ¿Hacen los dos lo mismo? Yo uso rdate y no me da
> problemas. La página man de rdate es mucho más escueta que la de netdate,
> pero ¿en qué se diferencian?

Pues no lo sé, pero he estado investigando, y he llegado a una serie de
conclusiones:

1a) Con netdate siempre acabas cambiando la fecha y hora de tu sistema.
1b) rdate tiene la opción -p con la que no cambias nada.

2a) netdate tiene cierta inteligencia para averiguar cuál es el mejor de
los hosts a los que accede para preguntar la hora, y cuando lo ha
averiguado sólo usa la hora de ese host.
2b) rdate sólo te deja preguntarle la hora a un host.

3a) El protocolo RFC868 sólo devuelve 32 bits (tiempo en segundos), pero
netdate puede aceptar otros 32 bits extra (microsegundos con exactitud
al nivel de milisegundo).
3b) La página man de rdate no dice nada de esto, por lo que es posible
que se ajuste al protocolo estrictamente.

4a) netdate te pone la hora que encuentra tal cual.
4b) rdate, con su opción -a, usa la llamada al sistema adjtimex(2) para
ir cambiando gradualmente la hora, lo cual es importante por el tema de
los crons.

5) Tanto netdate como rdate pueden obtener la hora de cualquier host que
la proporcione, lo cual no es garantía de que ese host tenga la hora
bien.

6) La hora parece ser que se obtiene a través del puerto 37 (time), por
lo que en general podrás preguntarle la hora a cualquier sistema Unix y
Linux (incluso yo se la podría preguntar a tu máquina y ésta la daría)
que no tengan expresamente deshabilitado este puerto. Por eso, como la
hora se la puedes preguntar a casi cualquier sistema Unix/Linux, no
debes fiarte mucho de lo que te respondan.

Yo casi te aconsejaría que utilizaras el protocolo NTP para obtener la
fecha y hora. El NTP sólo lo tienen habilitado (normalmente) aquellos
hosts que tienen horas fiables (que obtienen a su vez de otros hosts
todavía más fiables). Lo puedes encontrar en el paquete xntp3, y la
documentación (el paquete xntp3 viene sin páginas man, lo cual es una
mierda) en el paquete xntp3-doc (ambos en la sección net de main). En el
paquete, entre otros, tienes un demonio xntpd para la administración
automática de la hora del sistema, y el cliente ntpdate.

El cliente ntpdate tiene la posibilidad de preguntarle la hora a varios
hosts y selecciona al mejor host (como netdate), puede no poner la hora
y sólo mostrarla en pantalla (como rdate), y puede usar la llamada al
sistema settimeofday(2) para poner la hora a lo bestia (como netdate y
rdate) o la adjtimex(2) (aunque en la documentación la llaman adjtime()
) para cambiar la hora gradualmente (como rdate).

Además del cliente, tienes el demonio xntpd, que funciona como un
ntpdate automático continuo pero mejor: no usa crons (como usaría la
implementación a mano de ntpdate's continuos automático)s, maximiza la
exactitud y fiabilidad, y minimiza el uso de recursos. En el paquete
vienen más programas, aunque sólo encuentro interesante el ntptrace, con
el que puedes ver qué camino ha seguido la información NTP desde que
salió del servidor primario:
# ntptrace gong
gong.ci.uv.es: stratum 3, offset -0.055972, synch distance 0.23674
L0.EB-Valencia1.red.rediris.es: stratum 2, offset -0.024855, synch
distance 0.12744
hora.rediris.es: stratum 1, offset 0.015771, synch distance 0.00011,
refid 'GPS'

-- 
Conrado Badenas <Conrado.Badenas@uv.es>
PhD student                  | Assistant Lecturer
Department of Thermodynamics | Department of Optics
---------------------------------------------------
Faculty of Physics. University of Valencia
c/. Dr. Moliner, 50
46100 Burjassot (Valencia) - SPAIN


Reply to: