NTP (Network Time Protocol)#

مقدمه#

NTP (Network Time Protocol) یک پروتکل شبکه برای همگام‌سازی زمان دستگاه‌ها است. NTP از پورت UDP 123 استفاده می‌کند.

اهمیت همگام‌سازی زمان#

  • Logging: زمان دقیق برای تحلیل log ها ضروری است

  • Authentication: بسیاری از پروتکل‌های احراز هویت به زمان دقیق نیاز دارند

  • Troubleshooting: بررسی event ها در زمان مشخص

  • Compliance: استانداردهای امنیتی به همگام‌سازی زمان نیاز دارند

ویژگی‌های NTP در Soodar Router#

  • پشتیبانی از NTP Client

  • پشتیبانی از NTP Server/Master

  • پشتیبانی از NTP Authentication

  • پیکربندی چندین NTP server

  • امکان تنظیم timezone

  • پشتیبانی از IPv4

معماری NTP#

NTP به صورت Stratum (لایه) کار می‌کند:

  • Stratum 0: منبع زمان اصلی (GPS, Atomic Clock)

  • Stratum 1: سرورهای مستقیماً متصل به Stratum 0

  • Stratum 2: سرورهای متصل به Stratum 1

  • Stratum 3 تا 15: سرورهای متصل به stratum بالاتر

نکته

هرچه stratum کمتر باشد، زمان دقیق‌تر است. معمولاً برای شبکه‌های سازمانی از Stratum 2 یا 3 استفاده می‌شود.


سناریو 1: پیکربندی NTP Client (دریافت زمان)#

هدف#

همگام‌سازی زمان روتر با NTP server خارجی

توپولوژی#

[NTP Server] ----Internet----> [n1 Router]
0.pool.ntp.org                 NTP Client

پیکربندی#

مرحله 1: بررسی زمان فعلی#

n1# show clock
*15:30:45.123 UTC Mon Oct 9 2023
n1#

ستاره (*) به معنای زمان همگام‌نشده است.

مرحله 2: تنظیم timezone#

n1(config)# clock timezone Asia/Tehran
n1(config)# exit
n1#

مرحله 3: اضافه کردن NTP server#

n1(config)# ntp server 0.pool.ntp.org
n1(config)# ntp server 1.pool.ntp.org
n1(config)# ntp server 2.pool.ntp.org
n1(config)# write
n1(config)# exit
n1#

توصیه

حداقل 3 NTP server برای دقت بیشتر تنظیم کنید. NTP از الگوریتم voting استفاده می‌کند.

مرحله 4: بررسی وضعیت همگام‌سازی#

n1# show ntp status
Clock is synchronized, stratum 3, reference is 185.51.200.2
nominal freq is 250.0000 Hz, actual freq is 250.0011 Hz, precision is 2**-23
ntp uptime is 123456 (1/100 of seconds), resolution is 4000
reference time is e6f3c1d2.12345678 (15:32:18.071 UTC Mon Oct 9 2023)
clock offset is 0.1234 msec, root delay is 12.345 msec
root dispersion is 23.456 msec, peer dispersion is 1.234 msec
n1#

مرحله 5: بررسی NTP peers#

n1# show ntp associations

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*185.51.200.2    .GPS.            1 u   64   64  377    12.34    0.123   0.456
+91.189.91.157   193.79.237.14    2 u   32   64  377    23.45   -0.234   0.567
-5.161.54.67     216.239.35.0     2 u   16   64  377    34.56    0.345   0.678
n1#

توضیح نمادها:

  • * : Server انتخاب شده برای همگام‌سازی

  • + : Server کاندید

  • - : Server قابل استفاده اما انتخاب نشده

  • x : Server غیرقابل استفاده

  • ~ : Server خیلی دور

مرحله 6: بررسی زمان پس از همگام‌سازی#

n1# show clock
15:32:30.456 +0330 Mon Oct 9 2023
n1#

بدون ستاره = زمان همگام شده است ✅

تست#

تست 1: بررسی stratum#

n1# show ntp status | include stratum
Clock is synchronized, stratum 3
n1#

تست 2: بررسی offset (انحراف زمان)#

n1# show ntp associations | include offset
     remote           refid      st t when poll reach   delay   offset  jitter
*185.51.200.2    .GPS.            1 u   64   64  377    12.34    0.123   0.456
n1#

Offset باید کمتر از 100 میلی‌ثانیه باشد ✅


سناریو 2: استفاده از NTP Server محلی#

هدف#

استفاده از NTP server داخل شبکه به جای اینترنت

مزایا#

  • سرعت بیشتر (local network)

  • کاهش وابستگی به اینترنت

  • امنیت بیشتر

  • کنترل بیشتر روی منبع زمان

توپولوژی#

