linux下搭建NTP时间服务器

一、时间与时区配置

格林威治时间(GMT), 它是0时区时间. 但是在计算机中经常看到的是UTC. 它是Coordinated Universal Time的简写. UTC已经被认定为是国际标准,所以我们都应该遵守标准只使用UTC

CST是Chinese Standard Time,也就是我们通常所说的北京时间

相关命令:

date   显示或修改时间日期

hwclock  修改BIOS时间

ntpd   守护进程配置文件在/etc/ntp.conf

ntpdate  链接同步时间命令

ntpq  NTP查询命令

ntptime  读取和设置内核时间变量

ntpstat  显示网络时间同步状态

相关配置文件:

/etc/ntp.conf     NTP服务配置文件

/usr/share/zoneinfo    各时区的时间设定文件

/etc/sysconfig/clock  主要时区设定指定文件“ZONE=Asia/Shanghai”

/etc/localtime   本地系统时间设定文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@pjy ~]# date   #查看时间
Wed Jun  7 12:36:19 CST 2017
[root@pjy ~]# zdump Shanghai  #查看对应时区的时间
Shanghai  Wed Jun  7 04:51:10 2017 Shanghai
[root@pjy ~]#ln -sf /usr/share/zoneinfo/posix/Asia/Shanghai /etc/localtime   #设置时区方法1
[root@pjy ~]# tzselect    #设置时区方法2,需要选择国家和城市,最后将变量写入到环境变量
[root@pjy ~]# echo "TZ=Asia/Shanghai" >>/etc/profile
[root@pjy ~]# . /etc/profile
[root@pjy ~]# echo $TZ 
Asia/Shanghai
[root@pjy zoneinfo]# cat /etc/sysconfig/clock  #查看时区配置文件
ZONE="Asia/Shanghai"
[root@pjy zoneinfo]# date -R   #查看系统时区
Wed, 07 Jun 2017 13:44:49 +0800
[root@pjy zoneinfo]# hwclock --show   #查看硬件时间
Wed Jun  7 13:48:21 2017  -0.235036 seconds
[root@pjy zoneinfo]# ntpdate cn.pool.ntp.org|hwclock -w   #同步系统时间和硬件时间

二、配置NTP server

1
2
3
4
5
[root@pjy zoneinfo]# rpm -qa |grep ntp   #查看是否安装NTP包,如没有使用YUM安装
ntpdate-4.2.6p5-1.el6.centos.x86_64
ntp-4.2.6p5-1.el6.centos.x86_64
fontpackages-filesystem-1.41-1.1.el6.noarch
[root@pjy zoneinfo]# yum -y install ntp  #安装NTP服务

http://www.pool.ntp.org是NTP的官方网站,在这上面我们可以找到离我们城市最近的NTP Server. NTP建议我们为了保障时间的准确性,最少找两个个NTP Server

配置NTP配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
[root@pjy ~]#vim /etc/ntp.conf
driftfile /var/lib/ntp/drift   #存储时差值,以供调整
broadcastdelay 0.008    
restrict default nomodify    #定义默认访问规则,不允许修改
restrict 127.0.0.1      #定义允许本机全部操作
restrict -6 ::1    #IPv6定义
server 202.120.2.101 prefer    #优先向上同步服务器
server cn.pool.ntp.org
server 127.127.1.0      #本地时间服务器
fudge 127.127.1.0 stratum 8  #当服务器与公网服务器失去链接则使用本地时间给客户端同步时间
includefile /etc/ntp/crypto/pw 
keys /etc/ntp/keys

stratum为设置服务器的层次,0为*,如要向外同步时间则不应该设置为0

关于权限设定部分 
权限的设定主要以 restrict 这个参数来设定,主要的语法为: 
restrict IP地址 mask 子网掩码 参数 
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP 
参数有以下几个: 
ignore :关闭所有的 NTP 联机服务 
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。 
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网 
noquery :不提供客户端的时间查询 
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!

默认是拒绝所有操作的:

restrict default kod nomodify notrap nopeer noquery

如只允许10.0.0.0网段的主机同步时间且不允许修改服务器上的时间:

restrict 10.0.0.0 mask 255.255.255.0 nomodify

启动服务:

1
2
/etc/init.d/ntpd start
chkconfig --level 35 ntpd on

查看ntp服务运行状态:

1
2
3
4
5
6
7
#watch ntpq -p
Every 2.0s: ntpq -p                                                              Tue Jun  6 22:54:30 2017
     remote           refid st t when poll reach   delay   offset  jitter
==============================================================================
 dns.sjtu.edu.cn .INIT.          16 u    -   64    0    0.000    0.000   0.000
 biisoni.miuku.n 204.123.2.72     2 u   49   64    1  172.026    9.264   0.000
*LOCAL(0)        .LOCL.           8 l   50   64    3    0.000    0.000   0.000

remote:  它指的就是本地机器所连接的远程NTP服务器
refid:  它指的是给远程服务器(e.g. 193.60.199.75)提供时间同步的服务器
st:  远程服务器的层级别(stratum). 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
when:  我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
poll:  本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
reach:  这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
delay:  从本地机发送同步要求到服务器的round trip time
offset:  这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近
jitter:  这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小我们和服务器的时间就越精确

注意:在remote段,NTP提供的是群集服务,所以每次链接的服务器是不一样的

其中的前标记解释:

* 它告诉我们远端的服务器已经被确认为我们的主NTP Server,我们系统的时间将由这台机器所提供
+ 它将作为辅助的NTP Server和带有*号的服务器一起为我们提供同步服务. 当*号服务器不可用时它就可以接管
- 远程服务器被clustering algorithm认为是不合格的NTP Server
x 远程服务器不可用

查看ntp更新间隔:

1
2
3
4
[root@pjy ~]# ntpstat
synchronised to NTP server (193.228.143.24) at stratum 3  #本层次服务器为3,已向服务器同步
   time correct to within 655 ms    #时间校正到相差655MS之内
   polling server every 64 s   #每64秒向上级NTP轮询更新一次时间

如需要同步硬件时间也可以在配置文件中打开:

1
2
vim /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes

三、客户端时间同步

使用定时同步任务:

1
2
[root@zabbix ~]# cat /var/spool/cron/root
*/10 * * * * /usr/sbin/ntpdate 10.0.0.100 |hwclock -w >/dev/null 2>&11

hwclock -w为将系统时间作为硬件时间

注:让linux运行ntpdate更新时间时,linux不能开启NTP服务,否则会提示端口被占用

上一篇:Windows Server 2008 安装


下一篇:无法在源“”处找到包“entityframework”