NTP注意事项

来源:互联网 发布:windows 10企业版激活 编辑:程序博客网 时间:2024/06/05 05:11


NTP注意事项


注意一:

首先是关于时区的问题,经度的零点在 Greenwich,因此就有了 GMT(Greenwich Mean Time) 的概念,GMT 以东的快(+),以西的慢(-),比如大陆就是 GMT+8,也就是比 GMT 快 8 h。GMT 为 0 点的时候,大陆已经早上 8 点了。然后还有个国际日期变更线的问题,这个在太平洋上,也就是精读为 180 的那个线,如果从大陆飞到美国,时间需要减少 1d,相反则需要加 1d。 
由于地球自转等原因,GMT 跟实际的时间不是很一样,计算机使用 UTC 来表示『正确』的时间,这两者大概有 16min 的差距。

对于计算机来说,分为软件跟硬件只分,软件的是指系统本身的,从 1970 年 1 月 1 日开始算,date 命令就是计的这个时间: 
$ date +%s 
1357465568

$ date 
Sun Jan  6 17:46:02 CST 2013

硬件的就是 BIOS 上的时钟,这个跟系统上的可能会有时差,可以使用 hwclock 来同步: 
# hwclock -r/w


注意二:

客户端同步服务器有两种方式: 
1. 使用 ntpdate 直接同步 
2. 安装 ntpd 作为服务器下层的一个 stratum

注意:二者不能同时使用,在启用了 ntpd 的情况下,是不能执行 ntpdate 的,否则会出现下面的错误: 
# ntpdate 0.cn.pool.ntp.org 
2 Dec 14:27:55 ntpdate[26982]: the NTP socket is in use, exiting

所以,最简单的方式是把 ntpdate 放到 cron 里面去: 
*/30 * * * * root (/usr/sbin/ntpdate 192.168.1.1 && /sbin/hwclock -w) &> /dev/null

可以将 debug 以及 verbose 的信息加到 alias 里面去: 
alias ntpdate='ntpdate -d -v'

不过,ntpdate 这个命令官方 不提倡使用 ,可以使用 ntpd 替代,可以通过默认的包管理器安装。 
有个问题是,ntpd 默认会监听所有的端口,像这样: 
# netstat -tunlp | grep ntp 
udp        0      0 192.168.10.254:123        0.0.0.0:*                           32266/ntpd 
udp        0      0 111.111.111.111:123     0.0.0.0:*                           32266/ntpd 
udp        0      0 127.0.0.1:123           0.0.0.0:*                           32266/ntpd 
udp        0      0 0.0.0.0:123             0.0.0.0:*                           32266/ntpd 
udp6       0      0 :::123                  :::*                                32266/ntpd

我们明显不希望这样,因此需要指定端口。Ubuntu 10.04 的版本是 4.2.4p8,12.04 的是 4.2.6p3,前者不能在 ntp.conf 里面指定 interface。

网上有说可以通过在 /etc/default/ntp 中加入 -I ethx 来指定端口,或者直接通过 ntpd -I ethx 的方式来启动,不过我没尝试成功,所以直接通过在 ntp.conf 里面指定 interface 就好了,像 下面 这样: 
interface ignore ipv6 
interface listen ipv4

注意三:

关于安全的问题,对查询的客户端一般是不开放 nomodify 的权限的,默认的规则可以像下面这样: 
restrict -4 default kod notrap nomodify nopeer noquery 
restrict -6 default kod notrap nomodify nopeer noquery 
restrict 192.168.1.1 mask 255.255.255.0 nomodify

这个客户端就不能修改,但是可以通过 ntpq 或者 ntpdc 远程查询到当前 ntp server 的信息了: 
$ ntpdc 192.168.1.1

上面这个进入一个交互式的 shell,输入『?』获取帮助,可以直接通过参数进行非交互式的查询: 
$ ntpdc -c monlist 192.168.1.1

使用 ntpd 查询: 
ntpq 192.168.10.254

其他的一些有用的命令: 
# ntpq -p 
# ntpq -c lpeer 
# ntpdc -c monlist 
# ntpdc  -l 
# ntpdc  -s

注意四:

在使用 ntpq -p 查询的过程中,曾出现如下的 error log: 
# ntpq -p 
localhost: timed out, nothing received 
***Request timed out 
原因很简单,ntpd 需要有 loopback 的参与,而默认是拒绝所有,将 loopback 放行就好了: 
restrict 127.0.0.1




本文转自:

http://www.tuicool.com/articles/Iv2QNf



0 0
原创粉丝点击