? 推薦方案:使用 chrony
搭建 NTP 服務器(適用于 CentOS 7/8/9)
chrony
是 CentOS 推薦的 NTP 實現,精度高、資源占用低、同步快,默認在 CentOS 8+ 中取代了 ntpd
。
🔧 一、安裝 chrony
sudo yum install -y chrony
📁 二、修改配置 /etc/chrony.conf
sudo vi /etc/chrony.conf
找到并修改或添加以下內容:
1. 配置上游 NTP 服務器(可用公網 NTP)
例如:
server ntp.aliyun.com iburst server ntp.tencent.com iburst
2. 允許內網客戶端訪問本 NTP 服務器:
(假設客戶端在 192.168.1.0/24
網段)
allow 192.168.1.0/24
也可以使用 allow 0.0.0.0/0
表示允許所有地址訪問(不安全,慎用)
🔃 三、啟動并設置開機自啟
sudo systemctl enable chronyd sudo systemctl start chronyd
🔥 四、放通防火墻 UDP 123 端口
sudo firewall-cmd --add-service=ntp --permanent sudo firewall-cmd --reload
如果你沒有使用 firewalld
,用 iptables
:
sudo iptables -A INPUT -p udp --dport 123 -j ACCEPT sudo service iptables save
🔍 五、驗證本地是否在同步
chronyc tracking chronyc sources -v
查看是否監聽 123 端口:
sudo netstat -unlp | grep 123
應看到 chronyd
正在監聽 UDP 123。
🧪 六、客戶端如何使用你的服務器同步時間?
1. 確保 systemd-timesyncd
已安裝并啟用
Ubuntu / Debian
sudo systemctl enable systemd-timesyncd
sudo systemctl start systemd-timesyncd
CentOS(默認無 timesyncd
,建議改用 chrony
)
2. 編輯 timesyncd
配置
sudo vi /etc/systemd/timesyncd.conf
修改或添加:
[Time] NTP=你的服務器IP或域名
示例:
[Time] NTP=192.168.1.100
然后重啟服務:
sudo systemctl restart systemd-timesyncd
啟用 NTP 自動同步:
sudo timedatectl set-ntp true
3. 驗證是否同步成功
timedatectl status
應看到:
NTP service: active System clock synchronized: yes
還可以查看詳細信息:
timedatectl show-timesync --all
📌 七、補充說明:使用 ntpd(舊方法,不推薦)
若你堅持使用傳統 ntpd
:
sudo yum install ntp
sudo vi /etc/ntp.conf
修改:
server ntp.aliyun.com iburst
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
然后啟動服務并開啟端口:
sudo systemctl enable ntpd
sudo systemctl start ntpd
? 總結:搭建 NTP 服務器步驟(Chrony版)
步驟 | 命令或說明 |
---|---|
安裝服務 | yum install chrony |
編輯配置 | /etc/chrony.conf ,配置上游時間源 + allow 網段 |
啟動服務 | systemctl start chronyd |
開機自啟 | systemctl enable chronyd |
放通防火墻 | firewall-cmd --add-service=ntp --permanent |
客戶端連接 | server <服務器IP> iburst |