تنظیم زمان در لینوکس
سرورت همیشه رو وقت باشه!
اگر سرورت داره با ساعت خودش حال میکنه و هر روز یه تایم نشون میده، بدون که وقتشه یه دستی به سر و گوش تایمسرورش بکشی
در دنیای دیجیتال، زمان فقط یه عدد نیست! هر لاگ، هر تراکنش، هر بسته داده، به زمان دقیق وابستهست.
اینجا یاد میگیری چطور کاری کنی سرور لینوکست همیشه ساعت درست داشته باشه — بدون غر زدن و «تاخیر».
چرا ساعت دقیق تو لینوکس مهمه؟
یه سرور با ساعت اشتباه، مثل رانندهایه که GPSش دو ساعت عقبه!
اگر ساعت درست نباشه:
لاگها بهم میریزن و دیباگ سخت میشه.
تو شبکههای چندسروره، همگامسازی دادهها قاطی میکنه.
سیستمهای امنیتی (SSL, Kerberos, Audit) ممکنه خطا بدن.
پس وقتشه سرورت همیشه on time باشه!
قدم اول: آشنایی با NTP (Network Time Protocol)
NTP یعنی همون جادوگری که ساعت همهی سرورها رو هماهنگ میکنه.
کارش اینه که زمان رو از یه منبع معتبر (مثل سرورهای pool.ntp.org) بگیره و سرور تو هم با اون تنظیم بشه.
مثل اینکه هر روز صبح بری ساعتتو با ساعت بیبیسی تنظیم کنی 😅
قدم دوم: نصب سرویس NTP یا Chrony
💻 روی Debian / Ubuntu:
sudo apt update
sudo apt install ntp -y
💻 روی RHEL / CentOS / Fedora:
sudo dnf install chrony -y
🔹 توصیه: در توزیعهای جدید بهتره از Chrony استفاده کنی.
چون سریعتر، دقیقتر و برای سرورهای مجازی هم پایدارتره.
قدم سوم: پیکربندی NTP
📁 اگر از ntpd استفاده میکنی:
فایل تنظیمات: /etc/ntp.conf
نمونه تنظیم تمیز:
driftfile /var/lib/ntp/ntp.drift
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
⏰ اگر از chrony استفاده میکنی:
فایل تنظیمات: /etc/chrony.conf
نمونه پیکربندی استاندارد:
pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1 -1
logdir /var/log/chrony
قدم چهارم: فعالسازی و اجرا
برای ntp:
sudo systemctl enable ntp
sudo systemctl start ntp
برای chrony:
sudo systemctl enable chronyd
sudo systemctl start chronyd
چک کن که سرویس فعاله:
systemctl status chronyd
قدم پنجم: بررسی وضعیت تایمسرور
برای ntp:
ntpq -p
برای chrony:
chronyc sources
اگه کنارش علامت * دیدی یعنی اون منبع الان فعاله و ساعتت باهاش سینک شده.
هرچی offset و jitter پایینتر باشن، یعنی زمان دقیقتره.
تنظیم منطقه زمانی (Time Zone)
بعضی وقتا ساعت درسته ولی منطقه اشتباهه 😅
مثلاً ساعت نشون میده ۱۰ صبح ولی تو ایران ساعت ۱:۳۰ ظهره!
برای تنظیم:
sudo timedatectl set-timezone Asia/Tehran
برای بررسی:
timedatectl
نکات امنیتی و حرفهای
🔐 حتماً دسترسیها رو در فایل کانفیگ محدود کن تا هر کسی نتونه به سرورت درخواست NTP بده.
🔥 پورت UDP 123 رو فقط برای سرورهای مجاز باز بذار.
🧩 اگر از ماشین مجازی استفاده میکنی، از sync خود hypervisor غیرفعال کن تا تداخل نداشته باشه.
📈 برای مانیتورینگ از ابزارهایی مثل Prometheus Node Exporter یا Zabbix برای زمان استفاده کن.
| مشکل | دلیل | راهحل |
|---|---|---|
| ساعت درست نمیشه | پورت UDP 123 بستهست | بررسی با ufw allow 123/udp یا firewall-cmd |
| ساعت به مرور عقب میمونه | سرور NTP کند یا بیثباته | سرور NTP بهتری انتخاب کن (مثل time.google.com) |
| ماشین مجازی زمان رو میپرونه | تداخل با sync مجازیساز | همگامسازی VM رو غیرفعال کن |
| منطقه زمانی اشتباهه | timezone نادرسته | با timedatectl set-timezone اصلاح کن |
جمعبندی
اگه تا اینجا اومدی، یعنی ساعت سرورت از این به بعد قراره مثل ساعت اتمی دقیق باشه 😎
یادت باشه:
از NTP یا Chrony استفاده کن.
منابع زمانی مطمئن انتخاب کن.
سرویس رو فعال و مانیتور کن.
timezone رو درست تنظیم کن.
و تمام! حالا سرورت دیگه هیچوقت نمیگه:
«شرمنده، ساعت از دستم در رفت!» 😂