๐ง Linux NTP ๆ้ๅๆญฅๆๅๆๅญธ:Chrony ่ systemd-timesyncd ่จญๅฎๅ จๆป็ฅ
ๆ้ๅๆญฅๆฏๆๆ็ณป็ตฑ่็ถฒ่ทฏๆๅ็ๅบๅบง——ๅฝฑ้ฟ ๆ่ญๆๆๆ、ๆฅ่ชๆ้็ท、ๅข้ไธ่ดๆง ่ ๅฎๅ จไบไปถ่ฟฝๆฅ。ๆฌๆไปฅ Chrony ่ systemd-timesyncd ็บไธป,ๆไพ「็จไฝ NTP Client」่「ๅปบ็ฝฎ LAN ๅ ง้จ NTP Server」็ๅฎๆด่จญๅฎ่ๆ้ฏๆธ ๅฎ。
๐ ็ฎ้
- ไธ、Chrony vs systemd-timesyncd:ๆ้บผ้ธ?
- ไบ、NTP Client ่จญๅฎ(ๆ็ญ่ทฏๅพ)
- ไธ、ๅ ง้จ NTP Server ๅปบ็ฝฎ(ๅฐ LAN ๆไพๅๆญฅ)
- ๅ、้ฉ่ญ่็ฃๆงๆไปค
- ไบ、ๅฎๅ จๅปบ่ญฐ่ๆไฝณๅฏฆๅ
- ๅ ญ、ๅธธ่ฆๅ้กๆๆฅๆธ ๅฎ
- ไธ、ๅฟซ้ Recipes:Ubuntu / Debian / RHEL / Rocky
ไธ、Chrony vs systemd-timesyncd:ๆ้บผ้ธ?
- Chrony:ๅ่ฝๅฎๆด,ไผบๆๅจ/ๅฎขๆถ็ซฏ ้ฝ่ฝๅไปป,ๆๅไฟฎๆญฃๅฟซ、ๆฏๆด้ข็ทๅพ่ฟฝ่ถ,ไผๆฅญๅปบ่ญฐ้ ่จญ。
- systemd-timesyncd:่ผ้ NTP client(ไธๆไพ NTP ๆๅ็ตฆไปไบบ),ๆก้ข/ๅฎนๅจๅพๅค ็จ。
ไบ、NTP Client ่จญๅฎ(ๆ็ญ่ทฏๅพ)
ๆนๆก A:ไฝฟ็จ Chrony(ๅปบ่ญฐ)
# Ubuntu/Debian
sudo apt update && sudo apt install -y chrony
# RHEL/Rocky/Alma
sudo dnf install -y chrony
# ่จญๅฎไธๆธธ(ไปฅ pool.ntp.org ็บไพ;ไผๆฅญๅฏๆนๅ
ง้จ NTP ไธปๆฉ)
sudo sed -i 's/^pool .*/pool tw.pool.ntp.org iburst/' /etc/chrony/chrony.conf
sudo systemctl enable --now chronyd
sudo timedatectl set-ntp true # ็ขบไฟ็ฑ NTP ๅๆญฅ
ๆนๆก B:ไฝฟ็จ systemd-timesyncd(ๅ client)
# ๅฎ่ฃ/ๅ็จ(ๅคๆธ็ผ่ก็ๅ
งๅปบ)
sudo systemctl unmask systemd-timesyncd
sudo systemctl enable --now systemd-timesyncd
# ๆๅฎไธๆธธ NTP
sudo bash -c 'cat >/etc/systemd/timesyncd.conf<<EOF
[Time]
NTP=tw.pool.ntp.org
FallbackNTP=time.google.com ntp.ubuntu.com
EOF'
sudo systemctl restart systemd-timesyncd
ไธ、ๅ ง้จ NTP Server ๅปบ็ฝฎ(ๅฐ LAN ๆไพๅๆญฅ)
ไฝฟ็จ Chrony ๆๅฎ็ด;timesyncd ไธๆไพๅฐๅคๆๅ。
# 1) ๅฎ่ฃ
sudo dnf/apt install -y chrony
# 2) ่จญๅฎ /etc/chrony/chrony.conf
# - ๆๅฎไธๆธธ;ๅ
่จฑๅ
ง็ถฒ;ๅ็จๆฌๅฐๅ่(้ธๆๆง)
pool tw.pool.ntp.org iburst
allow 192.168.0.0/16
# ๅฆๆไฝ ่ฆๅจๅค็ถฒไธ้ๆๆไพๆซๆๆ้,ๅๆถ่จป่งฃไธ่ก(ๆ
็จ)
# local stratum 10
# 3) ๅ็จๆๅ
sudo systemctl enable --now chronyd
# 4) ้ฒ็ซ็้ๆพ NTP (UDP/123)
# firewalld
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload
# ufw
sudo ufw allow 123/udp
ๅ่จป:SELinux ้ ่จญๅ
่จฑ chronyd;่ฅ่ช่จ่ทฏๅพๆ้กๅค้ๅถ,่ซๆชขๆฅ audit ๆฅ่ชๅพๅไปฅ semanage ่ชฟๆด。
ๅ、้ฉ่ญ่็ฃๆงๆไปค
# ๆฏๅฆ็ฑ NTP ๆงๅถ
timedatectl
# Chrony ไพๆบ่ๅๆญฅ็ๆ
chronyc sources -v
chronyc tracking
chronyc sourcestats
# ็ณป็ตฑๆ่จๅ็งป/ๆญฅ้ฒ็ด้
journalctl -u chronyd --since "today"
ไบ、ๅฎๅ จๅปบ่ญฐ่ๆไฝณๅฏฆๅ
- Server ๅ
allowๅ ง้จ็ถฒๆฎต;ๅค้จไธปๆฉ่ซๆน่ตฐไธๆธธ(pool / ISP NTP)。 - ไฝฟ็จๅคๅไธๆธธ(ๅ
ฌ็ถฒ + ๆฌๅฐ ISP)ไธฆๅ
iburstๆๅๆถๆ้ๅบฆ。 - ่ๆฌๅ/ๅฎนๅจ็ฐๅข:ๅชๅ ไปฅ ๅฎฟไธปๆฉ ็ฒ NTP ไพๆบ,้ฟๅ ๅฑคๅฑคๅปถ้ฒ。
- ้้ต็ณป็ตฑๆดๆฐ BIOS/RTC ๅพ,้ฉ่ญ
timedatectlๆฏๅฆไป็ฑ NTP ๆงๅถ。
ๅ ญ、ๅธธ่ฆๅ้กๆๆฅๆธ ๅฎ
- ⛔ UDP/123 ่ขซๆ:ๆชขๆฅ
firewalld/ufw、้็้ฒ็ซ็ ACL。 - ๐ NTP ไพๆบไธๅฏ้:ๆดๆ
pool,ๆๅ ๅ ฅtime.google.com/ntp.ubuntu.com。 - ๐ ๆๅ่ก็ช:ไธ่ฆๅๆๅ็จ
chronyd่systemd-timesyncd。ไฟ็ๅ ถไธ。 - ⏱️ ๆ้ๅคงๅน
ๆผ็งป:็ฌฌไธๆฌกๅฏๅ
่จฑๆญฅ้ฒ(chrony ๆ่ชๅ่็),ๆๆๅ
sudo hwclock -wๅๆญฅ RTC。
ไธ、ๅฟซ้ Recipes:Ubuntu / Debian / RHEL / Rocky
Ubuntu / Debian(Server + Client)
sudo apt update && sudo apt install -y chrony
sudo sed -i 's/^pool .*/pool tw.pool.ntp.org iburst/' /etc/chrony/chrony.conf
echo "allow 192.168.0.0/16" | sudo tee -a /etc/chrony/chrony.conf
sudo systemctl enable --now chronyd
sudo ufw allow 123/udp
chronyc tracking && chronyc sources -v
RHEL / Rocky / Alma(Server + Client)
sudo dnf install -y chrony
sudo sed -i 's/^pool .*/pool tw.pool.ntp.org iburst/' /etc/chrony.conf
echo "allow 192.168.0.0/16" | sudo tee -a /etc/chrony.conf
sudo systemctl enable --now chronyd
sudo firewall-cmd --add-service=ntp --permanent && sudo firewall-cmd --reload
chronyc tracking && chronyc sources -v
๐งญ ่กๅๆธ ๅฎ
✅ ้ธๅฎๆนๆก:Server ็จ Chrony、ๅทฅไฝ็ซๅฏ็จ timesyncd ✅ ่จญๅฎไธๆธธ pool ่ allow ๅ ง็ถฒๆฎต ✅ ้ๅ้ฒ็ซ็ UDP/123 ไธฆ้ฉ่ญ chronyc tracking/sources ✅ ๅฐๆฌๆฉ่จญ็บๅ ง้จ NTP,ๅ ถไปไธปๆฉๆนๆๅๅฎ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