
آموزش پیکربندی Network Time Protocol (NTP) سیسکو
Network Time Protocol (NTP) یک سرویس حیاتی است که نه تنها برای دستگاههای سیسکو بلکه برای بیشتر دستگاههای شبکه اهمیت دارد. هر دستگاه باید با یک منبع زمان قابل اعتماد مانند یک سرور NTP بهطور دقیق همگامسازی شود. برای دستگاههای شبکه، نگهداری زمان دقیق بسیار مهم است زیرا بسیاری از خدمات به آن وابسته هستند. یک مثال رایج و پرکاربرد از این خدمات شامل لاگگیری و SNMP است.
نحوه عملکرد NTP
NTP از مدل کلاینت/سرور استفاده میکند:
- کلاینت NTP: بهطور دورهای به سرور NTP متصل میشود تا اطلاعات زمان را درخواست کند.
- سرور NTP: با زمان فعلی خود پاسخ میدهد و کلاینت از این اطلاعات برای تنظیم ساعت خود استفاده میکند.
یک سرور NTP معمولاً زمان خود را از یک منبع زمان معتبر دریافت میکند، معمولاً یک ساعت مرجع (برای مثال: ساعت رادیویی، ساعت اتمی و…) و سپس این زمان را در سراسر شبکه توزیع میکند. NTP از مفهوم Stratum برای توصیف اینکه یک دستگاه چقدر از یک منبع زمان معتبر فاصله دارد، استفاده میکند. یک ساعت مرجع، دستگاه Stratum 0 است که فرض میشود دقیق است و تأخیری در ارتباط با آن وجود ندارد. دستگاههای Stratum 0 نمیتوانند مستقیماً در شبکه استفاده شوند، اما بهطور مستقیم به کامپیوترهایی متصل هستند که سپس بهعنوان سرورهای Stratum 1 عمل میکنند. یک سرور زمان Stratum 1 بهعنوان استاندارد اصلی زمان در شبکه عمل میکند.
یک سرور Stratum 2 به سرور Stratum 1 متصل است؛ سپس یک سرور Stratum 3 به سرور Stratum 2 متصل میشود و به همین ترتیب. یک سرور Stratum 2 زمان خود را از سرور Stratum 1 از طریق درخواست بستههای NTP دریافت میکند. یک سرور Stratum 3 زمان خود را از سرور Stratum 2 دریافت میکند و همینطور ادامه دارد. یک سرور Stratum ممکن است با سایر سرورهای همسطح خود همتا شود تا زمان پایدارتر و مقاومتری برای تمام دستگاهها در گروه همتا فراهم کند (برای مثال یک سرور Stratum 2 میتواند با سایر سرورهای Stratum 2 همتا شود). NTP از آدرس Multicast 224.0.1.1 و پورت UDP 123 بهعنوان هم مبدا و هم مقصد استفاده میکند.
پیکربندی
برای پیکربندی یک دستگاه سیسکو بهعنوان سرور NTP معتبر که از ساعت خود برای ارائه زمان به دیگران استفاده میکند، از دستور ntp master [stratum] استفاده کنید. یک سرور معتبر NTP میتواند حتی زمانی که با یک سرور زمان موجود همگامسازی نشده است، زمان توزیع کند.
Device(config)#ntp master
برای پیکربندی دستگاه محلی بهعنوان یک کلاینت NTP و استفاده از منبع ساعت NTP از راه دور، از دستور ntp server {آدرس IP} استفاده کنید. بهعنوان مثال:
Device(config)#ntp server 192.168.1.1 //get time from a NTP server at 192.168.1.1
توجه: دستور ntp server دستگاه محلی را بهعنوان کلاینت NTP پیکربندی میکند نه یک سرور NTP.
این دو دستور (“ntp master” و “ntp server“) میتوانند بهطور همزمان برای اضافه کردن افزونگی استفاده شوند. در این حالت دستگاه بهعنوان یک کلاینت NTP عمل میکند (با دستور “ntp server“) و اگر ارتباط قطع شود، به ساعت داخلی خود (با دستور “ntp master“) برمیگردد. بنابراین، دستگاه همیشه زمان را ارائه میدهد، بدون توجه به منبع آن. در نهایت، اگر بخواهیم دستگاه ما هم بهعنوان سرور NTP و هم کلاینت NTP عمل کند، میتوانیم از دستور ntp peer {آدرس|نام میزبان} استفاده کنیم. این حالت را حالت فعال متقابل مینامند. بهعنوان مثال:
Device(config)#ntp peer 192.168.10.1
برای درک بهتر این دستور، مثالی میزنیم. فرض کنید:
- R1 بهعنوان کلاینت NTP است و زمان را از سرور NTP 1 دریافت میکند.
- R2 بهعنوان کلاینت NTP است و زمان را از سرور NTP 2 دریافت میکند.
On R1: R1(config)#ntp server 192.168.1.1 //use NTP Server 1 as its main NTP source R1(config)#ntp peer 192.168.2.2 //use R2 as its NTP peer (synchronize) On R2: R2(config)#ntp server 192.168.2.1 //use NTP Server 2 as its main NTP source R2(config)#ntp peer 192.168.1.2 //use R1 as its NTP peer (synchronize)
R1 و R2 میتوانند با یکدیگر ارتباط برقرار کنند، بنابراین R1 و R2 ممکن است بخواهند زمان را از یکدیگر بهعنوان پشتیبان دریافت کنند زمانی که سرور NTP اولیه آنها خراب شود. در این صورت، بهترین راهحل این است که R1 و R2 یکدیگر را بهعنوان همتای NTP پیکربندی کنند.
زمان و بررسی NTP
دو دستور رایج برای نمایش آمار منابع زمان عبارتند از: show ntp status و show ntp associations
show ntp status: وضعیت فعلی NTP دستگاه محلی را نمایش میدهد.
مثال:
R1#show ntp status
Clock is synchronized, stratum 10, reference is 10.1.2.1
nominal freq is 250.0000 Hz, actual freq is 249.9987 Hz, precision is 2**18
reference time is D5E492E9.98ACB4CF (13:00:25.596 CST Wed Jul 17 2024)
clock offset is 15.4356 msec, root delay is 52.17 msec
root dispersion is 67.61 msec, peer dispersion is 28.12 msec
این خروجی نشان میدهد که ما با Stratum 10 همگامسازی شدهایم و ساعت مرجع در آدرس 10.1.2.1 قرار دارد.
مثال دیگر:
R1# show ntp status Clock is unsynchronized, stratum 16, no reference clock nominal freq is 250.0000 Hz, actual freq is 250.0006 Hz, precision is 2**24 reference time is 00000000.00000000 (02:00:00.000 Greece Mon Jan 1 1900) clock offset is 0.0000 msec, root delay is 0.00 msec root dispersion is 0.00 msec, peer dispersion is 0.00 msec loopfilter state is 'FSET' (Drift set from file), drift is -0.000002405 s/s system poll interval is 64, never updated.
این خروجی نشان میدهد که دستگاه ما همگامسازی نشده است، بنابراین Stratum آن 16 است (حداکثر مقدار برای Stratum، 15 است).
- show ntp associations: این دستور سرورهای NTP که به آن متصل است را نمایش میدهد.
مثال:
CoreRouter#show ntp associations
address ref clock st when poll reach delay offset disp
*~146.185.130.223 193.79.237.14 2 26 64 1 10.857 -5.595 7937.5
* sys.peer, # selected, + candidate, - outlyer, x falseticker, ~ configured
خروجی این دستور نشان میدهد که دستگاه ما بهطور صحیح برای همگامسازی با سرور NTP انتخابشده 146.185.130.223 پیکربندی شده است. اما دستگاه در حال حاضر با علامت ستاره (*) در کنار تیلده (~) همگامسازی شده است. ستون ref. clock آدرس IP سرور NTP را نشان میدهد که دستگاه ما از آن همگامسازی شده است. علامت * در مقابل آدرس IP نشان میدهد که دستگاه همگامسازی شده است و Stratum (st) برابر با 2 است. این بدان معناست که سرور NTP نسبتاً به یک منبع زمان معتبر نزدیک است. فیلد “poll” نشان میدهد که دستگاه تلاش خواهد کرد تا هر 64 ثانیه زمان را همگامسازی کند.
مثال دیگر:
Router# show ntp associations
address ref clock st when poll reach delay offset disp
~129.6.15.28 .INIT. 16 - 64 0 0.000 0.000 16000.
~206.246.122.250 .INIT. 16 - 64 0 0.000 0.000 16000.
* sys.peer, # selected, + candidate, - outlyer, x falseticker, ~ configured
در خروجی فوق، میبینیم که هر دو سرور NTP ما در وضعیت “INIT” قرار دارند. NTP نسبت به دیگر پروتکلها بسیار کند است. این پروتکل ممکن است بیش از پنج دقیقه زمان ببرد تا با یک سرور بالادستی همگامسازی شود. در نهایت، اگر بخواهیم تاریخ و زمان فعلی دستگاه را بررسی کنیم، میتوانیم از دستور show clock استفاده کنیم:
Router# show clock
*06:58:34.345 UTC Wed Jul 24 2024
احراز هویت NTP
- دستور ntp authenticate برای فعالسازی ویژگی احراز هویت NTP استفاده میشود (احراز هویت NTP بهطور پیشفرض غیرفعال است).
- دستور ntp trusted-key یک یا چند کلید را تعیین میکند که یک منبع زمان باید آنها را در بستههای NTP خود ارائه دهد تا دستگاه بتواند با آن همگامسازی شود. این دستور از همگامسازی دستگاه با یک منبع زمان غیرمعتبر جلوگیری میکند.
- دستور ntp authentication-key برای تعریف کلیدهای احراز هویت استفاده میشود. دستگاه بدون داشتن یکی از این کلیدهای احراز هویت به یک منبع زمان همگامسازی نمیشود و شماره کلید باید با دستور ntp trusted-key number مشخص شود.
🙏🏻