今天闲来无事搭建ntp服务器。原理暂不在这篇说明,请参看ntp协议原理。
os centos6.4
install yum install ntp
下面该修改/etc/ntp.conf文件,其他参数请参看man ntp.conf
先大致介绍一下相关参数
ntp restrict 来管理权限控制
restrict IP mask netmask parameter
parameter 选项
ignore 拒绝所有类型的NTP联机
nomodify 客户端不能更改NTP服务器的时间参数,这表示客户端不能使用ntpc和ntpq 这两个程序来修改服务器。但客户端仍可通过这台主机来进行网络较时。
noquery 客户端不能使用ntpq、ntpc 等指令来查询时间服务器,等于不提供ntp的网络较时
notrap 不提供trap 这个远程事件登录的功能
notrust 拒绝没有认证的客户端
利用server设置上层NTP服务器
server IP [perfer] #prefer表示优先使用主机
以driftfile 记录时间的差异
driftfile 目录与文件
driftfile 后面接的文件需要使用完整路径的文件名
该文件不能是链接文件
该文件需要设置成ntpd这个Daemon可以写入的权限
该文件所记录的数值单位为百万分之一秒ppm
keys [key_file]
除了以restrice来限制客户端的联机之外,也可以通过密钥系统来给客户端认证
按照以上的东东写了一个server_template
#restrict
restrict default nomodify notrap noquery
restrict server1
restrict server2
restrict server3
restrict 127.0.0.1
restrict -6 ::1
restrict 10.17.90.0 mask 255.255.255.0 nomodify
restrict 10.17.90.1
#server source
server server1 prefer
server server2
server server3
restrict 1.cn.pool.ntp.org
restrict ntp.sjtu.edu.cn
restrict time.nist.gov
restrict ntp.nasa.gov
restrict 133.100.11.8
server 133.100.11.8 prefer
server 1.cn.pool.ntp.org
server ntp.sjtu.edu.cn
server time.nist.gov
server ntp.nasa.gov
#
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 8
# driftfile info
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
#about keys
keys /etc/ntp/keys
/etc/init.d/ntpd restart
client_template
restrict default kod nomodify notrap noquery nopeer
restrict 127.0.0.1
restrict 10.17.90.0 mask 255.255.255.255 nomodify notrap
restrict 10.17.90.1
server 10.17.90.1 prefer
driftfile /var/lib/ntp/drift
logfile /var/log/ntp.log
/etc/init.d/ntpd restart
如果想让BIOS也同步一下的话,需要添加参数
echo "SYNC_HWCLOCK=yes" >> /etc/sysconfig/ntpd
不建议客户端直接ntpdate IP && hwclock -w 放在crontab更新,请参看ntpd与ntpdate的区别
我服务器时间同步的首次更新过程是
/etc/init.d/ntpd stop
ntpdate IP && hwclock -w
/etc/init.d/ntpd restart
查看ntp同步的服务器情况请参看ntpq -p 里面的参数
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的分布情况. 简单地说这个数值的绝对值 越小我们和服务器的时间就越精确
ntpstat 客户端或服务端同步服务器状态
[root@ntp]# ntpstat
synchronised to NTP server (10.17.90.1) at stratum 4
time correct to within 72 ms
polling server every 256 s
其他参数请参看man
NTP 服务器名称
time.buptnet.edu.cn IPv4 + IPv6 北京邮电大学NTP一级服务器
time.join.uni-muenster.de IPv4 + IPv6
time6.ipv6.uni-muenster.de IPv6
ntp6.space.net IPv4 + IPv6
ntp.ipv6.uni-leipzig.de IPv4 + IPv6
ntp.rhrk.uni-kl.de IPv4 + IPv6
ntp6.remco.org IPv6
chime3.ipv6.surfnet.nl