Windows搭建时间同步服务器NTP服务器 为时钟源 给内网主机同步时钟
我放在公司的内网电脑的时间老是慢,由于不能连接互联网,需要在能上网的电脑上搭建一个时间同步服务器用于给内网电脑同步时间用。
目标:能上互联网的电脑做成NTP时间服务器,内网服务器通过ntp时间服务器实现时间同步。
如下图:
能上互联网的电脑操作:
1. 确认是否可以和互联网时间同步。
2. 打开服务,打开Windows Time服务(确认是启动状态)
3. 注册表创建NTP时间同步服务
用regedit打开注册表编辑页面
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
列表默认不包含LocalNTP,按下图所示创建一个名为LocalNTP的键,类型选为DWORD(32-bit)Value
双击新建的LocalNTP,将Base(基数)选为Hex(十进制),Value data(数据数值)改为1
4.注册表启用时间服务
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
双击Enable打开编辑窗口,Base(基数)修改为Hexadecimal(十六进制),Value data修改为1(原来是0)
5. 注册表配置Announce Flags
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
Announce Flags,Base(基数)修改为Hexadecimal(十六进制),Value data修改为5(原来是a)
7.关闭防火墙或允许端口放行
我是关闭防火墙的,比较省劲。
开始-运行-输入control确定
8.测试服务器是否搭建成功
在CMD里输入以下命令:
w32tm /stripchart /computer:127.0.0.1
内网电脑操作:
1. 时间同步配置
开始-运行-输入control确定,打开控制面板
2. 优化客户端时间同步频率(可选设置,不做也行)
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W32Time\TimeProviders\NtpClient
双击SpecialPollInterval,设置基数为十进制,数值单位为秒,3600s为一个小时,默认86400,改成3600。
4. 有空可以拨乱时间,等待一小时,验证是否同步频率为一小时。
参考:https://zhuanlan.zhihu.com/p/443286566
为提高部署效率,用bat批处理脚本解决问题
https://gitee.com/chen-ahai/windows-bat.git
ntp-server.bat
@echo off rem 获取管理员权限 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd %~dp0 if not exist "ntp-server.bat" ( ren "%~nx0" "ntp-server.bat" call "ntp-server.bat" ) rem 创建NTP服务 (创建一个名为LocalNTP的键,类型选为DWORD(32-bit)Value,将Base(基数)选为Hex(十进制),Value data(数据数值)改为1) reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" /v "LocalNTP" /t REG_DWORD /d 1 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" /v "Type" /t REG_SZ /d "NTP" /f rem 启用时间服务(修改Enabled,Base(基数)修改为Hexadecimal(十六进制),Value data修改为1(原来是0)) reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer" /v "Enabled" /t REG_DWORD /d 1 /f rem 修改AnnounceFlags,Base(基数)修改为Hexadecimal(十六进制),Value data修改为5(原来是a) reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v "AnnounceFlags" /t REG_DWORD /d 5 /f @echo off SC CONFIG w32time START= auto @echo off rem 添加防火墙端口:UDP 123 netsh advfirewall firewall add rule name="NTP服务端口" dir=in action=allow localport=123 protocol=udp net stop w32time net start w32time pause
ntp-client.bat
@echo off rem 获取管理员权限 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd %~dp0 if not exist "ntp-client.bat" ( ren "%~nx0" "ntp-client.bat" call "ntp-client.bat" ) rem 设置NTP服务器地址 set "ntpserv=192.168.11.58" rem set "ntpserv=time.windows.com" echo.修改ntp为%ntpserv% rem reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers" /ve /d "6" /f reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers" /v "6" /d "%ntpserv%" /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" /v "NtpServer" /d "%ntpserv%,0x9" /f rem 修改同步间隔时间:720秒同步一次 reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W32Time\TimeProviders\NtpClient" /v "SpecialPollInterval" /t REG_DWORD /d 720 /f rem 重启服务 net stop w32time net start w32time rem 同步时间 w32tm /resync echo.现在时间:%date% %time% pause
参考:https://blog.csdn.net/liupin67/article/details/84207325