RHEL6下NTP服务器的配置
实验环境:
[root@desktop2 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.0 (Santiago)
[root@desktop2 ~]# uname -r
2.6.32-71.el6.x86_64
一、NTP服务的原理
1、原理
NTP(Network Time Protocol,网络时间协议)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议***。
2、端口
UDP 123
二、NTP服务的配置
1、安装NTP软件包
[root@desktop2 ~]# yum -y install ntp
2、NTP服务的配置
[root@desktop2 ~]# grep -v "^#" /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server sld.time.edu.cn
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
logfile /var/log/ntp
[root@desktop2 ~]# cat /etc/ntp/step-tickers //当NTP服务启动时,会自动与该文件中的记录的上层NTP服务进行时间校对
# List of servers used for initial synchronization.
sld.time.edu.cn
[root@desktop2 ~]# cat /etc/sysconfig/ntpd //允许BIOS与系统时间同步
# Drop root to id 'ntp:ntp' by default.
SYNC_HWCLOCK=yes
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"
3、启动NTP服务
[root@desktop2 ~]# service ntpd start
[root@desktop2 ~]# chkconfig ntpd on
4、NTP的测试
[root@desktop2 ~]# ntpstat
synchronised to NTP server (192.168.0.254) at stratum 12 //进行时间校对的NTP服务器
  time correct to within 958 ms //本地与上层NTP服务器的时间差
  polling server every 64 s //下次同步时间
[root@desktop2 ~]# ntpq -p
    remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*instructor.exam LOCAL(0)        11 u   26   64  377    0.807    0.030   0.219
LOCAL(0)        .LOCL.          10 l   27   64  377    0.000    0.000   0.000
三、客户端的访问
1、Windows平台
双击任务栏右下角的时钟,选择Internet时间

225825493.jpg

2、Linux平台

225931401.jpg

或者ntpdate 192.168.0.2


RHEL 5

一、搭建时间同步服务器
1、编译安装ntp server
rpm -qa | grep ntp
若没有找到,则说明没有安装ntp包,从光盘上找到ntp包,使用
rpm -Uvh ntp***.rpm
进行安装


2、修改ntp.conf配置文件
vi /etc/ntp.conf
①、第一种配置:允许任何IP的客户机都可以进行时间同步
将“restrict default nomodify notrap noquery”这行修改成:
restrict default nomodify notrap


配置文件示例:/etc/ntp.conf
②、第二种配置:只允许192.168.211.***网段的客户机进行时间同步
在restrict default nomodify notrap noquery(表示默认拒绝所有IP的时间同步)之后增加一行:
restrict 192.168.211.0 mask 255.255.255.0 nomodify notrap


3、启动ntp服务
service ntpd start
开机启动服务
chkconfig ntpd on
4、ntpd启动后,客户机要等几分钟再与其进行时间同步,否则会提示“no server suitable for synchronization found”错误。



二、配置时间同步客户机
手工执行 ntpdate <ntp server> 来同步
或者利用crontab来执行
crontab -e
0 21 * * * ntpdate 192.168.211.22 >> /root/ntpdate.log 2>&1
每天晚上9点进行同步

附:
当用ntpdate -d 来查询时会发现导致 no server suitable for synchronization found 的错误的信息有以下2个:
错误1.Server dropped: Strata too high
在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。
在ntp客户端用ntpdate -d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。
这是因为NTP server还没有和其自身或者它的server同步上。
以下的定义是让NTP Server和其自身保持同步,如果在/ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。

server 127.127.1.0
fudge 127.127.1.0 stratum 8

在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。
那么如何知道何时ntp server完成了和自身同步的过程呢?
在ntp server上使用命令:

# watch ntpq -p
出现画面:
Every 2.0s: ntpq -p                                                                                                             Thu Jul 10 02:28:32 2008
    remote           refid      st t when poll reach   delay   offset jitter
==============================================================================
192.168.30.22   LOCAL(0)         8 u   22   64    1    2.113 179133.   0.001
LOCAL(0)        LOCAL(0)        10 l   21   64    1    0.000   0.000 0.001

注意LOCAL的这个就是与自身同步的ntp server。
注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒*5=320秒的时间。
如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断。
错误2.Server dropped: no data
从客户端执行netdate –d时有错误信息如下:

transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
192.168.30.22: Server dropped: no data
server 192.168.30.22, port 123

.....
28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found
出现这个问题的原因可能有2:
1。检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。

使用以下命令检查ntp的版本:
# ntpq -c version
下面是来自ntp官方网站的说明:
The behavior of notrust changed between versions 4.1 and 4.2.
In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".
In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd
解决:
把notrust去掉。

2。检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口。
可以用命令
#service iptables stop

来关掉iptables服务后再尝试从ntp客户端的同步,如果成功,证明是防火墙的问题,需要更改iptables的设置。


/


WINDOWS


     它的WINDOWS版本安装很简单,但是想让它正常运行起来也费了不少劲,不过现在我们有了一些经验,在许多台机器上都配置成功了,归纳起来,做好如下几点就可以了。

  1) 安装时一切配置都按默认的即可,但是在选择安装程序时,有一个安装第三方软件的那个(即openssl的不必选),一路点下一步进行即可,当然这样做完以后,十次有九次会提示NTP服务没有启动成功。

  2) 查看和修改配置文件

  遇到点挫折没关系,我们再来打开配置文件,即“Edit NTP Configuration”这一项,里面有一点需要记住的地方,即“driftfile "C:\Program Files\NTP0606\etc\ntp.drift"”这一条,也就是说我们要在对应的目录下创建一个名为“ntp.drift”的文件,文件的内容为“0.000”,然后再把

  server 127.127.1.0

  fudge 127.127.1.0 stratum 12

  这两行配置文件前面的“#”去掉。

  3) 重新执行一次安装程序过程

  做完以上两步后,如果直接运行重新启动进程命令(即“Restart NTP Service”)往往也是不行的,我们要做的是重新执行一遍安装过程,经过这么一番折腾后,一般来说,我们的NTP服务器就成功配置完成,并处于启动状态了。我们可以用“Quick NTP Status”来测试一下。



