作者:焦振清
时间:2019-05-06
说明:ntpd 4.2.6p5
提供一份极简的配置文件,既可以作为client,也可以作为servers使用
restrict default kod nomodify notrap nopeer
restrict -6 default kod nomodify notrap nopeer
restrict 127.0.0.1
restrict -6 ::1
server ntp1.yunxiaobai.net prefer iburst minpoll 4 maxpoll 6
server ntp2.yunxiaobai.net iburst minpoll 4 maxpoll 6
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
配置详解:
restrict IP mask netmask_IP parameter
- restrict default 等同于restrict 0.0.0.0,意思是针对所有IP地址,未加参数表示不做任何限制
- restrict default nomodify
表示client可以通过server进行时间同步,但client不能修改server的时间参数 - ntpdate: adjust time server 10.10.10.10 offset 0.111339 sec
- ntpq -p 10.10.10.10:可以正常查询不受影响
- ntpdc -c monlist 10.10.10.10:可以正常查询不受影响
- restrict default noquery 表示不提供client基于ntpq方式的查询,但时间同步功能可用
- ntpdate: adjust time server 10.10.10.10 offset 0.132461 sec
- ntpq -p 10.10.10.10:timed out, nothing received ***Request timed out
- ntpdc -c monlist 10.10.10.10: timed out, nothing received ***Request timed out
- restrict default ignore 表示拒绝ntp的任何请求,自己都有可能被误伤的
- ntpdate: no server suitable for synchronization found
- ntpq -p 10.10.10.10:timed out, nothing received ***Request timed out
- ntpdc -c monlist 10.10.10.10: timed out, nothing received ***Request timed out
- 如果设置为restirct default ignore,则会导致ntpd服务器本身也无法进行自身的时钟同步
- restrict default notrust 表示拒绝所有未经认证的ntp请求,但ntpq方式的查询可以生效
- ntpdate: no server suitable for synchronization found
- ntpq -p 10.10.10.10:可以正常查询不受影响
- ntpdc -c monlist 10.10.10.10:可以正常查询不受影响
- 据说ntpd4.1版本和4.2版本对于notrust的行为是不一致的,可自行了解
- restrict default notrap 表示不提供trap这个远程事件的记录,各种功能均正常
- ntpdate: adjust time server 10.10.10.10 offset 0.111339 sec
- ntpq -p 10.10.10.10:可以正常查询不受影响
- ntpdc -c monlist 10.10.10.10:可以正常查询不受影响
- restrict default nopeer
server host [key n] [version n] [prefer] [mode n] [minpoll n] [maxpoll n] [iburst]
- key:表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号(不常用,不需要关注)
- version:表示发往上层服务器的报文使用的版本号,n默认是3,可以是1或者2
(不常用,不需要关注) - mode:指定数据报文mode字段的值
(不常用,不需要关注) - prefer: 如果有多个server选项,具有该参数的服务器优先使用,优选是建议而非强制,如果提供的优选服务器效果比其他服务器差,那么Ntpd也会其他其他服务器作为主要同步源,而非优选的服务器
- minpoll: 指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-17
- maxpoll:指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-17
- iburst:当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒
** 常见问题:**
-
执行ntpdate 10.10.10.10时报错: no server suitable for synchronization
found,是因为10.10.10.10此时处于unsynchronised状态,因此不能接受别人的请求。思考:如果一个NTP集群全量重启,那么会有5min左右的时间是无法相应外界的请求 -
执行ntpdate 10.10.10.10时报错 the NTP socket is in use, exiting。是因为此时ntpd服务正在运行,因此ntpdata命令无法执行。需要先关闭ntpd服务后,才可以执行该命令。
-
ntpd服务如何打印日志,日志目录如何自动创建?如果是直接修改/etc/ntp.conf文件,那么是无法自行创建目录的,需要放到/var/log目录下;通过修改/etc/sysconfig/ntpd文件,添加如下内容即可自行创建目录
OPTIONS=“-g -l /var/log/ntpstats/ntpd.log”
-
同步硬件时钟: # vi /etc/sysconfig/ntpd 添加如下内容:
SYNC_HWCLOCK=yes
参考文章
http://linux.vbird.org/linux_server/0440ntp.php
思考场景
-
client的时间和server的时间相差较大的情况下
/etc/sysconfig/ntpd 添加-x参数,时钟偏差较大的话,Ntp进程会推出,并在/var/log/messages中提示相关内容:ntpd[44416]: 0.0.0.0 c617 07 panic_stop +52905747 s; set clock manually within 1000 s.如果没有添加参数,那么和-x的行为是一致的,进程退出
/etc/sysconfig/ntpd添加-g参数,时钟偏差较大的话,即使差距一两年,也能够快速同步回来,日志里面会显示:ntpd[45407]: 0.0.0.0 c61c 0c clock_step +52905746.707531 s ;systemd: Time has been changed,但ntpstat一直处于非同步状态,重启Ntpd服务后立即成为同步状态了
-
多个restrict规则生效的策略是从上到下检查,下面的策略会覆盖上面的策略
-
NTP是否适用于以LVS的方式对外提供服务?假设其集群间时间差异极小。或者说NTP官方的对外方式是哪种?不需要考虑说LB服务是否对UDP协议的良好支持能力
-
如何在ntpd服务端记录来自于client的请求
-
ntpd服务相关的运行信息如何获取
-
ntpdc -c monlist 查看请求相关的信息
-
ntpdc -c sysstats 查看运行相关的信息
-
ntpdc -c sysinfo
-
ntptime
-
ntpstat
synchronised to NTP server (210.72.145.44) at stratum 2 #本NTP服务器层次为2,已向210.72.145.44 NTP同步过
time correct to within 93 ms #时间校正到相差93ms之内
polling server every 1024 s #每1024秒会向上级NTP轮询更新一次时间
-
-
如何确保多台机器之间的时间差值在一定的范围内,目前看,时间的最大差值在4s
-
ntp服务选择时钟服务器的策略
每一层( Stratum )上的时钟源可向上一层或本层的时钟源请求时间校正 ,Stratum层的总数限制在15以内。Stratum-1的时间服务器是整个系统的基础