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: تعریف کلید شماره 1md5 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#
نمایش وضعیت#
دستور |
توضیح |
|---|---|
|
نمایش زمان فعلی |
|
نمایش وضعیت همگامسازی |
|
نمایش NTP server ها |
|
نمایش پیکربندی NTP |
پیکربندی#
دستور |
توضیح |
|---|---|
|
اضافه کردن NTP server |
|
NTP server با اولویت بالا |
|
NTP server با authentication |
|
فعالسازی NTP master |
|
تعریف authentication key |
|
تعریف کلید معتبر |
|
فعالسازی authentication |
|
تنظیم timezone |
|
تنظیم دستی زمان |
|
حذف NTP server |
Debugging#
دستور |
توضیح |
|---|---|
|
فعالسازی debug |
|
غیرفعال کردن همه 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 # نمایش زمان