1、安装ntp服务
  #yum -y install ntp*
2、执行同步时间命令
  #/usr/sbin/ntpdate time-b.timefreq.bldrdoc.gov
  错误当前时间不是08:30:50
  22 Jun 08:30:50 ntpdate[18496]: no server suitable for synchronization found
3、解决
  安装rdate
  #yum -y install rdate
  #rdate -s time-b.timefreq.bldrdoc.gov
  #/usr/sbin/ntpdate time-b.timefreq.bldrdoc.gov
22 Jun 00:31:52 ntpdate[18529]: no server suitable for synchronization found

当前时间是00:31:52

4、加入crontab中
  #crontab -e
  * */2 * * *  /usr/sbin/ntpdate time-b.timefreq.bldrdoc.gov


------------------------------------------------------------------------------------------------------------------------------------------------

NTP服务(RHEL6.0x86_64)


一、什么是NTP时间服务器
NTP服务器Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议***。
二、NTP通信协议Server与Client如何保持时间同步
1、首先,主机需要启动NTP
2、之后,Client会向NTPServer发送出调校时间的message
3、然后NTPServer会送出当前的标准时间给Client
4、Client接收了来自Server的时间后,会据此调整自己的时间,这样即可实现网络校时
不过在上面的步骤中会发生Client到Server的信息传送时间过长的问题,为了解决这些延迟问题,已经设计了一些可以自动计算传送过程时间的误差的程序,从而更准确的校准自己的时间。

三、NTP服务说明
软件包
1、ntp:是NTP服务器的主要软件,包括配置文件以及执行文件等,都由这个软件提供
2、tzdata:软件名称是Time Zone data的缩写,主要提供了各个时区对应的显示格式
配置文件及命令
1、/etc/ntp.conf:是NTP的主要配置文件,不同Linux版本放置的目录可能会不同,不过文件名都是一样,使用locate ntp.conf搜索一下您的系统有没有这个软件
2、/usr/share/zoneinfo:这是个目录,这个目录是Linux本身提供的,而不是NTP提供的。在这个目录下的文件规定了各主要时区的时间配置文件,例如中国上海地区的时区配置文件在/usr/share/zoneinfo/Asia/Shanghai中。
3、/etc/sysconfig/clock:这个文件其实不包含在NTP中,因为这个是Linux的主要时区配置文件。每次开机后Linux会自动的读取这个文件来设置系统所默认的时间
4、/etc/localtime:这个文件是“本地端的时间配置文件”。上面提到的clock文件里规定了使用的时间设置文件(zone)为/usr/share/zoneinfo/Asia/Shanghai,所以说此文件就是本地端的时间了,此时Linux系统会将Shanghai那个文件另存为/etc/locatime,未来我们的时间显示就会以Shanghai那个时间设置文件为准。如果现在这台主机搬到日本东京去了,那么我们应该如何调整时间呢?其实什么调整都不需要,因为我们的localtime主要是分析与UTC时间的时差来显示格式,所以,只要将/etc/sysconfig/clock里的Zone设置成为Asia/Tokyo,并且将/usr/share/Zoneinfo/Asia/Tokyo另存为/etc/localtime,显示的时间即为日本东京的时间
5、/bin/date:这个是Linux系统上面常见的日期与时间输出指令,用途很广。除了输出时间外,也可以修改时间。
6、/sbin/hwclock:这是一个root才能执行的指令,因为Linux系统上面BIOS时间与Linux系统时间是分开的,所以使用date这个指令调整了时间之后,还需要使用hwclock才能将修改过的时间写入到BIOS中。
7、/usr/sbin/ntpd:这是NTP的主要守护进程文件,需要启动它才能提供NTP服务。需要注意的是,这个指令默认会引用/etc/ntp.conf里的设置。
8、/usr/sbin/ntpdate:这是Client端用来链接NTPServer的主要执行文件。如果不想启用NTP,只想使用NTPClient功能的话,可以只应用此指令。

