نصب و راه‌اندازی یک NTP Server (Network Time Protocol Server) داخلی برای شبکه‌ها یکی از کارهای مهم در مدیریت شبکه‌های سازمانی است. این سرویس به‌ویژه برای هم‌زمان کردن ساعت سیستم‌های مختلف در شبکه اهمیت زیادی دارد، چرا که زمان دقیق برای بسیاری از پروسه‌ها مانند لاگ‌ها، کرون‌جوب‌ها، امنیت شبکه و هماهنگی در ارتباطات ضروری است.
در اینجا، یک آموزش کامل و دقیق برای نصب و راه‌اندازی NTP Server داخلی برای شبکه‌ها آورده شده است.
بخش اول: مقدمه‌ای بر NTP و اهمیت آن
NTP (Network Time Protocol) یک پروتکل است که برای هم‌زمان‌سازی ساعت سیستم‌ها از طریق یک شبکه کامپیوتری طراحی شده است. این پروتکل از دقت بسیار بالایی برخوردار است و می‌تواند ساعت سیستم‌های مختلف را تا میکروثانیه هم هماهنگ کند. اگر در شبکه شما چندین سرور و دستگاه وجود داشته باشد، برای جلوگیری از بروز مشکلاتی مانند اختلاف ساعت بین سرورها و تجهیزات مختلف، نصب یک NTP Server داخلی توصیه می‌شود.
بخش دوم: اجزای NTP
  • NTP Client: هر دستگاهی که ساعت خود را از یک سرور NTP همگام‌سازی می‌کند.
  • NTP Server: سروری که به دستگاه‌ها و سیستم‌ها امکان هم‌زمان‌سازی ساعت را می‌دهد.
  • Stratum: سطحی که سرورهای NTP دارند. Stratum 0 معمولاً شامل ساعت‌های دقیق مانند ساعت‌های اتمی است، و هر سرور NTP که از آن زمان می‌گیرد، Stratum 1 محسوب می‌شود.
بخش سوم: پیش‌نیازها
برای نصب و راه‌اندازی NTP Server، به موارد زیر نیاز خواهید داشت:
1. یک سیستم عامل  
2. دسترسی root یا sudo برای نصب و پیکربندی سرویس‌ها.
3. اتصال به اینترنت برای همگام‌سازی با سرورهای NTP عمومی (در صورتی که NTP Server داخلی را به اینترنت وصل می‌کنید).
 بخش چهارم: نصب و راه‌اندازی NTP Server در لینوکس
1. نصب سرویس NTP
ابتدا باید بسته NTP را نصب کنید. برای نصب آن روی سرور خود از دستورات زیر استفاده کنید:
sudo apt update
sudo apt install ntp
2. پیکربندی فایل NTP
پس از نصب NTP، باید فایل پیکربندی `ntp.conf` را ویرایش کنید تا سرور بتواند ساعت خود را از منابع معتبری همگام‌سازی کند.
برای ویرایش فایل پیکربندی:
 sudo nano /etc/ntp.conf 
در این فایل، به تنظیمات سرورهای NTP که قرار است زمان خود را از آنها همگام‌سازی کند، توجه داشته باشید. به‌طور پیش‌فرض، این فایل سرورهای عمومی NTP را شامل می‌شود. اما در صورت نیاز به استفاده از سرور NTP داخلی خود، باید آدرس سرورهای داخلی را وارد کنید.
برای تغییر یا اضافه کردن سرورهای NTP داخلی، خط‌هایی مشابه زیر را پیدا کرده و تغییر دهید:
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
و سپس سرور NTP داخلی خود را به این صورت اضافه کنید:
 server your-internal-ntp-server-ip iburst
 
در اینجا، `your-internal-ntp-server-ip` باید آدرس IP سرور NTP داخلی شما باشد.
3. راه‌اندازی مجدد سرویس NTP
پس از ویرایش فایل پیکربندی، باید سرویس NTP را دوباره راه‌اندازی کنید تا تغییرات اعمال شود:
 sudo systemctl restart ntp
 
4. بررسی وضعیت NTP Server
برای بررسی وضعیت سرویس NTP، از دستور زیر استفاده کنید:
sudo systemctl status ntp
 
