windows互联网前置配置为时钟源给内网主机同步时钟
背景:
甲方爸爸给了互联网前置机和内网的一堆服务器,只有互联网前置机可以上公网,而内网服务器都无法访问互联网。内网服务器时间不统一。
环境:
甲方爸爸的服务器都是清一色windows server 2016 standard。
目标:
互联网前置机做成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)
6. 重启Windows Time服务
内网服务器操作:
1. 时间同步配置
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
常见报错:(转载,虽然我都没遇到,mark一下)
1.同步时出错,由于超时时间已过,该操作返回
【原因1】:NTP服务器系统关机或不在线
【原因2】:NTP服务器的系统设置中 "自动设置时间" 没开启或手动关闭再打开过,导致Windows Time服务状态自动切换到Disable状态
【原因3】:测试中多次遇到点击立即更新后,同步出错并返回以上结果,随即再点第二次立即更新,同步就成功了。为避免以上问题,播放器设置自动同步时,可以将频率设置的比预期高一倍,如预期的是1天更新一次,实际设置12小时更新一次或更快些。
测试中还发现,如果系统设置中手动关闭 "自动设置时间"后再重新打开,Windows Time服务会自动切换为Manual(手动)状态,这种状态下再重启服务器系统后,Windows Time服务不会再自动打开。因此每次开关服务器的"自动设置时间"都将影响NTP服务自动开启,必须再手动将NTP服务切换为Automatic状态。
2.同步出错,无法连接到对等机
【原因】:检查NTP服务器的Windows Time服务状态是否为Start状态
3.无法与时间服务器自动同步,因为时间差别太大,请手动更新时间
【原因】:实测电脑当前的时间比NTP服务器时间差别超过15小时将会出现以上时间差别太大,无法同步的问题。如果经常出现这类问题,可尝试使用第三方付费软件 ClockSynchro