Linux时间设置与NTP服务配置

第一部分:时间设置
 
一.时间和时区
格林威治时间(GMT),是0时区时间.计算机中是UTC。它是Coordinated Universal Time的简写。虽然UTC和GMT的值相等(误差相当之小),但是UTC已经被认定为是国际标准,所以我们都应该遵守标准只使用UTC。 
例:北京时间上午10点。可以表示为: 
10:00 CST CST是Chinese Standard Time表示北京时间
02:00 UTC 中国处于UTC+8时区,故UTC时间为02:00
 
二.设置Linux时区
 
/usr/share/zoneinfo
这个目录下,这里基本涵盖了大部分的国家和城市。
查看每个time zone当前的时间可以使用zdump命令
 
# zdump /usr/share/zoneinfo/Asia/Shanghai 
/usr/share/zoneinfo/Asia/Shanghai  Thu Jul  5 17:02:41 2012 CST
 
设置系统所在时区(time-zone) 
/etc/localtime 这个文件定义了系统所在时区。
方法一:
#cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#date 查看时间
或是
#ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#date 
Thu Jul  5 17:10:44 CST 2012
方法二:
设置TZ环境变量 TZ=time zone
使用tzselect命令
# tzselect 
当TZ变量没有定义的时候系统使用/etc/localtime来确定time zone. 
 
三.硬件时钟和系统时钟
 
RTC=Real Time Clock  
系统时钟就是操作系统的kernel所用来计算时间的时钟。
 
通过date命令,查看系统时间。
#date
Fri Jul  6 09:50:25 CST 2012
 
通过hwclock --show命令查看硬件时间。
#hwclock --show
Fri 06 Jul 2012 09:48:00 AM CST  -0.992019 seconds
 
同步系统时间和硬件时间
 
把硬件时间设置成系统时间
#hwclock --hctosys
#hwclock -s
 
把系统时间设置成硬件时间
#hwclock --systohc
#hwclock -w
 
设置硬件时间,也可在BIOS中设置。 
#hwclock --set --date="mm/dd/yy hh:mm:ss"
 
修改系统时间。
#date -s "dd/mm/yyyy hh:mm:ss" 
 
第二部分:NTP服务安装配置
 
四.设置NTP Server前的准备
 
1). 安装ntp软件包。
# rpm -ivh ntp-4.2.2p1-5.el5.rpm
2). 选择合适的互联网NTP Server,至少两个。
常用ntp服务器地址:
server  0.cn.pool.ntp.org prefer
server  1.cn.pool.ntp.org prefer
server  210.72.145.44   #国家授时中心服务器IP地址
server  ntp.sjtu.edu.cn   #(上海交通大学网络中心NTP服务器地址)
 
可用的公共时间服务器列表可以从下面的地址获取:
http://support.ntp.org/bin/view/Servers/NTPPoolServers
 
3).在启动ntpd服务之前与互联网NTP服务器做一个同步,使得我们机器的时间尽量接近标准时间。
手动同步原因:
1>.若系统时间比正确时间快,NTP不能调整系统时间,故需要手动设置或手动同步。
2>.若当前系统时间与NTP服务器时间相差很大,则需要很长时间进行调整,手动设置或同步可以减少同步时间。
 
使用ntpdate命令
#ntpdate 210.72.145.44
6 Jul 10:17:03 ntpdate[3868]: adjust time server 210.72.145.44 offset -0.027175 sec
#ntpdate 0.cn.pool.ntp.org
6 Jul 10:31:43 ntpdate[4312]: adjust time server 114.80.81.1 offset -0.003615 sec
 
五.启动与修改NTP 配置文件
 
修改配置文件 /etc/ntp.conf
替换默认的server
#vi /etc/ntp.conf 
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 210.72.145.44
server ntp.sjtu.edu.cn
server s1a.time.edu.cn
 
启动NTP Server并且设置开机后自动运行
#/etc/init.d/ntpd start 
或是
#service ntpd start
#chkconfig --level 35 ntpd on
 
六.测试NTP服务的运行
 
启动了NTP服务之后,使用命令 ntpq 查询。
提示:在服务启动后,过一两分钟,再使用命令查询。
#ntpq -p 
Every 2.0s: ntpq -p            Sat Jul 7 00:41:45 2007 
     remote           refid      st t when poll reach   delay   offset jitter 
============================================================================== 
+210.72.145.44   193.62.22.98     1 u   52   64 377    8.578   10.203 289.032 
*mozart.musicbox 192.5.41.41      2 u   54   64 377   19.301 -60.218 292.411
 
remote: 它指的就是本地机器所连接的远程NTP服务器。
refid: 它指的是给远程服务器提供时间同步的服务器。
st: 远程服务器的级别。由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端。所以服务器从高到低级别可以设定为1-16。为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的。
when: 一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步。
poll: 本地机和远程服务器多少时间进行一次同步(单位为秒)。在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围。之后poll值会逐渐增大,同步的频率也就会相应减小。
reach: 这是一个八进制值,用来测试能否和服务器连接,每成功连接一次它的值就会增加。
delay: 从本地机发送同步要求到服务器的round trip time。
offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别。offset越接近于0,我们就和服务器的时间越接近。
jitter: 这是一个用来做统计的值。它统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小我们和服务器的时间就越精确。
最前面+和*的含义:
"*" - 远端的服务器已经被确认为主NTP Server,系统的时间将由这台机器所提供。
"+" - 它将作为辅助的NTP Server和带有*号的服务器一起为我们提供同步服务。当*号服务器不可用时它就可以接管。
"-" - 远程服务器被clustering algorithm认为是不合格的NTP Server。
"x" - 远程服务器不可用。
 