این دستور وضعیت سرویس NTP را به شما نمایش می‌دهد و مشخص می‌کند که آیا سرویس در حال اجرا است یا خیر.
5. بررسی همگام‌سازی زمان
برای بررسی اینکه ساعت سرور با سرورهای NTP همگام‌سازی شده است یا نه، می‌توانید از دستور زیر استفاده کنید:
ntpq -p 
     این دستور لیستی از سرورهایی که به آن‌ها متصل شده‌اید، وضعیت همگام‌سازی و تاخیر در ارتباط را نشان می‌دهد.
بخش پنجم: راه‌اندازی NTP Server در ویندوز
در ویندوز، برای راه‌اندازی NTP Server به صورت داخلی، معمولاً باید از سرویس Windows Time (W32Time) استفاده کرد که به طور پیش‌فرض در ویندوز فعال است. اگر قصد دارید تا سیستم ویندوزی خود را به عنوان NTP Server برای دستگاه‌های دیگر در شبکه تنظیم کنید، باید تنظیمات خاصی را انجام دهید.
مراحل نصب و پیکربندی NTP Server در ویندوز:
1. فعال کردن سرویس Windows Time (W32Time)
   ابتدا وارد Control Panel شوید.
   به Administrative Tools بروید و سپس Services را باز کنید.
   در لیست سرویس‌ها، سرویس Windows Time را پیدا کرده و مطمئن شوید که وضعیت آن Running است. اگر نیست، آن را فعال     کنید.
   ممکن است که سرویس Windows Time (w32time) در سیستم شما به طور پیش‌فرض فعال نشده است. برای رفع این مشکل و       فعال‌سازی سرویس w32time، باید چند مرحله اضافی را انجام دهید.
   ابتدا باید سرویس Windows Time را به صورت دستی فعال کنید. برای این کار:
   وارد Command Prompt به صورت Administrator شوید.
   سپس دستورات زیر را وارد کنید تا سرویس w32time فعال شود:
     sc config w32time start= auto
     net start w32time
 
توجه داشته باشید که باید یک فضای اضافی بعد از `=` در دستور `start= auto` بگذارید، چون در غیر این صورت دستور اجرا نخواهد شد.
2. تنظیمات NTP در ویندوز
برای پیکربندی NTP Server در ویندوز، باید از خط فرمان (Command Prompt) با دسترسی Administrator استفاده کنید. مراحل زیر را دنبال کنید:
ابتدا وارد Command Prompt به صورت Administrator شوید (برای این کار روی آیکون Command Prompt راست‌کلیک کنید و گزینه "Run as Administrator" را انتخاب کنید).
سپس دستور زیر را برای فعال‌سازی NTP وارد کنید:
برای مثال، اگر می‌خواهید سرور time.windows.com را برای همگام‌سازی انتخاب کنید، دستور زیر را وارد کنید:
      w32tm /config /manualpeerlist:"time.windows.com" /syncfromflags:manual /reliable:YES /update
 
این دستور سرور time.windows.com را به عنوان منبع NTP تنظیم می‌کند. 
اگر می‌خواهید از سرور NTP داخلی خود استفاده کنید، آدرس IP سرور NTP خود را به جای `time.windows.com` وارد کنید:
    w32tm /config /manualpeerlist:"" /syncfromflags:manual /reliable:YES /update
 
3. راه‌اندازی مجدد سرویس Windows Time
بعد از پیکربندی، سرویس Windows Time باید دوباره راه‌اندازی شود:
   net stop w32time
   net start w32time
 
4. بررسی وضعیت NTP
برای بررسی وضعیت هم‌زمان‌سازی با سرور NTP، دستور زیر را وارد کنید:
   w32tm /query /status
5. مشاهده سرورهای متصل NTP
     همچنین می‌توانید برای مشاهده سرورهای NTP که به آن‌ها متصل هستید، دستور زیر را اجرا کنید:
   w32tm /query /peers 
  
بخش ششم: راه‌اندازی NTP Server در مک (macOS)
در سیستم‌عامل مک، برای راه‌اندازی NTP Server داخلی از systemsetup و ntpd استفاده می‌شود. این روش به شما اجازه می‌دهد تا ساعت سیستم مک خود را همگام‌سازی کرده و آن را به یک سرور NTP برای سایر دستگاه‌ها تبدیل کنید.
مراحل نصب و پیکربندی NTP Server در مک:
1. فعال‌سازی سرویس NTP
برای فعال‌سازی سرویس NTP در مک، ابتدا وارد Terminal شوید و دستور زیر را وارد کنید:
   sudo systemsetup -setusingnetworktime on
 
