NTP时间服务器学习笔记引言NTP时间服务器就是提供时间授权(对时)的服务器,它可以用Linux或Windows系统来架设。
总来说NTP时间服务器理解和配置都相对简单,我们只在此提醒一点NTP通信端口采用udp的123端口。
以下我们以Windows 2008/Redaht5.4作为时间服务器为服务端,Linux和Windows系统为客户端来学习一下。
服务端Windows NTP服务器默认情况下,独立服务器WINDOWS SERVER 2008是作为NTP客户端工作的,所以必须通过修改注册表,以使系统作为NTP服务器运行。
工作之前请先备份注册表文件。
1、修改以下选项的键值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServe r内的[Enabled]设定为1。
打开NTP服务器功能(默认是不开启NTP Server服务,除非电脑升级成为域控制站)。
2、修改以下键值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags 设定为5.该设定强制主机将它自身宣布为可靠的时间源,从而使用内置的互补金属氧化物半导体(CMOS) 时钟。
如果要采用外面的时间服务器就用默认的a值即可.# 210.72.145.44 (国家授时中心服务器IP地址)3、修改以下键值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type内的[Type]设定为NTP。
4、重启Win32Time服务:先关闭windows time 服务,再开启该服务。
可以在“管理工具”的“服务”界面下完成,也可以以DOS 方式输入“net stop w32time”、“net start w32time”。
至此,已完成服务器端设定.注意:1)通讯端口:123 必须打开2)Windows Time服务设置为"自动"模式,以便重启系统后,继续提供时间授权。
3)时区不能进行同步,时区是在安装系统时选择或者配置修改。
命令行模式下启动服务: net stop w32time 停止服务/ net start w32time 启动服务Linux NTP服务器1、安装NTP软件版本# rpm -qa | grep ntpntp-4.2.2p1-9.el5_3.2chkfontpath-1.10.1-1.1没有安装,加载光盘进行安装。
2、编辑配置文件修改二个文件即可。
# vi /etc/ntp.conf# Please consider joining the pool (/join.html).server 192.168.2.151server 192.168.2.152# Hosts on local network are less restricted.restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap# 解释✓nomodify客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
✓notrap 的真正含义是不响应ntp mode6控制消息模式。
ntp mode6 通常是使用ntpq来监视ntpd操作。
✓nomodify和notrap其实使用这两个参数的目的是从安全角度考虑防止恶意修改ntp服务端事件参数3、重启NTP服务#chkconfigntpd on #开机启动服务#/etc/init.d/ntpdstart 或者service ntpd start #启动服务#/etc/init.d/ntpdstop 或者servicentpd stop #停止服务#/etc/init.d/ntpdrestart #重启服务4、等待后同步重启服务后需要于ntp服务器端同步通常ntp同步是温和的,不会一次同步成功,同步完慢慢缩小时间差,这是一个原因。
通常要等5分钟左右!!5、状态查看检查服务器同步状态:# netstat-an |grep 123 #123端口开放#ntpq –p查看日志# tail -f /var/log/message6、可能出现的问题及解决方案1)如果出现jitter的值为4000则是防火墙或者网络问题解决方法:service iptables stop 关闭防火墙2)如果客户端更新时间时报错入下:3 Dec 16:26:42ntpdate[12489]: the NTP socket is in use, exiting 因为客户端也启动的ntp服务的缘故,所以关闭后就可以了service ntpd stop3)nux 下防火墙规则如果极严格的话可能会影响ntpd 对时,打开sport 123 即可(假设OUTPUT 链全ACCEPT):iptables -I INPUT -pudp -m udp --sport 123 -j ACCEPT客户端Windows 客户端命令行下:w32tm /resync桌面同步:客户端的设定更改注册表即可HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient SpecialPollInterval值修改成十进制43200(单位为秒,43200为12小时)SpecialPollTimeRemaining值修改成[时间同步服务器],0如:192.168.1.1,0客户端设置完成.说法二:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W32Time\Parameters\NtpServer 修改时间服务器地址。
(修改NTP地址;注:后面的0X1 一定不能删掉)windows 2008 是0x9说明:SpecialPollInterval 定时间同步时间,如:10分钟同步一次。
脚本同步基于w32tm /resync 命令只返回本条命令是否成功执行参数,不考虑网络以及服务端的情况。
因为只从脚本无法实现自动主备服务器进行切换。
但利用iTimeSync 这个小程序可以实现。
脚本******************************************************************************* 脚本一@echo offREG ADD HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W32Time\Parameters /v NtpServer /t REG_SZ /d "15.0.0.16" /fnet stop w32timenet start w32timew32tm /resync脚本二@echo offw32tm /config /update /manualpeerlist:"192.111.1.79"net stop w32timenet start w32timew32tm /resync******************************************************************************* 脚本说明测试脚本使用环境平台:Windows2008R2_64bit、Windows2003_32bit、Windows2003R2_32bit、Windows2003_64bit 注意:1)根据实际环境修改IP地址。
2)不同的Windows平台,只需修改NTPServer路径:在注册表中的位置Linux 客户端手动同步同步命令:# ntpdte IP地址#确保ntpd服务器开启。
/etc/init.d/ntpd start若出现:the NTP socket is in use, exiting,停用一下ntpd服务/etc/init.d/ntpd stop 或在# setup 进入服务关闭ntpd服务。
指定NTP地址:# vi /etc/ntp.conf 中指定NTP服务器IP地址# 可以指定多个开机启用服务开机启动ntp服务:chkconfig --level ntpd 35 on定时同步linux 默认3-5分钟同步,可以定时同步:1、创建自己的一个crontab文件,随便建立一个文件date.cron,首先可以使用任何文本编辑器建立一个新文件,然后向其中写入需要运行的命令或脚本和要定期执行的时间。
vi date.cron加入下面要运行的命令和要定期执行的时间*/10 * * * * /usr/sbin/ntpdate 192.168.1.32 # 10分钟同步一次# minute hour day month dayofweek commandminute - 从0到59的整数hour - 从0到23的整数day - 从1到31的整数(必须是指定月份的有效日期)month - 从1到12的整数(或如Jan或Feb简写的月份)dayofweek - 从0到7的整数,0或7用来描述周日(或用Sun或Mon简写来表示) command - 需要执行的命令(可用as ls /proc >> /tmp/proc或执行自定义脚本的命令) 0 3 * * * /home/dbbackup/db1backup.sh backup# 表示每天3点执行/home/dbbackup/db1backup.sh backup对于以上各语句,星号(*)表示所有可用的值。
例如*在指代month时表示每月执行(需要符合其他限制条件)该命令。
整数间的连字号(-)表示整数列,例如1-4意思是整数1,2,3,4指定数值由逗号分开。
如:3,4,6,8表示这四个指定整数。
符号“/”指定步进设置。
“/<interger>”表示步进值。
如0-59/2定义每两分钟执行一次。
步进值也可用星号表示。
如*/3用来运行每三个月份运行指定任务。
******************************************************************************* */10 * * * * /usr/sbin/ntpdate 192.168.2.151 >> /var/log/ntp.log #指定输出日志编辑完此文件需要重新编译。