NTP协议
网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。
NTP服务器可以使局域网中主机的时间同步,应用于对实时性要求非常高的环境中。
需求
联网的服务器搭建NTP服务,其余两台局域网服务器通过NTP服务器实现时间同步。
环境:
NTP服务器两块网卡,因此两个地址:192.168.254.129,192.168.1.125
客户端:与NTP服务器局域网地址能通信
NTP服务安装
服务采用C/S模式,运行时监听UDP的123端口。
服务安装程序有两个,分别是ntp(服务器端)和ntpdate(客户端)。除最小化安装系统外,ntp程序默认已经安装到系统中。
yum install -y ntp ntpdate
配置文件位于:/etc/ntp.conf,在编辑之前,可以对其做一下备份
cp /etc/ntp.conf /etc/ntp.conf.bak
服务控制使用systemctl即可,start启动,stop关闭等等。
systemctl start ntpd
查看端口是否存在
netstat -anpu4 | grep 123
udp 0 0 192.168.122.1:123 0.0.0.0:* 4711/ntpd
udp 0 0 192.168.254.128:123 0.0.0.0:* 4711/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 4711/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 4711/ntpd
NTP服务器搭建
ntp.conf配置文件说明
配置项 | 作用 |
---|---|
notrust | 不接受没有经过认证的客户端的请求 |
ignore | 忽略所有类型的NTP连接请求 |
noquery | 不提供NTP网络校时服务 |
nomodify | 限制客户端不能使用命令ntpc和ntpq来修改服务器端的时间 |
notrap | 不接受远程登录请求 |
fudge | 设置时间服务器的层级 |
server | 指定其他NTP服务器的地址 |
restrict | 允许上层时间服务器修改本机时间 |
将过滤后的配置文件覆盖源文件
grep -v '^$' /etc/ntp.conf | grep -v '^#' > ntp.conf
cat ntp.conf > /etc/ntp.conf
接下来,开始对配置文件进行修改,通过http://www.ntp.org.cn/pool.php或https://www.ntppool.org/zone/cn来指定中国权威NTP服务器域名。
driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery #禁止远程主机修改本机
restrict 127.0.0.1 #允许本机修改时间
restrict ::1
server 0.cn.pool.ntp.org #四个均为权威NTP服务器域名
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org
server 127.127.1.0 #权威NTP不可用时,本机时间作为时间服务
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
之后将服务暂时关闭,将时间修改为错误时间,然后通过ntpdate命令同步权威NTP服务器,因为本机是服务器端,不将其服务关闭无法使用客户端工具进行时间同步。
命令语法:ntpdate 域名或IP
date -s '2020-1-1 5:55:55'
2020年 01月 01日 星期三 05:55:55 CST
systemctl stop ntpd
现在已经将本机时间修改为错误时间了,然后通过ntpdate命令进行时间同步,同步的服务器为配置文件中权威服务器任意一个即可。
ntpdate 3.cn.pool.ntp.org
4 May 13:47:44 ntpdate[5925]: adjust time server 94.130.49.186 offset 0.017917 sec
date
2020年 05月 04日 星期一 13:49:11 CST
同步完成后,时间恢复正确,之后把NTP服务启动
systemctl start ntpd
客户端测试
局域网测试机进行时间同步,若没有ntpdate命令,安装一下ntpdate即可。
date -s '2000-1-1 4:44:44'
2000年 01月 01日 星期六 04:44:44 CST
ntpdate 192.168.1.125
4 May 14:02:44 ntpdate[2864]: step time server 192.168.1.125 offset 641899072.284345 sec
date
2020年 05月 04日 星期一 14:03:02 CST
以上NTP时间同步服务器搭建完成。