این دستور Network Time Protocol را فعال می‌کند و به سیستم مک اجازه می‌دهد تا زمان خود را با یک سرور NTP خارجی همگام‌سازی کند.
2. پیکربندی NTP Server داخلی
برای اینکه مک شما به یک NTP Server داخلی تبدیل شود و دیگر دستگاه‌ها بتوانند از آن زمان بگیرند، باید از سرویس ntpd استفاده کنید.
     برای ویرایش فایل پیکربندی /etc/ntp.conf از دستور زیر استفاده کنید:
     sudo nano /etc/ntp.conf
 
    سپس می‌توانید سرور NTP داخلی خود را به فایل اضافه کنید. برای مثال:
      server your-internal-ntp-server-ip
 
    اگر می‌خواهید سیستم خود را به عنوان NTP Server معرفی کنید، می‌توانید این تنظیمات را به فایل اضافه کنید.
 
3. راه‌اندازی مجدد سرویس NTP
پس از ویرایش فایل پیکربندی، باید سرویس ntpd را برای اعمال تغییرات راه‌اندازی کنید:
   sudo systemctl restart ntpd
4. بررسی وضعیت NTP
برای بررسی وضعیت سرویس NTP و همگام‌سازی ساعت سیستم، از دستور زیر استفاده کنید:
    ntpq -p 
     این دستور لیستی از سرورهای NTP و وضعیت همگام‌سازی را نمایش می‌دهد.
بخش هفتم: تنظیمات فایروال در لینوکس، ویندوز و مک
  • لینوکس
    اگر از فایروال استفاده می‌کنید، باید پورت‌های مربوط به NTP را برای ارتباط با سایر دستگاه‌ها باز کنید. به طور پیش‌فرض، NTP از پورت UDP 123 استفاده می‌کند. برای باز کردن این پورت در UFW (Uncomplicated Firewall) می‌توانید از دستور زیر استفاده کنید:
sudo ufw allow 123/udp 
  • ویندوز
    برای اینکه دیگر دستگاه‌ها بتوانند از NTP Server شما استفاده کنند، باید پورت UDP 123 را در فایروال ویندوز باز کنید:
   netsh advfirewall firewall add rule name="NTP Server" protocol=UDP dir=in localport=123 action=allow
  • مک
    برای اینکه سایر دستگاه‌ها بتوانند از NTP سرور شما استفاده کنند، باید پورت 123 UDP را در فایروال macOS باز کنید. برای انجام این کار از دستور زیر استفاده کنید:
   sudo pfctl -f /etc/pf.conf
   sudo pfctl -e
بخش هشتم: نصب NTP Client بر روی دیگر دستگاه‌ها
برای همگام‌سازی زمان سایر سیستم‌ها با NTP Server داخلی، باید NTP Client را بر روی این سیستم‌ها نصب کنید. در سیستم‌های لینوکس، این کار به سادگی با استفاده از دستور زیر انجام می‌شود:
sudo apt install ntpdate 
سپس، برای همگام‌سازی زمان از سرور NTP داخلی:
sudo ntpdate 
برای همگام‌سازی خودکار به‌طور منظم، می‌توانید از cron job استفاده کنید تا سیستم به‌طور دوره‌ای ساعت خود را از NTP Server داخلی همگام‌سازی کند.
 
بخش نهم: نظارت و نگهداری
1. مانیتورینگ: از ابزارهایی مانند `ntpq` و `chrony` برای مانیتورینگ و بررسی وضعیت NTP Server خود استفاده کنید.
2. گزارش‌گیری: مطمئن شوید که سیستم‌های شبکه شما به درستی زمان را همگام‌سازی می‌کنند و هیچ گونه اختلاف زمانی وجود ندارد.
3. پشتیبان‌گیری از پیکربندی: قبل از هر تغییر در پیکربندی NTP، حتماً از فایل پیکربندی بکاپ بگیرید.
نتیجه‌گیری
با نصب و راه‌اندازی یک NTP Server داخلی، شما قادر خواهید بود تا تمامی دستگاه‌ها و سرورهای شبکه خود را با هم هم‌زمان کنید. این کار باعث جلوگیری از مشکلاتی مانند اختلاف ساعت میان سرورها، مشکلات در لاگ‌ها و حتی مشکلات امنیتی می‌شود. همچنین این روش بسیار مفید است برای زمانی که نیاز به همگام‌سازی دقیق زمان در یک شبکه گسترده دارید.