Vamos a intentar explicar de una forma amena como se maneja este sistema.
Una razon importante para tener un sistema de reloj que me permita sincronizar el tiempo entre todos nuestros equipos para poder tener bien controlado cuando sucesido cada evento cuando se generan los logs. Otro ejemplo podria ser cuando varios equipos usan un recurso compartido con NFS por ejemplo.
Para esto se usa —> Network Time Protocol (NTP) http://www.ntp.org.
Los servidores de NTP proporcionan servicios de sincronizacion al cliente que se conecte a ellos, y ellos mismos se sincronizan gracias a servidores superiores de tiempo.
Las capas en este modelo se llaman strata, con el nivel superior , stratum 0, consiste en un hardware de hora dedicado, como pueden ser relojes atomicos o receptores por satelite. Lo servidores conectados a estas fuentes de hora stratum 0 se llaman servidores stratum 1. Los servidores que se sincronizan por los servidores stratum 1 son lo servidores stratum 2, y asi con el resto. [2]
Los servidores NTP se pueden utilizar de dos formas. Una es ejecutando una utilidad cliente llamada ntpdate, que sincroniza el reloj del sistema una vez. La otra forma es ejecutar un servicio NTP que sincroniza automaticamente el reloj del sistema en cuanto su hora no sea la correcta. Hay una gran cantidad de sistemas que utilizan ambos metodos. Si el reloj del sistema y el reloj atomico difieren mucho, puede llevarle al sistema un tiempo el sincronizarse con un servidor de tiempo superior. Para solventar esto, se llama a la utilidad ntpdate y se sincroniza el reloj antes de iniciar el servicio NTP.
Ej:
[root@localhost etc]# ntpdate pool.ntp.org
2 Dec 07:47:09 ntpdate[5399]: step time server 200.11.116.1 offset 1.817247 sec
[root@localhost etc]#
Como ven aca teniamos defaso el reloj casi dos segundos.
Aca esta utilidad se conecto al servidor pool.ntp.org y ajusto nuestra hora.
Podriamos poner una entrar en el crontab para que haga esto cada dos horas.
0 * /2 * * * root /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1
Parametros del ntpdate:
-b Con esta opción, la hora del sistema se establece en lugar de ser poco a poco ajustado, no importa cuán lejos de la hora local es.
-d Modo debug donde vemos mucha info pero la hora no se ajusta
-p n el numero de muestra que va a capturar para setear la hora, (default 4)
-q con esta opcion hace una consulta a un servidor
[root@oc4037774485 sysconfig]# ntpdate -q ar.pool.ntp.org
server 200.3.168.192, stratum 2, offset -0.039172, delay 0.04465
server 200.11.116.1, stratum 2, offset -0.040442, delay 0.04062
server 200.59.8.234, stratum 3, offset -0.037901, delay 0.03978
12 Dec 23:02:40 ntpdate[6000]: adjust time server 200.11.116.1 offset -0.040442 sec
[root@oc4037774485 sysconfig]#
-s con esta opcion la salida es el archivo syslog y no la salida estandar.
-t n se setea el timeout de respuesta
-u se puede especificar que puerto udp va utilizar
-v verbose mode
-B con esta opcion se toma mas tiempo para sincronizar nuestro reloj.
No obstante, necesitara instalar y mantener una entrada en crontab en cada uno de sus hosts, y ademas, dependiendo de la calidad del hardware, el reloj del sistema puede desincronizarse en ese intervalo de dos horas. Puede asegurarse de que el reloj del sistema este sincronizado cada vez que piense que puede no estarlo, instalando y ejecutnado un servidor NTP en su host. Esto mantendra su host sincronizado y ademas le permitira utilizarlo para sincronizar otros hosts de su red.
Vamos a ver un ejemplo de archivo de configuracion:
/etc/ntp.conf ( escucha en el puerto 123 udp)
Tambien podemos ver como se inicia el demonio ntpd
en /etc/sysconfig o en /etc/default [root@oc4037774485 sysconfig]# cat ntpd # Command line options for ntpd OPTIONS="-g" [root@oc4037774485 sysconfig]#
Vamos a dividirlo en dos secciones:
La primera es la configuracion de la fuente real de la hora:
# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()’ing
# it to the file.
driftfile /var/lib/ntp/drift
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
Explicacion:
La directiva driftfile proporciona al servidor un sitio donde guardar la informacion sobre la idionsincracia del reloj del sistma loca. Cuando pase el tiempo, utilizara esta informacion para calcular la hora con mas precision entr elos intervalos de sincronizacion, dado que el demonio sabe como mantener la hora local correcta.
Los informes estadisticos corresponden a la directiva statistics y se activaran cada uno como dice el archivo.
loopstats –> informacion de actualizaciones por el servidor local
peerstats –> registra informacion sobre todos los peers (tanto servidores superiores como clientes que utilizan nuestra reloj para sincronizar)
clockstats –> escibre informacion estadistica del reloj local en el archivo del registro.
Directiva filegen le indica al demonio en que arhivo queremos que se escriba esta informacion estadistica y con que frecuencia se necesita cambiar el archivo (type day)
Por ultimo la opcion server le indica a ntpd que servidor superior debe utilizar para la sincronizacion.
Ahora en esta otra parte define como los host pueden acceder a nuestro servidor ntp.
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
La palabra clave restrict se utiliza para definir las clases de acceso. Tambien se definen los mismos niveles de acceso para los clientes ipv4 y ipv6 utilizando parametros 4 y -6
La palabra calve default es un comodin que se corresponde con todas las direcciones posibles. Kod se utiliza para ralentizar los clientes que excedan la velocidad limite definad, enviandoles un paquete de respuesta especial. No tenemos definidos esos limites, por lo que esto no se utiliza aca. notrap rechaza cualquier paquete de control que se envie, mientras que nomodify anula los intentos de modificar la hora del servidor. nopeer asegura que el servidor no empezara a utilizar un cliente conectado como servidor ntp, y por ultimo noquery evita que el servidor sea consultado por estadisitas peer y otras.
El segundo ejemplo de conjunto de directivas restric garantiza que las conexiones desde la maquina local puedan configurarse e interrogar al servidor NTP. No obstante, ninguna de estas evita que un cliente se sincronice con nuestro servidor NTP.[3]
Parametros que podemos usar el comando ntpd ntpd[1]
-c file ( le indicamos un archivo de configuracion)
-g Esta opción le permitirá ntpd iniciar en un sistema con un reloj que está mas afuera por que el umbral de pánico (1000 por defecto , segundos)
-n Normalmente ntpd se ejecuta como un demonio, pero con esta opcion deshabilita ese comportamiento
-q Se le comunica a ntpd que se finalize luego de sincronizar.
-N Arranca ntpd con el nivel de prioridad mas alto posible.
Opciones de parametros para ntpq:
-c comando
-i modo interactivo
-n no resuelve nombres
-p consulta de peers o usar -c peers
Ejemplo:
[root@oc4037774485 sysconfig]# ntpq -c peers -n ar.pool.ntp.org
remote refid st t when poll reach delay offset jitter
==============================================================================
+216.244.192.3 193.190.230.65 2 u 994 1024 377 7.538 -17.797 5.992
200.220.152.62 200.189.40.8 3 u 1945 1024 376 165.686 -134.38 8.285
+200.137.65.85 200.137.64.20 3 u 917 1024 377 269.163 -15.150 19.308
*200.189.40.8 200.20.186.76 2 u 173 1024 377 50.197 -18.401 19.196
[root@oc4037774485 sysconfig]#
Para hacer una consulta:
[root@localhost log]# ntpq -4 -p localhost
remote refid st t when poll reach delay offset jitter
==============================================================================
core01.ses.net. 146.164.48.5 2 u 6 64 1 553.248 196.365 0.001
core-vgg-1-lo0. 192.43.244.18 2 u 7 64 1 213.474 29.357 0.001
LOCAL(0) .LOCL. 10 l 6 64 1 0.000 0.000 0.001
[root@localhost log]#
Ahi me muestra todos los peers que estan conectados con ipv4
Fijense, tengo localmente este servidor NTP en mi red
[root@localhost log]# ntpq -4 -p localhost
remote refid st t when poll reach delay offset jitter
==============================================================================
core-vgg-1-lo0. 192.43.244.18 2 u 12 64 1 259.571 58.708 0.001
host800234.cote 200.3.168.192 3 u 12 64 1 498.984 173.922 0.001
host151.186-109 .INIT. 16 u – 64 0 0.000 0.000 0.000
LOCAL(0) .LOCL. 10 l 10 64 1 0.000 0.000 0.001
[root@localhost log]#
Ntptrace:
Podemos ratrear los servidores de ntp.
$ /usr/sbin/ntptrace ntp0.cornell.edu
cudns.cit.cornell.edu: stratum 2, offset -0.004214, synch distance 0.03455
dtc-truetime.ntp.aol.com: stratum 1, offset -0.005957, synch distance
0.00000, refid ‘ACTS’
$ /usr/sbin/ntptrace ntp-2.mcs.anl.gov
mcs.anl.gov: stratum 2, offset -0.004515, synch distance 0.06354
clepsydra.dec.com: stratum 1, offset 0.002045, \
synch distance 0.00107, refid ‘GPS
Comando hwclock
Hwclock es una herramienta que nos permite:
* Acceder al Reloj del Hardware
* Mostrar la hora actual
* Poner el Reloj del Hardware a una hora especificada
* Poner el Reloj del Hardware a la Hora del Sistema
* Poner el Tiempo del Sistema desde el Reloj del Hardware.
también puede ejecutar hwclock periódicamente para insertar o quitar tiempo del Reloj del Hardware para compensar desviaciones sistemáticas en las que el reloj gana o pierde tiempo consistentemente a una cierta velocidad si se deja solo.
Sintaxis:
[BASH]# hwclock [opciones]
hwclock –-show
hwclock –systohc
hwclock –-hctosys
hwclock –adjust
hwclock –version
Opciones Descripcion
–show Lee el reloj del hardware y muestra la hora en la salida estándar.
–set Pone el reloj del hardware a la hora dada por la opción –date
–hctosys Pone el tiempo del sistema a partir del reloj del hardware. Ésta es una buena opción para poner en uno de los guiones de arranque del sistema.
–systohc Pone el reloj del hardware a la hora del sistema actual.
–adjust Añade o sustrae tiempo del reloj del hardware para tener en cuenta el desvío sistemático desde la última vez que el reloj se puso o se ajustó. Vea la discusión al respecto más adelante.
–utc Indica que el reloj del hardware se mantiene en el tiempo universal coordinado (UTC). Es cosa suya si mantiene su reloj en hora local o UTC, pero nada en el reloj le dice qué es lo que ha escogido. Así que con esta opción es como le da esa información a hwclock.
Ejemplos:
Preguntar por la hora del reloj del sistema
[root@oc4037774485 etc]# hwclock –show
Sun 12 Dec 2010 10:17:57 PM ART -0.547218 seconds
[root@oc4037774485 etc]#
Setear el reloj de hardware con el del sistema
[root@oc4037774485 etc]# hwclock –systohc
Todos los valores del reloj de hardware son seteados en numeros de segundos desde el 1 de Enero de 1970.
Este numero es convertido en un formato que lo podamos interpretar. El tiempo es representado o en UTC o en nuestro hora local.
UTC es un estandar universal de tiempo y que siempre es el mismo en todas las zonas.
El tiempo local que usamos es simplemente una combinacion de UTC en el cual posee un offset negativo o positivo dependiendo de la zona que configuremos.
Un ejemplo es el siguiente en donde en argentina seria UTC+3 (esta adelantado 3 horas)
Como administrador de sistemas podemos setear nuestra hora con UTC o con nuestro propia hora local.Podriamos tener el reloj en UTC y luego setear en nuestras aplicaciones el tiempo local que gustemos.
Aca un ejemplo:
[root@oc4037774485 etc]# hwclock –show –localtime
Sun 12 Dec 2010 10:20:31 PM ART -0.875240 seconds
[root@oc4037774485 etc]# hwclock –show –utc
Sun 12 Dec 2010 07:20:40 PM ART -0.375265 seconds
[root@oc4037774485 etc]#
Si luego lo quisiera pasar a utc ..
[root@oc4037774485 etc]# hwclock –adjust –utc
[root@oc4037774485 etc]# hwclock –show
Sun 12 Dec 2010 07:28:31 PM ART -0.969133 seconds
[root@oc4037774485 etc]#
Comando date
Este programa se utiliza para mostrar o establecer la hora del sistema
Sintaxis:
[BASH]# date [opciones] [+FORMATO]
| Opciones | Descripcion | |
|---|---|---|
| Una literal % | ||
| %a | Localización del nombre abreviado del día de la semana (Sun,Sat) | |
| %A | Localización del nombre completo del día de la semana (Sunday,Saturday) | |
| %b | Localización del nombre abreviado del nombre del mes | |
| %c | Localizacion de fecha y hora (Sat Nov 04 12:02:33 EST 1989) | |
| %C | Siglo (año dividido por 100 y truncado a un entero) 00-99 | |
| %d | Dia del mes (01..31) | |
| %D | Fecha (mm/dd/yy) | |
| %e | Dia del mes (1..31,), a diferencia de %d este suprime el espacio en blanco | |
| %F | Lo mismo que %Y-%m-%d | |
| %h | Lo mismo que %b | |
| %H | Hora (00..23) | |
| %I | Hora (01..12) | |
| %j | Dia del año (001..366) | |
| %k | Hora (0..23) | |
| %l | Hola (1..12) | |
| %m | Mes (01..12) | |
| %M | Minutos (00..59) | |
| %n | Una nueva linea | |
| %N | Nanosegundos (000000000..999999999) | |
| %p | Indicacion de PM o AM en mayusculas | |
| %P | Indicacion de pm o am en minusculas | |
| %r | Tiempo en 12 horas ( hh:mm:ss AP | M) |
| %R | Tiempo en 24 horas ( hh:mm ) | |
| %s | Segundos desde `00:00:00 1970-01-01 UTC’ (una extesion de GNU ) | |
| %S | Segundos (00..60); | |
| %t | Un tabulador horizontal | |
| %T | Tiempo , 24 horas (hh:mm:ss) | |
| %u | Dia de la semana (1..7) el dia 1 representa el lunes | |
| %U | Número de semana del año con el domingo como primer día de la semana (00..53) | |
| %V | Número de semana del año con el lunes como primer día de la semana (00..53) | |
| %w | Dia de la samana (0..6); 0 representa el Domingo | |
| %W | Numero de la semana del año con Lunes como primer dia de la semana (00..53) | |
| %x | Representacion de la fecha local (mm/dd/yy) | |
| %X | Representacion de la hora local (%H:%M:%S) | |
| %y | Los ultimos dos digitos del año (00..99) | |
| %Y | Año (1970..) |
Ejemplos:[6]
[root@oc4037774485 sysconfig]# echo `date +%Y%m%d`
20101212
[root@oc4037774485 sysconfig]#
[root@oc4037774485 sysconfig]# echo `date +%a”-”%d”-”"Siglo:”%C`
Sun-12-Siglo:20
[root@oc4037774485 sysconfig]#
Bue lo demas es probarlos
Fuente:
[1]http://www.eecis.udel.edu/~mills/ntp/html/ntpd.html
[2] www.akadia.com/services/ntp_synchronize.html
[3] www.cis.udel.edu/~mills/ntp/html/
[4] http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento/-/wiki/Base%20de%20Conocimiento/Certificaci%C3%B3n%20LPI%20102#section-Certificaci_C3_B3n+LPI+102-AjustesDeTiempoYDeLasZonasHorarias
[6]http://enavas.blogspot.com/2008/03/el-shell-de-linux-comando-date.html





























