Configuración de un servidor NTP en Windows para sincronización con clientes Linux

Introducción

Este artículo explica cómo configurar Windows como un servidor NTP para que equipos Linux sincronicen su reloj mediante el protocolo NTP. Se requiere el puerto UDP 123 habilitado en la red.

Configuración en Windows (PowerShell con privilegios de administrador)

Habilitar el servicio NTP mediante el registro

Para activar la función de servidor NTP, establecer el sistema como fuente de tiempo confiable y configurar el modo de sincronización.

# Activar el proveedor NTP en el registro
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer" -Name "Enabled" -Value 1 -Type DWord -Force

# Definir indicadores de anuncio para fuentes confiables (valor 5 combina opciones)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Config" -Name "AnnounceFlags" -Value 5 -Type DWord -Force

# Especificar el tipo de sincronización como NTP
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" -Name "Type" -Value "NTP" -Type String -Force

Reiniciar el servicio de tiempo y configurar el inicio automático

# Detener y reiniciar el servicio w32time para aplicar cambios
Stop-Service w32time -Force
Start-Service w32time

# Establecer el servicio para iniciar automáticamente con el sistema
Set-Service w32time -StartupType Automatic

Crear una regla de firewall para permitir el tráfico UDP 123

# Eliminar reglas existentes con nombre similar para evitar conflictos
Get-NetFirewallRule -DisplayName "Servidor NTP" | Remove-NetFirewallRule -ErrorAction SilentlyContinue

# Crear una nueva regla de entrada que permita conexiones UDP en el puerto 123
New-NetFirewallRule -DisplayName "Servidor NTP" -Direction Inbound -Protocol UDP -LocalPort 123 -Action Allow -Profile Any

Verificar la configuración del servidor NTP

# Consultar la configuración actual del servicio de tiempo
w32tm /query /configuration

# Comprobar que el puerto 123 está en escucha
netstat -an | findstr "UDP" | findstr ":123"

Configuración en Linux (con acceso root)

Detener servicios de tiempo que puedan bloquear el puerto NTP

# Desactivar servicios de tiempo del sistema que usan el puerto 123
systemctl stop ntpd chronyd systemd-timesyncd
systemctl disable ntpd chronyd systemd-timesyncd

Instalar la herramienta ntpdate si no está disponible

Para distribuciones basadas en Debian/Ubuntu:

apt-get update && apt-get install -y ntpdate

Para distribuciones basadas en RHEL/CentOS:

yum install -y ntpdate

Sincronizar la hora con el servidor NTP de Windows

Reemplaza la dirección IP con la del servidor Windows.

# Ejemplo de sincronización con una IP específica
ntpdate 192.168.1.100

Persistir la hora en el hardware del sistema

hwclock --systohc

Configurar una tarea cron para sincronización periódica (opcional)

Para sincronizar cada 15 minutos, edita las tareas cron del usuario.

# Abrir el editor de crontab
crontab -e

Añade la siguiente línea al archivo:

*/15 * * * * /usr/sbin/ntpdate 192.168.1.100 > /dev/null 2>&1

Para listar las tareas programadas:

crontab -l

Solución de errores comunes

Error en Linux: el socket NTP está en uso

Esto ocurre si un servicio de tiempo del sistema sigue activo. Ejecuta los pasos de desactivación mencionados anteriormente.

Error en Linux: no se encontró un servidor adecuado para la sincronización

Causas posibles y soluciones:

  • Dirección IP del servidor incorrecta: verifica con ipconfig en Windows.
  • Firewall bloqueando el puerto UDP 123: asegúrate de que la regla está creada en Windows.
  • Bloqueo de red entre subredes: prueba desactivando temporalmente el firewall de Windows con Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled False para diagnóstico.
  • Alternativa usando SSH para sincronización sin NTP: ejecuta ssh 192.168.1.100 "date +%Y%m%d%H%M%S" | xargs date -s desde Linux.

Indicadores de éxito

En Windows, ejecuta netstat -an | findstr ":123" y confirma la presencia de entradas UDP en escucha. En Linux, al ejecutar ntpdate, la salida debe mostrar un ajuste de tiempo exitoso, similar a "adjust time server 192.168.1.100 offset -0.012345 sec".

Etiquetas: Windows NTP linux PowerShell Registro

Publicado el 6-19 17:51