第1章 NTP服务介绍
1.1 使用NTP服务的原因
时间对服务器之间的通信及信息交流非常的关键, 一般情况我们可以同步公网的时间服务器,例如ntp1.aliyun.com,但是当机器比较多(百台或千台)同步公网服务器会造成延迟,导致时间同步不准确,所以建议内网搭建一台时间服务器,然后我们让所有的机器去同步它。
NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
NTP服务器就是利用NTP协议提供时间同步服务的。
1.2 搭建NTP服务器
提示:参考资料:http://blog.oldboyedu.com/ntp/
1.2.1 系统环境
[root@m01 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@m01 ~]# uname -r 2.6.32-696.el6.x86_64 [root@m01 ~]# rpm -qa ntp ntp-4.2.6p5-10.el6.centos.2.x86_64 #CentOS6.9最小化安装时已经自带ntp软件,但此版本ntp存在高危漏洞 # 注释定时任务中的时间同步 [root@m01 ~]# crontab -e #*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
提示:NTP漏洞相关信息:http://blog.nsfocus.net/ntp-multiple-vulnerability-notifications/
1.2.2 yum安装NTP软件
[root@m01 ~]# yum install -y ntp
1.2.3 升级NTP软件到ntp-4.2.8p10
1.2.3.1 安装依赖文件
[root@m01 ~]# yum install -y libstdc++* libcap*
1.2.3.2 升级openssl
[root@m01 ~]# cd /server/tools/ [root@m01 tools]# tar xf openssl-1.1.0f.tar.gz [root@m01 tools]# cd openssl-1.1.0f [root@m01 openssl-1.1.0f]# ./config [root@m01 openssl-1.1.0f]# make && make install
1.2.3.3 备份ntp相关配置文件
[root@m01 ~]# cp -a /etc/ntp /etc/ntp.bak [root@m01 ~]# cp /etc/ntp.conf /etc/ntp.conf.bak [root@m01 ~]# cp /etc/init.d/ntpd /etc/init.d/ntpd.bak [root@m01 ~]# cp /etc/sysconfig/ntpd /etc/sysconfig/ntpd.bak [root@m01 ~]# cp /etc/sysconfig/ntpdate /etc/sysconfig/ntpdate.bak
1.2.3.4 卸载低版本的ntp和ntpdate
[root@m01 tools]# yum remove -y ntp ntpdate
1.2.3.5 创建ntp进程文件目录
[root@m01 ~]# install -v -m710 -o ntp -g ntp -d /var/lib/ntp
1.2.3.6 编译安装NTP软件
[root@m01 ~]# cd /server/tools/ [root@m01 tools]# tar xf ntp-4.2.8p10.tar.gz [root@m01 tools]# cd ntp-4.2.8p10 [root@m01 ntp-4.2.8p10]# ./configure --prefix=/usr --bindir=/usr/sbin --sysconfdir=/etc --enable-linuxcaps --with-lineeditlibs=readline --docdir=/usr/share/doc/ntp-4.2.8p10 --enable-all-clocks --enable-parse-clocks [root@m01 ntp-4.2.8p10]# make && make install
1.2.3.7 还原ntp相关配置文件
[root@m01 ~]# cp -a /etc/ntp.bak /etc/ntp [root@m01 ~]# cp /etc/ntp.conf.bak /etc/ntp.conf [root@m01 ~]# cp /etc/init.d/ntpd.bak /etc/init.d/ntpd [root@m01 ~]# cp /etc/sysconfig/ntpd.bak /etc/sysconfig/ntpd [root@m01 ~]# cp /etc/sysconfig/ntpdate.bak /etc/sysconfig/ntpdate
1.2.4 配置NTP服务
[root@m01 ~]# vim /etc/ntp.conf 8 restrict default nomodify # 控制时间服务器的同步权限 22 server ntp1.aliyun.com # 配置上级时间服务器 23 server www.ntp.org 24 server time.nist.gov 25 server pool.ntp.org # 或 [root@m01 ~]# sed -i.bak '8s#restrict.*noquery#restrict default nomodify#;22,25d;21a server ntp1.aliyun.com\nserver www.ntp.org\nserver time.nist.gov\nserver pool.ntp.org' /etc/ntp.conf
1.2.5 启动NTP服务
[root@m01 ~]# service ntpd start
1.2.5.1 查看上游时间服务器的状态
[root@m01 ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== time5.aliyun.co 10.137.38.86 2 u 49 64 1 54.204 5763359 0.000 www.ntp.org .INIT. 16 u - 64 0 0.000 0.000 0.000 time-d.nist.gov .INIT. 16 u - 64 0 0.000 0.000 0.000 202.118.1.130 202.118.1.47 2 u 39 64 1 41.584 5763359 0.000
1.2.5.2 查看时间同步状态
# ntpstat命令只有ntp-4.2.6p5版本中有,升级后的新版ntp中已经没有这个命令了 [root@m01 ~]# ntpstat synchronised to NTP server (182.92.12.11) at stratum 3 time correct to within 968 ms polling server every 64 s # 升级后的ntp使用ntp-wait命令查看同步状态 [root@m01 ~]# ntp-wait -v Waiting for ntpd to synchronize... OK!
1.2.5.3 查看ntp服务使用的端口(123)及网络协议(udp)
[root@m01 ~]# netstat -lntup | grep ntp udp 0 0 172.16.1.61:123 0.0.0.0:* 98663/ntpd udp 0 0 10.0.0.61:123 0.0.0.0:* 98663/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 98663/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 98663/ntpd udp 0 0 fe80::20c:29ff:fe8a:a77c:123 :::* 98663/ntpd udp 0 0 fe80::20c:29ff:fe8a:a772:123 :::* 98663/ntpd udp 0 0 ::1:123 :::* 98663/ntpd udp 0 0 :::123 :::* 98663/ntpd
1.2.6 客户端配置时间同步
[root@web01 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 172.16.1.61 &>/dev/null
提示:由于ntp服务和ntpdate一起使用会产生冲突,所以为了安全使用,仅在时间服务器上使用ntp服务,其他服务器均采用ntpdate方式向NTP服务同步时间。

我的微信
如果有技术上的问题可以扫一扫我的微信