四、主配置文件 ntp.conf
1、时间服务器的分层概念:当架设一台NTP主机,这台NTP所向上要求同步的那台主机为stratum-1,那么你的NTP就是stratum-2,如果还有其他的NTP主机向我们要求时间同步,那么该台主机则会是stratum-3,最多可达15个阶层。
2、架设NTP服务器的需求:上层服务器共有tock.stdtime.gov.tw;tick.stdtime.gov.tw;time.stdtime.gov.tw三台,其中以tock.stdtime.gov.tw最优先使用(prefer)。不对Internet提供服务,仅允许来自内部网段192.168.1.0/24的查询。侦测一些BIOS时钟与Linux系统时间的差异并写入/var/lib/ntp/drift文件中。
3、利用restrict来管理权限控制:restrict [NTP服务器IP] mask [netmask_IP] [parameter],其中parameter的参数主要有以下这些:
ignore:拒绝所有类型的NTP联机
nomodify:客户端不能更改NTP服务器的时间参数,这表示客户端不能使用ntpc与ntpq这两个程序来修改服务器。但客户端仍可通过这台主机来进行网络校时
noquery:客户端不能使用ntpq、ntpc等指令来查询时间服务器,等于不提供NTP的网络校时
notrap:不提供trap这个远程事件登录(Remote Event Logging)的功能
notrust:拒绝没有认证的客户端
如果没有在parameter的地方加上任何参数的话,表示该IP或网段不受任何限制。一般来说,可以先关闭NTP的使用权限,然后再一个一个的启用允许登录的网段。
4、利用Server设置上层NTP服务器:Server [IP or Host Name] [prefer],在Server后端可以接IP或主机名,prefer表示“优先使用”的主机。
5、以driftfile记录BIOS与上层Time Server时间差异,关于文件名必须要知道以下几点:driftfile后面接的文件需要使用完整路径的文件名;该文件不能是链接文件;该文件需要设置成ntpd这个守护进程可以写入的权限;该文件所记录的数值单位为百万分之一秒(ppm)。
6、keys[key_file]:除了以restrict来限制客户端的联机之外,也可以通过密钥来给客户端认证,如此以来可以让主机端更放心。

五、命令
[root@linux~]#vim /etc/ntp.conf
#1.先处理权限方面的问题
restrict default nomodify notrap noquery
restrict 220.130.158.71 <==以下三行是开放主机进入的权限
restrict 220.130.158.51
restrict 220.130.158.52
restrict 127.0.0.1 mask 255.0.0.0 <==本机与LAN的使用权限
restrict 192.168.1.0 mask 255.255.255.0 nomodify

#2.设置主机来源
Server 220.130.158.71 prefer <==以这台主机为最优先
Server 220.130.158.51
Server 220.130.158.52

#3.原本内定的一个内部时间数据,不需要更改
Server 127.127.1.0 # local clock
Fudge 127.127.1.0 stratum 10

#4.时间差异分析的参数,保留默认值即可
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

#5.暂时不会使用的keys相关认证功能
keys /etc/ntp/keys

然后修改一下/etc/sysconfig/ntpd,添加一行:SYNC_HWCLOCK=yes, 这样BIOS的时间也会跟着改变的。

六、NTP的启动与观察
(1)启动NTP服务:service ntpd start <==通常启动NTP后约在15分钟内才会和上层NTP服务器顺利链接上
(2)观察启动的端口:netstat -tlunp <==主要是UDP数据包,且在端口123这个端口
(3)是否与上层服务器联机:ntpstat
(4)NTP服务器与上层NTP服务器之间的关系:ntptrace -n 127.0.0.1
#这个指令可以列出目前NTP服务器与上层NTP服务器之间的关系
#尽管我们已经和第二层链接上,但第二层与第一层不是我们能管的,所以那各timed out可以不用管它
(5)NTP服务器与上层NTP服务器的状态:ntpq -p

NTP安全性设置
在iptables中开启相应端口:iptables -A INPUT -p UDP -i $EXTIF -s 192.168.1.0/24 --dport 123 -j ACCEPT

Linux的网络校时
(1)Client端连接Server端校时:ntpdate 192.168.1.254
(2)将系统时间写入BIOS时间:hwclock -w
(3)读取BIOS时间:hwclock -r
(4)vim /etc/crontab 加入一行:10 5 ***root/usr/sbin/ntpdate tock.stdtime.gov.tw&&/sbin/hwclock-w
#使用cron之后,每天的5:10,Linux系统都会自动进行网络校时。