[Local NTP Server] ---LAN---> [n1 Router]
192.168.1.100                 NTP Client

پیش‌نیاز#

یک NTP server محلی در شبکه (مثلاً Linux server با chrony یا ntpd)

پیکربندی#

مرحله 1: حذف NTP server های قبلی (اختیاری)#

n1(config)# no ntp server 0.pool.ntp.org
n1(config)# no ntp server 1.pool.ntp.org
n1(config)# no ntp server 2.pool.ntp.org
n1(config)#

مرحله 2: اضافه کردن NTP server محلی#

n1(config)# ntp server 192.168.1.100
n1(config)# ntp server 192.168.1.101
n1(config)# write
n1(config)# exit
n1#

نکته

می‌توانید هم NTP server محلی و هم اینترنتی داشته باشید. NTP بهترین را انتخاب می‌کند.

مرحله 3: بررسی اتصال#

n1# show ntp associations

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.1.100   185.51.200.2     2 u   32   64  377     1.23    0.045   0.123
+192.168.1.101   91.189.91.157    2 u   16   64  377     1.45   -0.056   0.234
n1#

توجه: delay خیلی کمتر است (1.23 ms vs 12.34 ms) ✅


سناریو 3: پیکربندی روتر به عنوان NTP Master#

هدف#

استفاده از Soodar Router به عنوان NTP server برای دستگاه‌های دیگر

کاربرد#

  • شبکه‌های بدون دسترسی اینترنت

  • شبکه‌های ایزوله (air-gapped)

  • لب‌های تست

  • شبکه‌های صنعتی

توپولوژی#

[n1 Router] ---------> [n2 Router]
NTP Master            NTP Client
(192.168.1.1)        (192.168.1.2)

پیکربندی#

در n1 (NTP Master):#

مرحله 1: فعال‌سازی NTP master#
n1(config)# ntp master 3
n1(config)# write
n1(config)# exit
n1#

عدد 3 به معنای Stratum 3 است.

نکته

Stratum 1 فقط برای دستگاه‌هایی است که مستقیماً به منبع زمان دقیق (GPS, Atomic Clock) متصل هستند. برای شبکه‌های معمولی از Stratum 2 یا 3 استفاده کنید.

مرحله 2: تنظیم دستی زمان (اگر دسترسی به NTP ندارید)#
n1# clock set 15:45:30 09 Oct 2023
n1# show clock
15:45:30.123 +0330 Mon Oct 9 2023
n1#
مرحله 3: بررسی وضعیت master#
n1# show ntp status
Clock is synchronized, stratum 3, reference is 127.127.1.1
n1#

127.127.1.1 نشان‌دهنده local clock است.

در n2 (NTP Client):#

مرحله 1: تنظیم n1 به عنوان NTP server#
n2(config)# ntp server 192.168.1.1
n2(config)# write
n2(config)# exit
n2#
مرحله 2: بررسی همگام‌سازی#

صبر کنید 1-2 دقیقه، سپس:

n2# show ntp associations

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.1.1     127.127.1.1      3 u   32   64  377     0.56    0.012   0.034
n2#

Stratum روتر n2 حالا 4 است (یکی بیشتر از master).


سناریو 4: NTP Authentication (امنیت بیشتر)#

هدف#

جلوگیری از حملات MITM و استفاده از NTP server غیرمجاز

چرا Authentication نیاز است؟#

بدون authentication، یک مهاجم می‌تواند:

  • NTP packet های جعلی ارسال کند

  • زمان روتر را تغییر دهد

  • log ها را دستکاری کند

توپولوژی#

[n1 NTP Master] ----Authenticated----> [n2 Client]
(Key: MySecretKey)                     (Key: MySecretKey)

پیکربندی#

در n1 (NTP Master):#

مرحله 1: تعریف authentication key#
n1(config)# ntp authentication-key 1 md5 MySecretKey@2024
n1(config)# ntp trusted-key 1
n1(config)# ntp authenticate
n1(config)# ntp master 3
n1(config)# write
n1(config)# exit
n1#

توضیح:

  • authentication-key 1: تعریف کلید شماره 1

  • md5 MySecretKey@2024: الگوریتم MD5 با کلید

  • trusted-key 1: کلید 1 را معتبر بدان

  • authenticate: فعال‌سازی authentication

در n2 (NTP Client):#

مرحله 1: تعریف همان authentication key#
n2(config)# ntp authentication-key 1 md5 MySecretKey@2024
n2(config)# ntp trusted-key 1
n2(config)# ntp authenticate
n2(config)# ntp server 192.168.1.1 key 1
n2(config)# write
n2(config)# exit
n2#

هشدار

کلید باید در هر دو طرف دقیقاً یکسان باشد. حتی یک حرف اختلاف باعث عدم همگام‌سازی می‌شود!

تست#

