第二章的时间服务
配置客户端:这台客户端从我们刚刚配置好的时间服务器同步时间。
实验环境假设
时间服务器 IP 地址:192.168.117.128/24 brd 192.168.117.255 (请根据您的实际网络环境修改)
客户端主机 IP 地址:192.168.117.129/24 brd 192.168.117.255 (请根据您的实际网络环境修改)
操作系统:以 CentOS 7/8 或 RHEL 7/8 为例,其他发行版(如 Ubuntu)命令类似,但服务管理命令和配置文件路径可能不同。
第一部分:配置自定义时间服务器 (IP: 192.168.117.128/24)
步骤 1: 安装 NTP 服务软件
在作为时间服务器的虚拟机上,需要安装 chrony 或 ntpd。chrony 是现代Linux发行版(如CentOS 7+)推荐的默认时间同步服务,它更快、更精确。
# 使用 yum 或 dnf 安装 chrony
sudo yum install -y chrony
# 或者
sudo dnf install -y chrony
步骤 2: 配置 chrony 服务
chrony 的主配置文件是 /etc/chrony.conf。我们需要修改它,以实现从公网同步并允许客户端查询。
备份原始配置文件(好习惯)
sudo cp /etc/chrony.conf /etc/chrony.conf.bak
编辑配置文件
sudo vi /etc/chrony.conf
修改以下关键配置项:
指定上游时间服务器:找到 pool 或 server 开头的行,注释掉默认的公共池,并添加阿里云的NTP服务器。
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# pool 2.centos.pool.ntp.org iburst <-- 注释掉或删除这行
# 添加阿里云NTP服务器
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
允许客户端查询:找到 allow 相关的行,取消注释并修改为你希望允许同步的客户端网段。这会允许该网段的主机向此服务器查询时间。
# Allow NTP client access from local network.
# allow 192.168.117.128/24<-- 修改为你的网段
allow 192.168.117.128/24
安全提示:allow 指令应尽量精确,不要使用 allow all,以避免成为开放的时间服务器。
(可选)开启本地时钟支持:如果服务器与公网断开,可以让它以本地时间为准继续提供服务。
# Serve time even if not synchronized to a time source.
local stratum 10
步骤 3: 启动并设置开机自启
# 启动 chronyd 服务
sudo systemctl start chronyd
# 设置 chronyd 开机自启
sudo systemctl enable chronyd
步骤 4: 配置防火墙
时间服务使用 UDP 的 123 端口。必须在服务器的防火墙中开放此端口,以允许客户端访问。
# 如果使用 firewalld (CentOS 7+ 默认)
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload
# 如果使用 iptables
sudo iptables -A INPUT -p udp --dport 123 -j ACCEPT
# 记得保存 iptables 规则
步骤 5: 验证服务器状态
检查服务状态:
sudo systemctl status chronyd
应该显示 active (running)。
检查时间同步源:
chronyc sources -v
你应该能看到 ntp.aliyun.com 等服务器,并且它们的状态前有一个 ^* 符号,表示当前正在同步的源。
检查同步状态:
chronyc tracking
查看 Stratum(层级)和 Last offset(最后偏移量)等信息,确认同步正常。
至此,你的自定义时间服务器已经配置完成并正在运行。
第二部分:配置客户端主机 (IP:192.168.117.129/24 )
现在,我们在另一台虚拟机上配置它,让它从我们的时间服务器 192.168.117.128/24 同步时间。
步骤 1: 安装 NTP 客户端软件
客户端同样需要 chrony 软件包。
sudo yum install -y chrony
步骤 2: 配置 chrony 客户端
备份并编辑配置文件
sudo cp /etc/chrony.conf /etc/chrony.conf.bak
sudo vi /etc/chrony.conf
修改配置:注释掉所有公网的 pool 或 server 行,然后添加我们自己的时间服务器地址。
# pool 2.centos.pool.ntp.org iburst <-- 注释掉
# 指向我们的自定义时间服务器
server 192.168.117.128/24 iburst
步骤 3: 启动并设置开机自启
sudo systemctl start chronyd
sudo systemctl enable chronyd
步骤 4: 验证客户端同步状态
检查同步源:
chronyc sources -v
你应该能看到你的时间服务器 192.168.117.128/24,并且状态前有 ^*。
手动同步一次(可选):
sudo chronyc -a makestep
这个命令会强制客户端立即与服务器同步时间。
检查时间:
date
对比客户端和服务器的 date 命令输出,确保时间一致。
总结与排错
核心命令:
服务器端:yum install chrony -> vi /etc/chrony.conf -> systemctl start chronyd -> firewall-cmd --add-service=ntp。
客户端端:yum install chrony -> vi /etc/chrony.conf -> systemctl start chronyd。
排错技巧:
服务器端:chronyc sources -v 看是否能连上 ntp.aliyun.com。chronyc tracking 看同步状态。
客户端:chronyc sources -v 看是否能连上你的服务器IP。
网络问题:在客户端上 ping 192.168.117.128/24 确保网络通畅。
防火墙问题:在服务器上 sudo firewall-cmd --list-all 检查 ntp 服务是否已添加。
日志查看:sudo journalctl -u chronyd -f 可以实时查看 chrony 的日志,帮助定位问题。