租号玩代理申请
A-A+

Windows搭建时间同步服务器NTP服务器 为时钟源 给内网主机同步时钟

2025年03月07日 电脑网络 暂无评论 阅读 32 次

我放在公司的内网电脑的时间老是慢,由于不能连接互联网,需要在能上网的电脑上搭建一个时间同步服务器用于给内网电脑同步时间用。

目标:能上互联网的电脑做成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
创建NTPLOCAL

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)
配置Announce Flags

6. 重启Windows Time服务
重启Windows time服务

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。
修改时间同步间隔

3. 重新同步一下时钟源
重新设定时间同步

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