时钟源服务器配置:
时钟源服务器地址:10.253.47.201,用于和外部公共ntpd同步标准时间,同时作为内网的Server
/etc/ntp.conf:这个是NTP daemon的主要设文件,也是 NTP 唯一的设定文件
配置信息:cat /etc/ntp.conf
#系统时间和BIOS时间的偏差记录
driftfile /var/lib/ntp/drift
#restrict 控制相关权限。
#语法为: restrict IP地址 mask 子网掩码 参数
#其中IP地址也可以是default ,default 就是指所有的IP
#参数有以下几个:
#ignore :关闭所有的 NTP 联机服务
#nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
#notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
#noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器
#notrap :不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq #控制消息协议的子系统,用于远程事件日志记录程序。
#nopeer :用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟
#kod : 访问违规时发送 KoD 包。
#restrict -6 表示IPV6地址的权限设置。
#允许时钟源同步,客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时,不提供trap远端登陆,阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟,不提供客户端的时间查询
restrict default nomodify notrap nopeer noquery
#允许本机查询
restrict 127.0.0.1
restrict ::1
#允许内网所有机器(10.0.0.0/8)同步时间,如果不添加该约束默认允许所有IP访问本机同步服务
restrict 10.0.0.0 mask 255.0.0.0 nomodify
#外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0
fudge 127.127.1.0 stratum 10
#指定阿里时钟服务器地址作为上层的时钟源
server ntp1.aliyun.com iburst
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
logfile /var/log/ntp/ntp.log
客户端配置:
#检查ntpd服务是否安装,检查ntpd服务是否正常启动
rpm -qa | grep ntp
systemctl status ntpd
#修改配置文件/etc/ntp.conf:
#配置上游时间服务器为本地的ntpd Server服务器(添加)
server 10.253.47.201
#配置允许上游时间服务器主动修改本机的时间(添加)
restrict 10.253.47.201 nomodify notrap noquery
#下面这个配置,建议NTP Client关闭,建议NTP Server打开。因为Client如果打开,可能导致NTP自动选择合适的最近的NTP Server、也就有可能选择了LOCAL作为Server进行同步,而不与远程Server进行同步。
#server 127.127.1.0 # local clock (添加)
#fudge 127.127.1.0 stratum 10 (添加)
检查服务端是否正常运行ntp服务
1.查看服务状态: systemctl status ntpd
2.查看端口信息: netstat -ltunp | grep ntp
3.查看ntp服务有没有和上层ntp连通: ntpstat
常见的错误:
25 Apr 15:30:17 ntpdate[11520]: no server suitable for synchronization found
其实,这不是一个错误。而是由于每次重启NTP服务器之后大约要3-5分钟客户端才能与server建立正常的通讯连接。当此时用客户端连接服务端就会报这样的信息。一般等待几分钟就可以了。
4.查看ntp服务和上层ntp的状态:ntpq -p
remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由“+”则代表目前正在使用的时钟的上层NTP,如果是“*”则表示作为次要联机的NTP主机。
refid:参考的上一层NTP主机的地址
st:即stratum阶层
when:几秒前曾做过时间同步更新的操作
poll:下次更新在几秒之后
reach:已经向上层NTP服务器要求更新的次数
delay:网络传输过程钟延迟的时间
offset:时间补偿的结果
jitter:Linux系统时间与BIOS硬件时间的差异时间
5.手动同步时间:ntpdate -u ipaddr
6.查看ntp服务进程: ps -ef | grep ntpd
7.查看本地时间状态,时区: timedatectl status
ntpd和ntpdate的区别:
使用之前得弄清楚一个问题,ntpd与ntpdate在时间更新上有什么区别。ntpd不仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,同步方式是平滑同步,并不是像ntpdate那样立即同步,在生产环境中慎用ntpdate命令来同步时间,也正因如此两者不可同时运行。
ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday设置系统时间,由于是跳变,而不是改变时间流速来缓慢校正时钟,依赖时序的程序会出错(例如,如果ntpdate发现你的时间比时钟源快了,则可能会经历两个相同的时刻,对某些应用而言,这是不合理且致命的)。因此,唯一一个可以令时间发生跳变并且影响范围比较小的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,最合理的做法是使用ntpd服务来缓慢校准时钟,而不是使用ntpdate或者其他方式直接调整计算机时钟上的时间。
NTPD 在和时间服务器的同步过程中,会把 BIOS 计时器的振荡频率偏差——或者说 Local Clock 的自然漂移(drift)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。