NTP服务器Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,CentOS 8.x默认不支持NTP,替换为Chrony作为时间同步服务,Chrony既可以当服务器端广播时间,又可以作为客户端同步时间。
系统安装
1、CentOS 7.x系统安装配置图解教程
http://www.osyunwei.com/archives/10003.html
2、CentOS 8.x系统安装配置图解教程
https://www.osyunwei.com/archives/11499.html
准备篇
一、防火墙配置
CentOS 7.x 8.x默认使用的是firewall作为防火墙,这里改为iptables防火墙。
Chrony服务器端需要用到udp 123和323端口,因此服务器端防火墙需要打开此端口,客户端则不需要。
1、关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
systemctl mask firewalld
systemctl stop firewalld
yum remove firewalld
2、安装iptables防火墙
软件包下载地址:
上传到目录:/usr/local/src
cd /usr/local/src
安装 iptables-services:
CentOS 8.x rpm -ivh iptables-services-1.8.4-10.el8.x86_64.rpm
CentOS 7.x rpm -ivh iptables-services-1.4.21-35.el7.x86_64.rpm
vi /etc/sysconfig/iptables #编辑防火墙配置文件
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 123 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 323 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出
systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
/usr/libexec/iptables/iptables.init restart #重启防火墙
二、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
三、关闭交换分区
#执行以下命令
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
free -m
四、设置时区和时间
rm -rf /etc/localtime #先删除默认的时区设置
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #替换上海/北京作为默认
vi /etc/sysconfig/clock #添加时区
Zone=Asia/Shanghai
:wq! #保存退出
timedatectl set-local-rtc 0
hwclock --systohc -u #系统时钟和硬件时钟同步,当前系统时区不为 UTC,是CST时间,所有要加-u参数
date #显示系统时间
date -s "2022-05-15 14:15:00" #修改时间
安装篇
一、安装部署Chrony服务端,以CentOS 8.x为例
1、Chrony下载
CentOS 8.x https://vault.centos.org/8.2.2004/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm
CentOS 7.x https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/chrony-3.4-1.el7.x86_64.rpm
上传到目录:/usr/local/src
2、安装Chrony
cd /usr/local/src
CentOS 8.x rpm -ivh chrony-3.5-1.el8.x86_64.rpm
CentOS 7.x rpm -ivh chrony-3.4-1.el7.x86_64.rpm
systemctl start chronyd #启动
systemctl restart chronyd #重启
systemctl status chronyd #查看状态
systemctl enable chronyd #开机自启动
3、配置chrony服务器端
cp /etc/chrony.conf /etc/chrony.conf-bak
vi /etc/chrony.conf #编辑
#pool 2.centos.pool.ntp.org iburst #注释掉
server 192.168.21.182 iburst #添加ntp服务器地址,这里设置为服务端ip地址
allow 192.168.21.0/24 #允许IP段内的客户端通过这台服务器获取时间
local stratum 10 #必须设置,否则内网NTP时间服务同步失败,允许客户端从本地网络访问,即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它客户端
:wq! #保存退出
systemctl restart chronyd #重启
chronyc sources -v #查看同步状态
^* centos-8.2 10 6 377 363 +6148ns[+8237ns] +/- 11us
^* 表示服务端部署成功
ss -tlunp | grep chrony #查看监听端口
发现chrony服务已经在监听123和323的udp端口,服务端配置成功。
二、安装部署Chrony客户端,以CentOS 7.x为例
客户端和服务器端安装是相同的,主要区别是配置文件不同。
客户端的版本软件不能高于服务端的版本。
配置chrony客户端,
cp /etc/chrony.conf /etc/chrony.conf-bak
vi /etc/chrony.conf #编辑
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst #注释掉
server 192.168.21.182 iburst #添加ntp服务器地址,这里设置为服务端ip地址
maxdistance 600.0
:wq! #保存退出
systemctl restart chronyd #重启
chronyc sources -v #查看同步状态
^* 192.168.21.182 11 6 17 0 -10us[ -212us] +/- 108ms
^* 表示时间同步成功,192.168.21.182是我们部署的NTP时间服务器ip地址
三、测试NTP时间服务器
1、在服务端手动修改时间
timedatectl set-ntp false #先关闭NTP同步
timedatectl set-time "2022-05-16 15:15:15"
timedatectl set-ntp true # 打开NTP同步
chronyc -a makestep #立即手工同步
2、在客户端执行同步
chronyc sources -v #查看时间同步源
chronyc -a makestep #立即手工同步
systemctl restart chronyd #重启
chronyc tracking #校准时间服务器
3、在客户端手动修改时间
timedatectl set-ntp false #先关闭NTP同步
timedatectl set-time "2022-05-16 15:15:15"
date #可以看到客户端时间已经修改
timedatectl set-ntp true # 打开NTP同步,时间会从服务端自动同步
watch -n 1 date #显示实时时间
至此,CentOS使用Chrony部署内网NTP时间服务器完成。
扩展阅读:
1、CentOS 8.x官方已经停止维护,不再提供yum支持,但软件包仍然在https://vault.centos.org上保留,如果继续使用CentOS 8.x,可以在/etc/yum.repos中修改源,用vault.centos.org替换mirror.centos.org,执行以下命令即可。
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS*
2、CentOS 7.x在使用ssh远程连接的时候速度很慢,需要调整ssh配置参数
vi /etc/ssh/sshd_config
GSSAPIAuthentication no
UseDNS no
:wq! #保存退出
systemctl restart sshd #重启ssh,再次连接会发现速度明显提升。