تست 1: بررسی authentication#

n2# show ntp associations

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.1.1     127.127.1.1      3 u   32   64  377     0.56    0.012   0.034
n2#

اگر reach مقدار 377 داشته باشد، authentication موفق است ✅

تست 2: بررسی با کلید اشتباه#

در n2، کلید را اشتباه وارد کنید:

n2(config)# ntp authentication-key 1 md5 WrongKey
n2(config)# exit
n2# show ntp associations

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 192.168.1.1     .AUTH.           3 u    -   64    0     0.00    0.000   0.000
n2#

reach صفر است و refid برابر .AUTH. = authentication failed ❌


سناریو 5: پیکربندی چندین NTP Server با Priority#

هدف#

استفاده از NTP server های مختلف با اولویت‌بندی

توپولوژی#

[Primary NTP]   -----> [n1]
[Secondary NTP] -----> [n1]
[Backup NTP]    -----> [n1]

پیکربندی#

مرحله 1: اضافه کردن server ها با prefer#

n1(config)# ntp server 192.168.1.100 prefer
n1(config)# ntp server 192.168.1.101
n1(config)# ntp server 0.pool.ntp.org
n1(config)# write
n1(config)# exit
n1#

کلمه prefer به NTP می‌گوید که این server را ترجیح دهد.

مرحله 2: بررسی انتخاب server#

n1# show ntp associations

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.1.100   185.51.200.2     2 u   32   64  377     1.23    0.045   0.123
+192.168.1.101   91.189.91.157    2 u   16   64  377     1.45   -0.056   0.234
-185.51.200.2    .GPS.            1 u   64   64  377    12.34    0.123   0.456
n1#

Server با prefer انتخاب شده (*) ✅


عیب‌یابی NTP#

مشکل 1: NTP همگام نمی‌شود#

بررسی 1: آیا NTP server قابل دسترس است؟#

n1# ping 0.pool.ntp.org
PING 0.pool.ntp.org (185.51.200.2): 56 data bytes
64 bytes from 185.51.200.2: icmp_seq=0 ttl=54 time=12.3 ms
n1#

بررسی 2: آیا پورت UDP 123 باز است؟#

n1# show ip sockets | include 123
udp        0      0 0.0.0.0:123             0.0.0.0:*
n1#

بررسی 3: آیا firewall یا ACL مسدود نکرده؟#

n1# show ip access-lists
n1# show firewall rules

بررسی 4: بررسی reach#

n1# show ntp associations

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 185.51.200.2    .INIT.           0 u    -   64    0     0.00    0.000   0.000
n1#

reach 0 = هیچ packet ای دریافت نشده ❌

مشکل 2: Stratum 16 (Invalid)#

n1# show ntp status
Clock is unsynchronized, stratum 16
n1#

علت: NTP هنوز همگام نشده یا تمام server ها unreachable هستند.

راه‌حل:

  • صبر کنید 5-10 دقیقه

  • بررسی connectivity به NTP server ها

  • بررسی authentication key ها

مشکل 3: Clock offset خیلی زیاد#

n1# show ntp associations

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*185.51.200.2    .GPS.            1 u   64   64  377    12.34   1234.5   0.456
n1#

Offset بیشتر از 1000 ms = مشکل جدی ❌

راه‌حل:

n1# clock set 15:45:30 09 Oct 2023
n1# show ntp associations
# بعد از تنظیم دستی، NTP می‌تواند sync کند

مشکل 4: Authentication failed#

n1# show ntp associations

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 192.168.1.1     .AUTH.           3 u    -   64    0     0.00    0.000   0.000
n1#

.AUTH. = Authentication key اشتباه است

راه‌حل:

n1# show running-config | include ntp
ntp authentication-key 1 md5 MyKey
ntp trusted-key 1
ntp authenticate
ntp server 192.168.1.1 key 1

# بررسی کلید در هر دو طرف یکسان باشد

Debugging NTP#

فعال‌سازی NTP debug#

n1# debug ntp all
NTP all debugging is on
n1#

خروجی نمونه:

n1# debug ntp all
*Oct  9 15:45:23.456: NTP: Received NTP packet from 185.51.200.2
*Oct  9 15:45:23.457: NTP: Peer 185.51.200.2, Stratum 1, Offset 0.123
*Oct  9 15:45:23.458: NTP: Clock updated, offset 0.123 ms
n1#

غیرفعال کردن debug#

n1# no debug ntp all
n1# no debug all

دستورات مفید NTP#

نمایش وضعیت#

دستور

توضیح

show clock

نمایش زمان فعلی

show ntp status

نمایش وضعیت همگام‌سازی

show ntp associations

نمایش NTP server ها

show running-config | include ntp

نمایش پیکربندی NTP

پیکربندی#

دستور

توضیح

ntp server <ip>

