پرش به محتوا

همگام‌سازی دقیق زمان با Chrony

سرویس chrony را به‌جای systemd-timesyncd راه بیندازید، سرور زمان داخلی تعیین کنید و در صورت نیاز سرور را منبع زمان شبکه کنید.

Ubuntu 24.04 LTSسطح: مقدماتیبرای: Ubuntu 24.04 LTS، Ubuntu 26.04 LTS، Ubuntu 22.04 LTSبه‌روزرسانی: ۱۶ آبان ۱۴۰۵

Ubuntu به‌طور پیش‌فرض از systemd-timesyncd استفاده می‌کند که فقط کلاینت ساده است. برای سرورها، به‌خصوص اگر قرار است منبع زمان بقیه‌ی دستگاه‌ها باشند، chrony دقیق‌تر و انعطاف‌پذیرتر است. (در نسخه‌های جدیدتر Ubuntu، chrony خودش پیش‌فرض است.)

۱. نصب

نصب chrony به‌طور خودکار timesyncd را کنار می‌گذارد:

bash
sudo apt update
sudo apt install -y chrony
systemctl status chrony --no-pager

۲. انتخاب منبع زمان

bash
sudo nano /etc/chrony/chrony.conf

خطوط pool موجود را با منابع مورد نظرتان جایگزین کنید. اگر سرور زمان داخلی دارید، آن را با prefer اول بگذارید:

ini
server 192.168.10.5 iburst prefer
pool ntp.ubuntu.com iburst maxsources 2

۳. اعمال و بررسی

bash
sudo systemctl restart chrony
chronyc sources -v
chronyc tracking

در خروجی tracking، مقدار System time اختلاف ساعت محلی با منبع را نشان می‌دهد؛ باید در حد میلی‌ثانیه باشد.

۴. اصلاح فوری یک ساعت خیلی عقب

chrony به‌طور پیش‌فرض ساعت را آرام‌آرام اصلاح می‌کند. اگر اختلاف خیلی زیاد است:

bash
sudo chronyc makestep

۵. سرور زمان برای شبکه‌ی داخلی

ini
# /etc/chrony/chrony.conf
allow 192.168.10.0/24
local stratum 10

local stratum 10 باعث می‌شود اگر اینترنت قطع شد، این سرور همچنان به کلاینت‌ها زمان بدهد.

bash
sudo systemctl restart chrony
sudo ufw allow from 192.168.10.0/24 to any port 123 proto udp

از یک کلاینت:

bash
chronyc -h 192.168.10.5 tracking