七.NTP安全设置
 
第一:只允许局域网特定用户(客户端)连接到我们的服务器。
第二:NTP 客户端不能修改我们服务器上的时间。
在/etc/ntp.conf文件中可以用restrict关键字来配置以上的要求。
首先对于默认的client拒绝所有的操作。
restrict default kod nomodify notrap nopeer noquery 
然后允许本机地址一切的操作。
restrict 127.0.0.1 
最后我们允许局域网内所有client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间。
restrict 192.168.1.0 mask 255.255.255.0 nomodify 
把这三条加入到/etc/ntp.conf中就完成了我们的简单配置。
NTP还可以用key来做authenticaiton。
 
八.NTP client的设置
在linux客户端上执行ntpdate ntp_server_ip 就可以根据时间服务器统一局域网的时间了,将命令放到cron里凌晨定期执行。
 
crontab –e 
0 3 * * * /usr/sbin/ntpdate {NTP Server IP Address}
九.补充说明
 
1> 配置文件中的driftfile
每一个system clock的频率都有小小的误差,这也是机器运行一段时间后会不精确的原因。NTP会自动来监测时钟的误差值并予以调整。但这是一个冗长的过程,NTP会把记录下来的误差先写入driftfile。这样即使重启机器之前的计算结果也不会丢失。
2> 如何同步硬件时钟?
NTP一般只会同步system clock。
若要同步硬件时钟,可以将命令写入到cron中。
3> 配置文件ntp.conf详细说明
 
ntp.conf里主要可以使用如下几个命令:restrict,server,driftfile,keys
 
其中server是设定上级时间服务器用的,而restrict是设定哪台服务器可以和ntp server进行时间同步,具有什么样的权限。driftfile是用来指定记录时间差异的文件,keys是用来指定认证key文件的。
 
restrict的格式为:
restrict [客户端IP] mask [netmask_IP] [parameter]
 
客户端IP,就是都是哪几台服务器要和这台ntp server进行同步的ip地址
最后的parameter可以有如下几个参数:
ignore:拒绝连接到ntp server。
nomodiy:可以连接到ntp server,但是不能对ntp server进行时间上的修改。
noquery:不提供对ntp server查询时间,也就是拒绝和ntp server进行时间同步。
notrap:不提供 trap 远程登录功能。
notrust:对没有认证的客户端不提供服务。
如果参数没有设定,那就表示该IP (或子网)没有任何限制!
 
restrict default nomodify notrap noquery 
此项设置的含义是不允许其他计算机修改或查询配置在本机linux系统上的NTP服务。
其中default表示所有IP。
 
restrict default nomodify notrap noquery 
此项设置的含义是不允许其他计算机修改或查询配置在本机linux系统上的NTP服务。
其中default表示所有IP.
 
restrict 127.0.0.1 
开放本机内部回环网络接口,以便于在本地对NTP服务进行监控及配置。
 
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 
允许192.168.1.0网络段的NTP客户端使用本NTP服务器进行网络校进,但不允许它们修改本机的NTP服务配置。如想开放此项功能需要根据实际网络情况修改网络段及掩码,并把注释符"#"去掉。
 
server 0.pool.ntp.org 
 
指定上层的NTP服务器。linux系统中默认指定Internet上的时间服务器池中的时间服务器作为上层NTP服务器。NTP服务器池pool.ntp.org中拥有三百多台自愿加入其中的公共NTP服务器。如果想更准确的校时也可以自己指定上层NTP服务器。
 
server命令的格式是:
server [IP or hostname] [prefer]
其中[IP or hostname]为上级时间服务器的IP或者域名,主机名:
可以是192.168.12.177形式,或者time.nist.gov再或者ntpserver这样的形式。
后面的[prefer]参数是可选的,加上prefer后,ntp server和上级时间服务器同步时会优先先访问加了prefer这行的进行同步。
 
server 127.127.1.0 
fudge 127.127.1.0 stratum 10 
127.127.1.0是一个特殊的地址,代表本机的系统时钟。fudge是指定本地时间源的层号,数字越大,优先级越低。所以当有外部时间源时会优先使用外部时间源。
 
driftfile /var/lib/ntp/drift 
指定记录与上层NTP服务器联系时所花费时间的文件,指定了用来保存系统时钟频率偏差的文件, ntpd程序使用它来自动地补偿时钟的自然漂移, 从而使时钟即使在切断了外来时源的情况下,仍能保持相当的准确度。
 
还可以在/etc/ntp.conf文件中还可以进行如下设置 
peer 192.168.16.100 #设置IP地址为192.168.16.100的NTP服务器可以与本机的NTP服务器相互进行网络校时。
broadcast 224.0.1.1 #224.0.1.1是多播网址,设置该NTP服务器可对所有能访问到的网段进行多播。
broadcast 192.168.1.255 #设定该NTP服务器可对子网192.168.1.0/24中的所有计算机定期广播正确的时间。
修改/etc/ntp/step-tickers文件,在该文件中把所用的上层NTP服务器的IP地址或域名加入即可。(网络整理)

你可能感兴趣的:(linux,时间,配置,ntp)