اضافه کردن NTP server

ntp server <ip> prefer

NTP server با اولویت بالا

ntp server <ip> key <n>

NTP server با authentication

ntp master <stratum>

فعال‌سازی NTP master

ntp authentication-key <n> md5 <key>

تعریف authentication key

ntp trusted-key <n>

تعریف کلید معتبر

ntp authenticate

فعال‌سازی authentication

clock timezone <zone>

تنظیم timezone

clock set HH:MM:SS DD MMM YYYY

تنظیم دستی زمان

no ntp server <ip>

حذف NTP server

Debugging#

دستور

توضیح

debug ntp all

فعال‌سازی debug

no debug all

غیرفعال کردن همه debug ها


بهترین شیوه‌ها (Best Practices)#

1. استفاده از چندین NTP Server#

n1(config)# ntp server 0.pool.ntp.org
n1(config)# ntp server 1.pool.ntp.org
n1(config)# ntp server 2.pool.ntp.org
n1(config)# write

حداقل 3 server برای دقت ✅

2. استفاده از NTP Server محلی#

n1(config)# ntp server 192.168.1.100 prefer
n1(config)# ntp server 0.pool.ntp.org
n1(config)# write

Local server سریع‌تر و reliable تر است ✅

3. فعال‌سازی Authentication#

n1(config)# ntp authentication-key 1 md5 MySecretKey@2024
n1(config)# ntp trusted-key 1
n1(config)# ntp authenticate
n1(config)# ntp server 192.168.1.100 key 1
n1(config)# write

Authentication برای امنیت ضروری است ✅

4. تنظیم Timezone صحیح#

n1(config)# clock timezone Asia/Tehran
n1(config)# write

5. استفاده از NTP Master برای شبکه‌های داخلی#

یک روتر را به عنوان NTP master تنظیم کنید:

Master-Router(config)# ntp server 0.pool.ntp.org
Master-Router(config)# ntp master 3
Master-Router(config)# write

سایر روتر ها از master استفاده کنند:

Other-Router(config)# ntp server 192.168.1.1
Other-Router(config)# write

6. مانیتورینگ منظم#

بررسی روزانه:

n1# show ntp status
n1# show ntp associations
n1# show clock

7. Backup NTP Server#

همیشه backup NTP server داشته باشید:

n1(config)# ntp server 192.168.1.100 prefer
n1(config)# ntp server 192.168.1.101
n1(config)# ntp server 0.pool.ntp.org
n1(config)# write

مثال پیکربندی کامل#

شبکه سازمانی با NTP Master و Clients#

# Master Router (اتصال به اینترنت)
Master(config)# ntp server 0.pool.ntp.org
Master(config)# ntp server 1.pool.ntp.org
Master(config)# ntp server 2.pool.ntp.org
Master(config)# ntp authentication-key 1 md5 MyCompanyKey@2024
Master(config)# ntp trusted-key 1
Master(config)# ntp authenticate
Master(config)# ntp master 3
Master(config)# clock timezone Asia/Tehran
Master(config)# write

# Client Router 1
Client1(config)# ntp authentication-key 1 md5 MyCompanyKey@2024
Client1(config)# ntp trusted-key 1
Client1(config)# ntp authenticate
Client1(config)# ntp server 192.168.1.1 key 1 prefer
Client1(config)# ntp server 0.pool.ntp.org
Client1(config)# clock timezone Asia/Tehran
Client1(config)# write

# Client Router 2
Client2(config)# ntp authentication-key 1 md5 MyCompanyKey@2024
Client2(config)# ntp trusted-key 1
Client2(config)# ntp authenticate
Client2(config)# ntp server 192.168.1.1 key 1 prefer
Client2(config)# ntp server 192.168.1.2 key 1
Client2(config)# clock timezone Asia/Tehran
Client2(config)# write

این پیکربندی شامل:

  • ✅ Master router با دسترسی به اینترنت

  • ✅ Authentication برای امنیت

  • ✅ Prefer برای local server

  • ✅ Backup NTP server (اینترنت)

  • ✅ Timezone صحیح


خلاصه#

NTP یک سرویس حیاتی برای شبکه است. همگام‌سازی زمان برای logging، security، و troubleshooting ضروری است.

نکات کلیدی:

  • حداقل 3 NTP server استفاده کنید

  • از authentication برای امنیت استفاده کنید

  • یک NTP master داخلی داشته باشید

  • Timezone را صحیح تنظیم کنید

  • وضعیت NTP را منظم بررسی کنید

دستورات اصلی:

ntp server <ip>             # اضافه کردن NTP server
ntp master <stratum>        # فعال‌سازی NTP master
show ntp status             # وضعیت همگام‌سازی
show ntp associations       # لیست NTP server ها
show clock                  # نمایش زمان