ntpd(1) User Commands ntpd(1)

ntpd - دیمن پروتکل زمان شبکه (NTP)

ntpd [-flags] [-flag [value]] [--option-name[[=| ]value]] [ <server1> ... <serverN> ]

ابزار ntpd یک دیمن سیستم‌عامل است که زمان روز سیستم را در همگام‌سازی با کارگزارهای زمان استاندارد اینترنت تنظیم و نگهداری می‌کند. این برنامه یک پیاده‌سازی کامل از پروتکل زمان شبکه (NTP) نسخه ۴ مطابق با تعریف RFC-5905 است، ولی در عین حال سازگاری با نسخه ۳ مطابق با RFC-1305، و نسخه‌های ۱ و ۲ مطابق با RFC-1059 و RFC-1119 را نیز حفظ می‌کند.

ابزار ntpd بیشتر محاسبات را با حساب ممیز شناور ۶۴ بیتی انجام می‌دهد و عملیات ممیز ثابت ۶۴ بیتی را تنها در صورت لزوم برای حفظ دقت نهایی (حدود ۲۳۲ پیکوثانیه) به کار می‌گیرد. اگرچه دستیابی به این دقت نهایی با ایستگاه‌های کاری و شبکه‌های معمولی امروزی امکان‌پذیر نیست، اما ممکن است در آینده با فرکانس ساعت گیگاهرتزی پردازنده‌ها و شبکه‌های محلی گیگابیتی مورد نیاز باشد.

به‌طور معمول، ntpd فایل پیکربندی ntp.conf(5) را هنگام راه‌اندازی می‌خواند تا منابع همگام‌سازی و حالت‌های کاری را تعیین کند. همچنین می‌توان یک پیکربندی کاری، هرچند محدود، را کاملاً از طریق خط فرمان مشخص کرد و نیاز به فایل پیکربندی را برطرف ساخت. این موضوع به‌ویژه زمانی مفید است که میزبان محلی به عنوان کلاینت همه‌پخشی/چندپخشی (broadcast/multicast) پیکربندی شود و تمامی همتایان با گوش دادن به همه‌پخشی‌ها در زمان اجرا مشخص شوند.

اگر پشتیبانی NetInfo درون ntpd ساخته شده باشد، چنانچه فایل پیش‌فرض ntp.conf(5) قابل خواندن نباشد و هیچ فایلی با گزینه -c تعیین نشده باشد، ntpd تلاش خواهد کرد تا پیکربندی خود را از NetInfo بخواند.

متغیرهای داخلی گوناگون ntpd را می‌توان هنگام اجرای ntpd با استفاده از برنامه‌های کمکی ntpq(1) و ntpdc(1) نمایش داد و گزینه‌های پیکربندی را دگرگون ساخت.

هنگامی که ntpd آغاز به کار می‌کند، به مقدار umask(2) نگاه می‌اندازد و در صورتی که صفر باشد، ntpd مقدار umask(2) را روی 022 قرار می‌دهد.

-4, --ipv4

اجبار به حل نام DNS با IPv4. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: ipv6.

اجبار به حل نام DNS برای نام‌های میزبان بعدی در خط فرمان در فضای نام IPv4.

-6, --ipv6

اجبار به حل نام DNS با IPv6. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: ipv4.

اجبار به حل نام DNS برای نام‌های میزبان بعدی در خط فرمان در فضای نام IPv6.


الزام به احراز هویت رمزنگاری‌شده. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: authnoreq.

الزام به احراز هویت رمزنگاری‌شده برای پیوندهای کلاینت همه‌پخشی (broadcast)، کلاینت چندپخشی (multicast) و متقارن غیرفعال (symmetric passive). این گزینه پیش‌فرض است.


عدم الزام به احراز هویت رمزنگاری‌شده. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: authreq.

عدم الزام به احراز هویت رمزنگاری‌شده برای پیوندهای کلاینت همه‌پخشی، کلاینت چندپخشی و متقارن غیرفعال. این کار تقریباً هیچ‌گاه ایده خوبی نیست.


اجازه همگام‌سازی با سرورهای همه‌پخشی (broadcast).

نام فایل پیکربندی.

نام و مسیر فایل پیکربندی، به‌طور پیش‌فرض /etc/ntp.conf است.


افزایش سطح جزئیات اشکال‌زدایی. این گزینه می‌تواند به تعداد نامحدود تکرار شود.

تنظیم سطح جزئیات اشکال‌زدایی. این گزینه می‌تواند به تعداد نامحدود تکرار شود. این گزینه یک عدد صحیح را به عنوان آرگومان می‌پذیرد.

نام فایل انحراف فرکانس (drift).

نام و مسیر فایل انحراف فرکانس، به‌طور پیش‌فرض /etc/ntp.drift است. این عملکرد مشابه مشخصه پیکربندی driftfile driftfile در فایل /etc/ntp.conf می‌باشد.


اجازه بزرگ بودن نخستین تنظیم زمان. این گزینه می‌تواند به تعداد نامحدود تکرار شود.

به‌طور معمول، اگر آفست از آستانه وحشت (panic threshold) که به طور پیش‌فرض ۱۰۰۰ ثانیه است فراتر رود، ntpd با پیامی در لاگ سیستم خارج می‌شود. این گزینه اجازه می‌دهد زمان بدون محدودیت روی هر مقداری تنظیم شود؛ اما این اتفاق تنها یک بار رخ می‌دهد. اگر پس از آن از آستانه فراتر رود، ntpd با پیامی در لاگ سیستم خارج خواهد شد. این گزینه می‌تواند با گزینه‌های -q و -x استفاده شود. برای سایر گزینه‌ها دستورالعمل فایل پیکربندی tinker را ببینید.


اعمال پرش (Step) بر روی هر تصحیح آفست اولیه.

به‌طور معمول، ntpd اگر آفست زمان از آستانه پرش فراتر رود (که به‌طور پیش‌فرض ۱۲۸ میلی‌ثانیه است) زمان را با پرش تنظیم می‌کند و در غیر این صورت زمان را به تدریج تغییر می‌دهد (slew). این گزینه اجبار می‌کند که تصحیح آفست اولیه با پرش انجام شود تا بالاترین دقت زمان به سرعت حاصل گردد. با این حال، این کار ممکن است باعث عقب رفتن زمان نیز بشود، بنابراین در صورتی که برنامه‌های نیازمند زمان یکنواخت صعودی (monotonic time) در حال اجرا هستند نباید از این گزینه استفاده شود. برای گزینه‌های دیگر دستورالعمل فایل پیکربندی tinker را ببینید.


دایرکتوری قرنطینه (Jail).

انتقال ریشه سرور (Chroot) به دایرکتوری jaildir این گزینه همچنین بدین معناست که سرور در هنگام راه‌اندازی تلاش می‌کند امتیازات دسترسی ریشه (root) را رها کند. ممکن است لازم باشد گزینه -u را نیز مشخص کنید. این گزینه تنها زمانی در دسترس است که سیستم‌عامل از تنظیم ساعت بدون امتیازات کامل ریشه پشتیبانی کند. این گزینه در NetBSD (کامپایل با --enable-clockctl) یا لینوکس (کامپایل با --enable-linuxcaps) یا سولاریس (کامپایل با --enable-solarisprivs) پشتیبانی می‌شود.


شنود روی یک نام یا آدرس واسط شبکه. این گزینه می‌تواند به تعداد نامحدود تکرار شود.

باز کردن آدرس شبکه داده‌شده، یا تمامی آدرس‌های مرتبط با نام واسط داده‌شده. این گزینه می‌تواند چندین بار تکرار شود. این گزینه همچنین به این معناست که سایر آدرس‌ها، به جز آدرس‌های عمومی (wildcard) و localhost، باز نشوند. این گزینه منسوخ شده است. لطفاً از دستور جامع‌تر interface در فایل پیکربندی استفاده کنید.


مسیر فایل کلیدهای متقارن.

مشخص کردن نام و مسیر فایل کلیدهای متقارن. /etc/ntp.keys مقدار پیش‌فرض است. این عملکرد مشابه دستورالعمل keys keyfile در فایل پیکربندی است.


مسیر فایل گزارش (لاگ).

مشخص کردن نام و مسیر فایل لاگ. پیش‌فرض فایل لاگ سیستم است. این عملکرد مشابه دستورالعمل logfile logfile در فایل پیکربندی است.


عدم شنود روی واسط‌های مجازی.

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


تغییر تایمر چندرسانه‌ای (فقط در ویندوز).

تنظیم تایمر چندرسانه‌ای ویندوز بر روی بالاترین تفکیک‌پذیری (resolution). این کار تضمین می‌کند که تفکیک‌پذیری در حین اجرای ntpd تغییر نکند و از اختلالات زمان‌سنجی ناشی از تغییرات جلوگیری شود.


عدم فورک به پس‌زمینه. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: wait-sync.

اجرا با اولویت بالا.

اجرای ntpd با بالاترین اولویت، تا میزانی که توسط سیستم‌عامل مجاز دانسته شده است.


مسیر فایل شناسه فرایند (PID).

مشخص کردن نام و مسیر فایل مورد استفاده برای ثبت شناسه فرایند ntpd این عملکرد مشابه دستورالعمل pidfile pidfile در فایل پیکربندی است.


اولویت فرایند. این گزینه یک عدد صحیح را به عنوان آرگومان می‌پذیرد.

اجرای ntpd با اولویت مشخص‌شده در sched_setscheduler(SCHED_FIFO) تا جایی که توسط سیستم‌عامل مجاز باشد.


تنظیم زمان و خروج. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: saveconfigquit, wait-sync.

ntpd به دیمن تبدیل نمی‌شود و پس از نخستین همگام‌سازی ساعت خارج خواهد شد. این رفتار شبیه برنامه ntpdate است که به زودی با یک اسکریپت شل جایگزین می‌شود. گزینه‌های -g و -x می‌توانند همراه این گزینه استفاده شوند. نکته: نظم‌بخشی زمان هسته با این گزینه غیرفعال می‌شود.


تاخیر انتشار/همه‌پخشی.

مشخص کردن تاخیر انتشار پیش‌فرض از کارگزار همه‌پخشی/چندپخشی به این کلاینت. این امر تنها زمانی لازم است که تاخیر نتواند به صورت خودکار توسط پروتکل محاسبه شود.


ذخیره پیکربندی تجزیه‌شده و خروج. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: quit, wait-sync.

باعث می‌شود ntpd فایل پیکربندی راه‌اندازی خود را تجزیه کرده و معادل آن را در نام فایل داده‌شده ذخیره کند و خارج شود. این گزینه برای آزمایش خودکار طراحی شده است.


مکان فایل‌های آمار.

مشخص کردن مسیر دایرکتوری برای فایل‌های ایجادشده توسط بخش آمار. این عملکرد مشابه دستورالعمل statsdir statsdir در فایل پیکربندی است.


شماره کلید معتمد. این گزینه می‌تواند به تعداد نامحدود تکرار شود.

افزودن شماره کلید مشخص‌شده به فهرست کلیدهای معتمد.


اجرا با شناسه کاربری (یا userid:groupid).

مشخص کردن یک کاربر، و در صورت تمایل یک گروه، برای تغییر هویت به آن. این گزینه تنها زمانی در دسترس است که سیستم‌عامل از تنظیم ساعت بدون امتیازات کامل ریشه پشتیبانی کند. این گزینه در NetBSD (کامپایل با --enable-clockctl) یا لینوکس (کامپایل با --enable-linuxcaps) یا سولاریس (کامپایل با --enable-solarisprivs) پشتیبانی می‌شود.


فاصله بر حسب ثانیه بین پویش‌ها برای واسط‌های جدید یا حذف‌شده. این گزینه یک عدد صحیح را به عنوان آرگومان می‌پذیرد.

تعیین زمان بر حسب ثانیه بین دو پویش برای واسط‌های جدید یا قطع‌شده. برای سیستم‌های دارای پشتیبانی سوکت مسیریابی، پویش‌ها اندکی پس از تشخیص تغییر واسط توسط سیستم انجام می‌شوند. از 0 برای غیرفعال کردن پویش استفاده کنید. ۶۰ ثانیه حداقل زمان بین پویش‌ها است.


تبدیل ARG به یک متغیر ntp (خواندنی/نوشتنی RW). این گزینه می‌تواند به تعداد نامحدود تکرار شود.

تبدیل ARG به یک متغیر ntp (خواندنی/نوشتنی پیش‌فرض RW|DEF). این گزینه می‌تواند به تعداد نامحدود تکرار شود.

ثانیه‌های انتظار برای نخستین همگام‌سازی ساعت. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: nofork, quit, saveconfigquit. این گزینه یک عدد صحیح را به عنوان آرگومان می‌پذیرد.

اگر بزرگتر از صفر باشد، رفتار ntpd را هنگام فورک شدن به پس‌زمینه دگرگون می‌سازد. به جای خروج فوری با وضعیت 0 پس از فورک، والد حداکثر تا تعداد ثانیه‌های مشخص‌شده منتظر می‌ماند تا فرزند برای نخستین بار ساعت را همگام کند. اگر ساعت همگام شود وضعیت خروج صفر (موفقیت) خواهد بود، در غیر این صورت ETIMEDOUT است. این امکان فراهم می‌شود تا اسکریپتی که ntpd را اجرا می‌کند بتواند پیش از ادامه به راحتی منتظر اولین تنظیم ساعت بماند.


تنظیم تدریجی (Slew) تا ۶۰۰ ثانیه.

به‌طور معمول، اگر آفست کمتر از آستانه پرش باشد (که به‌طور پیش‌فرض ۱۲۸ میلی‌ثانیه است) زمان به تدریج تنظیم می‌شود و اگر بالاتر از آستانه باشد به صورت پرشی (step) تنظیم خواهد شد. این گزینه آستانه را روی ۶۰۰ ثانیه قرار می‌دهد که به خوبی درون پنجره دقت برای تنظیم دستی ساعت قرار دارد. نکته: از آنجا که نرخ تنظیم تدریجی در هسته‌های معمول یونیکس به 0.5 میلی‌ثانیه بر ثانیه محدود است، هر ثانیه تعدیل نیازمند یک بازه استهلاک ۲۰۰۰ ثانیه‌ای است. بنابراین تنظیمی به بزرگی ۶۰۰ ثانیه برای تکمیل به تقریباً ۱۴ روز زمان نیاز خواهد داشت. این گزینه می‌تواند با گزینه‌های -g و -q استفاده شود. برای گزینه‌های دیگر دستورالعمل فایل پیکربندی tinker را ببینید. نکته: نظم‌بخشی زمان هسته با این گزینه غیرفعال می‌شود.


استفاده از شمارنده چرخه پردازنده (فقط در ویندوز).

تلاش برای جایگزینی شمارنده پردازنده به جای QueryPerformanceCounter. شمارنده پردازنده و QueryPerformanceCounter مقایسه می‌شوند و اگر فرکانس یکسانی داشته باشند، شمارنده پردازنده (RDTSC در x86) مستقیماً استفاده می‌شود که از سربار فراخوانی سیستمی جلوگیری می‌کند.


اجبار به استفاده از شمارنده چرخه پردازنده (فقط در ویندوز).

اجبار به جایگزینی شمارنده پردازنده به جای QueryPerformanceCounter. شمارنده پردازنده (RDTSC در x86) بدون قید و شرط با فرکانس داده‌شده (بر حسب هرتز) استفاده می‌شود.


ثبت در mDNS به عنوان سرور NTP.

ثبت به عنوان سرور NTP در سرور محلی mDNS که امکان شناسایی سرور از طریق جستجوی کلاینت mDNS را فراهم می‌سازد.

-?, --help

نمایش اطلاعات نحوه استفاده و خروج.
-!, --more-help

ارسال اطلاعات تکمیلی نحوه استفاده به یک صفحه‌بند (pager).

نمایش نسخه برنامه و خروج. حالت پیش‌فرض 'v' است که نسخه‌ای ساده را چاپ می‌کند. حالت 'c' اطلاعات حق نشر را چاپ می‌کند و 'n' اعلان کامل حق نشر را چاپ می‌نماید.

هر گزینه‌ای که به عنوان not presettable علامت‌گذاری نشده باشد می‌تواند با بارگیری مقادیر از متغیرهای محیطی زیر از پیش تنظیم شود:

NTPD_<option-name> یا NTPD

ابزار ntpd با تبادل پیام با یک یا چند سرور پیکربندی‌شده در یک بازه زمانی مشخص برای پرس‌وجو (poll interval) عمل می‌کند. هنگامی که این برنامه، چه برای اولین بار و چه دفعات بعد، راه‌اندازی می‌شود، نیازمند چندین تبادل پیام از اکثر این سرورها است تا الگوریتم‌های پردازش سیگنال و کاهش خطا بتوانند داده‌ها را جمع‌آوری و پالایش کرده و ساعت را تنظیم کنند. برای محافظت از شبکه در برابر هجوم ترافیک ناگهانی (bursts)، فاصله زمانی پرس‌وجوی اولیه برای هر سرور به اندازه یک بازه تصادفی به مدت چند ثانیه به تاخیر می‌افتد. با فاصله زمانی اولیه پیش‌فرض ۶۴ ثانیه، ممکن است چند دقیقه طول بکشد تا ساعت تنظیم شود. این تاخیر اولیه برای تنظیم ساعت را می‌توان با استفاده از کلمه کلیدی iburst همراه با دستور پیکربندی server ، همان‌گونه که در ntp.conf(5) شرح داده شده است، به شکل ایمن و چشمگیری کاهش داد.

بیشتر سیستم‌عامل‌ها و سخت‌افزارهای امروزی شامل یک تراشه ساعت زمان واقعی یا زمان سال (TOY) هستند تا زمان را در دوره‌هایی که برق قطع است حفظ کنند. هنگامی که رایانه بوت می‌شود، این تراشه برای مقداردهی اولیه به زمان سیستم‌عامل استفاده می‌شود. پس از آنکه رایانه با یک سرور NTP همگام‌سازی شد، سیستم‌عامل هر از گاهی این تراشه را تصحیح می‌کند. در حالت پیش‌فرض، اگر ntpd تشخیص دهد که زمان روی میزبان بیش از ۱۰۰۰ ثانیه با زمان سرور اختلاف دارد، ntpd فرض می‌کند که مشکلی اساسی وجود دارد و تنها اقدام قابل اطمینان این است که کاربر یا مدیر سیستم مداخله کرده و ساعت را به صورت دستی تنظیم کند. (دلایل این امر می‌تواند شامل نبود تراشه TOY، خالی شدن باتری آن، یا کیفیت بسیار پایین تراشه باشد.) این موضوع باعث می‌شود که ntpd با یک پیام وحشت (panic) در لاگ سیستم متوقف شده و خارج شود. گزینه -g این بررسی را نادیده می‌گیرد و ساعت بدون توجه به زمان تراشه روی زمان سرور تنظیم خواهد شد (تا ۶۸ سال در گذشته یا آینده — این یک محدودیت پروتکل NTPv4 است). با این حال، برای محافظت در برابر سخت‌افزار معیوب، مانند هنگامی که باتری CMOS خراب شده یا شمارنده ساعت آسیب دیده است، پس از اینکه ساعت یک بار تنظیم شد، خطای بیشتر از ۱۰۰۰ ثانیه در هر صورت موجب خروج ntpd خواهد شد.

در شرایط عادی، ntpd ساعت را در گام‌های کوچک تنظیم می‌کند تا مقیاس زمانی به طور موثر پیوسته و بدون گسستگی باقی بماند. در شرایط تراکم شدید شبکه، نوسان تاخیر رفت و برگشت (jitter) می‌تواند از ۳ ثانیه فراتر رود و فاصله همگام‌سازی (که برابر است با نصف تاخیر رفت و برگشت به اضافه مولفه‌های بودجه خطا) ممکن است بسیار بزرگ شود. الگوریتم‌های ntpd آفست‌های نمونه‌ای که از ۱۲۸ میلی‌ثانیه فراتر روند را دور می‌اندازند، مگر اینکه بازه‌ای که طی آن هیچ نمونه آفستی کمتر از ۱۲۸ میلی‌ثانیه نبوده است از ۹۰۰ ثانیه تجاوز کند. نخستین نمونه پس از آن، صرف‌نظر از مقدار آفست، ساعت را با پرش روی زمان ارائه‌شده تنظیم می‌کند. در عمل، این کار نرخ هشدارهای اشتباهی که ساعت به اشتباه دچار پرش می‌شود را به میزانی بسیار ناچیز کاهش می‌دهد.

در نتیجه این رفتار، پس از تنظیم ساعت، حتی در موارد شدید تراکم مسیر شبکه و نوسان، ساعت به ندرت بیش از ۱۲۸ میلی‌ثانیه منحرف می‌شود. گاهی اوقات، به ویژه هنگامی که ntpd برای اولین بار بدون یک فایل drift معتبر بر روی سیستمی با انحراف ذاتی بزرگ راه‌اندازی می‌شود، ممکن است خطا افزایش یافته و از ۱۲۸ میلی‌ثانیه بیشتر شود؛ که این امر در صورتی که زمان ساعت محلی بیش از ۱۲۸ ثانیه نسبت به سرور جلوتر باشد باعث تنظیم ساعت به عقب خواهد شد. در برخی برنامه‌های کاربردی، ممکن است این رفتار غیرقابل قبول باشد. با این حال، راهکارهای متعددی وجود دارد. اگر گزینه -x در خط فرمان گنجانده شود، ساعت هرگز دچار پرش نمی‌شود و فقط اصلاحات تدریجی (slew) به کار خواهند رفت. اما این انتخاب هزینه‌ای دارد که باید قبل از تصمیم به استفاده از گزینه -x به دقت بررسی شود. حداکثر نرخ تنظیم تدریجی ممکن در نتیجه اصول درستی که طراحی پروتکل و الگوریتم‌های NTP بر پایه آن‌ها استوار است، به ۵۰۰ قسمت در میلیون (PPM) محدود شده است. در نتیجه، همگرا شدن ساعت محلی با یک آفست قابل قبول ممکن است زمان زیادی ببرد، یعنی حدود ۲۰۰۰ ثانیه به ازای هر ثانیه‌ای که ساعت خارج از محدوده قابل قبول قرار دارد. در طول این بازه، ساعت محلی با هیچ ساعت شبکه دیگری یکپارچه نخواهد بود و سیستم نمی‌تواند برای برنامه‌های توزیع‌شده‌ای که به زمان شبکه دقیقاً همگام نیاز دارند استفاده شود.

با وجود اقدامات احتیاطی فوق، گاهی اوقات هنگامی که خطاهای فرکانسی بزرگی وجود دارد، آفست‌های زمانی به بیرون از محدوده ۱۲۸ میلی‌ثانیه منحرف می‌شوند و در نهایت یک تصحیح زمانی پرشی یا تدریجی مورد نیاز خواهد بود. اگر به دنبال چنین تصحیحی خطای فرکانس آن‌چنان بزرگ باشد که اولین نمونه خارج از محدوده قابل قبول قرار گیرد، ntpd وارد همان حالتی می‌شود که فایل ntp.drift وجود ندارد. هدف از این رفتار، اصلاح سریع فرکانس و بازگرداندن عملکرد به حالت ردیابی عادی است. در شدیدترین موارد (میزبان time.ien.it به ذهن می‌آید)، ممکن است گاه‌به‌گاه تصحیحات پرش/تدریجی و تصحیحات فرکانسی پس از آن رخ دهد. در این موارد، استفاده از کلمه کلیدی burst هنگام پیکربندی سرور کمک می‌کند، اما تنها زمانی که از مالک میزبان مقصد برای انجام این کار اجازه داشته باشید.

در نهایت، در گذشته بسیاری از اسکریپت‌های راه‌اندازی برنامه‌های ntpdate(1) یا sntp(1) را اجرا می‌کردند تا ساعت سیستم را پیش از شروع ntpd(1) به زمان درست نزدیک کنند، اما این کار هرگز چیزی بیش از یک راهکار موقت متوسط نبوده و دیگر مورد نیاز نیست. اگر دستورالعمل‌های بخش راه‌اندازی NTP (بهترین شیوه فعلی) را دنبال می‌کنید و همچنان لازم است زمان سیستم را پیش از شروع ntpd تنظیم کنید، لطفاً یک گزارش باگ باز کنید و وضعیت را شرح دهید، و سپس در صورتی که واقعاً نیاز دارید ساعت را قبل از راه‌اندازی ntpd تنظیم نمایید، به استفاده از sntp(1) نگاهی بیندازید.

روشی برای راه‌اندازی ntpd(1) وجود دارد که اغلب به تمامی مشکلات ذکرشده در بالا رسیدگی می‌کند.

ابتدا، از گزینه iburst روی مدخل‌های server خود استفاده کنید.

اگر بتوانید یک فایل ntp.drift مناسب را نیز حفظ کنید، آنگاه ntpd(1) به طور موثری "شروع گرم" (warm-start) خواهد داشت و ساعت سیستم شما در زمانی کمتر از ۱۱ ثانیه پایدار خواهد شد.

در اولین فرصت ممکن در توالی راه‌اندازی سیستم، ntpd(1) را حداقل با گزینه‌های -g و شاید -N راه‌اندازی کنید. سپس، سایر فرایندهای "عادی" خود را آغاز نمایید. این کار به ntpd(1) تا حد ممکن زمان می‌دهد تا ساعت سیستم را همگام و پایدار کند.

در نهایت، اگر فرایندهایی مانند dovecot یا سرورهای پایگاه‌داده دارید که به زمانی یکنواخت صعودی (monotonically-increasing) نیاز دارند، ntp-wait(1) را در دیرترین زمان ممکن در توالی بوت سیستم (شاید با فلگ -v ) اجرا کنید؛ و پس از خروج موفقیت‌آمیز ntp-wait(1) ، آغاز هر فرایندی که به زمان پایدار نیاز دارد تا بیشترین حد ممکن ایمن خواهد بود.

رفتار ntpd در هنگام راه‌اندازی بستگی به وجود فایل فرکانس (معمولاً ntp.drift, ) دارد. این فایل حاوی جدیدترین تخمین از خطای فرکانس ساعت است. هنگامی که ntpd راه‌اندازی می‌شود و این فایل وجود ندارد، ntpd وارد یک حالت ویژه می‌شود که برای انطباق سریع با خطای زمان و فرکانس نوسان‌ساز ساعت سیستم طراحی شده است. این کار تقریباً ۱۵ دقیقه طول می‌کشد و پس از آن زمان و فرکانس روی مقادیر نامی تنظیم می‌شوند و ntpd وارد حالت عادی می‌شود، جایی که زمان و فرکانس به طور مداوم نسبت به سرور ردیابی می‌شوند. پس از یک ساعت، فایل فرکانس ایجاد شده و آفست فرکانس فعلی در آن نوشته می‌شود. هنگامی که ntpd راه‌اندازی می‌شود و این فایل وجود دارد، فرکانس ntpd از روی فایل مقداردهی اولیه شده و بلافاصله وارد حالت عادی می‌شود. پس از آن، آفست فرکانس فعلی در فواصل زمانی یک‌ساعته در فایل نوشته می‌شود.

ابزار ntpd می‌تواند در هر یک از چندین حالت، از جمله متقارن فعال/غیرفعال (symmetric active/passive)، کلاینت/سرور همه‌پخشی/چندپخشی (broadcast/multicast) و منی‌کست (manycast)، همان‌گونه که در صفحه "Association Management" (موجود به عنوان بخشی از مستندات HTML ارائه‌شده در /usr/share/doc/ntp) شرح داده شده است، عمل کند. این برنامه معمولاً به طور پیوسته کار می‌کند و در عین حال تغییرات کوچک فرکانس را پایش کرده و ساعت را برای دستیابی به نهایت دقت اصلاح می‌نماید. با این حال، می‌تواند در یک حالت یک‌باره نیز کار کند که در آن زمان از یک سرور خارجی دریافت شده و فرکانس از یک فایل فرکانس ثبت‌شده قبلی تنظیم می‌شود. یک کلاینت همه‌پخشی/چندپخشی یا منی‌کست می‌تواند سرورهای دوردست را کشف کرده، ضریب تصحیح تاخیر انتشار سرور-کلاینت را محاسبه کند و خود را به طور خودکار پیکربندی نماید. این ویژگی امکان استقرار ناوگانی از ایستگاه‌های کاری را بدون تعیین جزئیات پیکربندی مختص به محیط محلی فراهم می‌سازد.

به‌طور پیش‌فرض، ntpd در حالت پیوسته اجرا می‌شود که در آن از هر یک از چندین سرور خارجی احتمالی، در فواصل زمانی تعیین‌شده توسط یک ماشین وضعیت پیچیده، پرس‌وجو می‌شود. ماشین وضعیت، نوسان تصادفی تاخیر رفت و برگشت و سرگردانی فرکانس نوسان‌ساز را اندازه‌گیری کرده و بهترین فاصله پرس‌وجو را با استفاده از یک الگوریتم اکتشافی تعیین می‌کند. به طور معمول و در اکثر محیط‌های عملیاتی، ماشین وضعیت با فواصل زمانی ۶۴ ثانیه‌ای شروع کرده و در نهایت طی مراحلی به ۱۰۲۴ ثانیه افزایش می‌یابد. مقدار کمی تغییر تصادفی برای جلوگیری از همزمانی ترافیک روی سرورها اعمال می‌شود. علاوه بر این، در صورتی که یک سرور برای مدتی غیرقابل دسترس شود، فاصله زمانی پرس‌وجو به صورت مرحله‌ای به ۱۰۲۴ ثانیه افزایش می‌یابد تا سربار شبکه کاهش یابد.

در برخی موارد ممکن است اجرای مداوم ntpd عملی نباشد. یک راهکار رایج، اجرای برنامه‌های ntpdate(1) یا sntp(1) از طریق یک وظیفه cron(8) در زمان‌های مشخص بوده است. با این حال، این برنامه‌ها فاقد الگوریتم‌های دقیق پردازش سیگنال، بررسی خطا یا تعدیل خطای موجود در ntpd هستند. گزینه -q برای همین منظور در نظر گرفته شده است. تنظیم این گزینه باعث می‌شود که ntpd بلافاصله پس از تنظیم ساعت برای نخستین بار خارج شود. روال تنظیم اولیه ساعت همانند حالت پیوسته است؛ بیشتر برنامه‌های کاربردی احتمالاً مایلند کلمه کلیدی iburst را همراه با دستور پیکربندی server مشخص کنند. با این کلمه کلیدی، رگباری از پیام‌ها برای پالایش داده‌ها رد و بدل شده و ساعت در حدود ۱۰ ثانیه تنظیم می‌شود. اگر پس از چند دقیقه پاسخی دریافت نشود، دیمن منقضی شده و خارج می‌شود. پس از یک دوره سوگواری مناسب، برنامه ntpdate(1) بازنشسته خواهد شد.

هنگامی که پشتیبانی هسته برای نظم‌بخشی به فرکانس ساعت در دسترس باشد (که در نسخه‌های اصلی سولاریس، Tru64، لینوکس و FreeBSD چنین است)، یک ویژگی مفید برای نظم‌بخشی به فرکانس ساعت فراهم می‌شود. ابتدا، ntpd در حالت مداوم با سرورهای انتخابی اجرا می‌شود تا آفست فرکانس ساعت ذاتی را در فایل فرکانس اندازه‌گیری و ثبت کند. ممکن است چند ساعت طول بکشد تا فرکانس و آفست تثبیت شوند. سپس ntpd متوقف شده و در صورت نیاز در حالت یک‌باره اجرا می‌شود. در هر بار راه‌اندازی، فرکانس از فایل خوانده شده و فرکانس هسته مقداردهی اولیه می‌گردد.

این نسخه از NTP شامل یک ماشین وضعیت دقیق برای کاهش بار شبکه در عین حفظ کیفیت همگام‌سازی متناسب با نوسان و سرگردانی مشاهده‌شده است. راه‌های متعددی برای سفارشی‌سازی عملکرد وجود دارد تا با کاهش فاصله، دقت افزایش یابد یا با افزایش آن، سربار شبکه کاهش پیدا کند. با این حال، به کاربر توصیه می‌شود که پیامدهای تغییر محدوده تنظیم پرس‌وجو از حداقل پیش‌فرض ۶۴ ثانیه به حداکثر پیش‌فرض ۱۰۲۴ ثانیه را به دقت در نظر بگیرد. حداقل پیش‌فرض را می‌توان با دستور tinker minpoll به مقداری نه کمتر از ۱۶ ثانیه تغییر داد. این مقدار برای همه ارتباط‌های پیکربندی‌شده استفاده می‌شود، مگر اینکه با گزینه minpoll در دستور پیکربندی بازنویسی شود. توجه داشته باشید که اکثر راه‌اندازهای دستگاه در صورتی که فاصله زمانی پرس‌وجو کمتر از ۶۴ ثانیه باشد به درستی کار نخواهند کرد و پیوندهای کلاینت manycast و سرور broadcast نیز از مقدار پیش‌فرض استفاده خواهند کرد، مگر اینکه بازنویسی شوند.

در برخی موارد شامل اتصالات dial up یا سرویس‌های دارای هزینه به ازای مصرف، ممکن است افزایش حداقل فاصله به چند ده دقیقه و حداکثر فاصله به حدود یک روز مفید باشد. در شرایط عملیاتی عادی، هنگامی که حلقه نظم‌بخشی ساعت تثبیت شد، فاصله زمانی در گام‌هایی از حداقل به حداکثر افزایش می‌یابد. با این حال، این امر فرض می‌کند که خطای فرکانس ساعت ذاتی به اندازه کافی کوچک است که حلقه نظم‌بخشی بتواند آن را اصلاح کند. محدوده گیراندازی (capture range) حلقه در فاصله ۶۴ ثانیه برابر با ۵۰۰ PPM است که با هر دو برابر شدن فاصله، به نصف کاهش می‌یابد. به عنوان مثال، در حداقل ۱۰۲۴ ثانیه، محدوده گیراندازی تنها ۳۱ PPM است. اگر خطای ذاتی بزرگتر از این باشد، فایل انحراف ntp.drift باید به طور ویژه تنظیم شود تا خطای باقیمانده را به زیر این حد کاهش دهد. پس از انجام این کار، فایل انحراف به طور خودکار یک بار در ساعت به‌روزرسانی شده و برای مقداردهی اولیه فرکانس در راه‌اندازی‌های بعدی دیمن در دسترس خواهد بود.

در سناریوهایی که مقدار قابل توجهی داده باید از طریق مودم‌های تلفنی بارگیری یا بارگذاری شود، کیفیت زمان‌سنجی می‌تواند به شدت کاهش یابد. این اتفاق به این دلیل رخ می‌دهد که تاخیرهای تفاضلی در دو جهت ارسال و دریافت داده می‌تواند بسیار زیاد باشد. در بسیاری از موارد، خطاهای زمان ظاهری به قدری بزرگ هستند که از آستانه پرش فراتر رفته و تصحیح پرشی می‌تواند در حین انتقال داده و پس از آن رخ دهد.

فیلتر huff-n'-puff برای اصلاح آفست زمان ظاهری در این موارد طراحی شده است. این فیلتر به آگاهی از تاخیر انتشار در زمانی که هیچ ترافیک دیگری وجود ندارد وابسته است. در سناریوهای رایج، این وضعیت در ساعات غیر کاری رخ می‌دهد. فیلتر یک ثبات تغییر جهت (shift register) را نگهداری می‌کند که حداقل تاخیر را در طول تازه‌ترین بازه زمانی که معمولاً بر حسب ساعت اندازه‌گیری می‌شود به خاطر می‌سپارد. تحت شرایط تاخیر شدید، فیلتر با استفاده از علامت آفست و تفاوت بین تاخیر ظاهری و حداقل تاخیر، آفست ظاهری را تصحیح می‌کند. نام این فیلتر منعکس‌کننده تصحیح منفی (huff) و مثبت (puff) است که به علامت آفست بستگی دارد.

این فیلتر با دستور tinker و کلمه کلیدی huffpuff فعال می‌شود، همان‌گونه که در ntp.conf(5) شرح داده شده است.

برای متغیرهای محیطی پیکربندی، بخش پیش‌تنظیم‌های گزینه‌ها (OPTION PRESETS) را ببینید.

/etc/ntp.conf

نام پیش‌فرض فایل پیکربندی
/etc/ntp.drift

نام پیش‌فرض فایل انحراف فرکانس (drift)
/etc/ntp.keys

نام پیش‌فرض فایل کلیدها

یکی از مقادیر خروج زیر بازگردانده خواهد شد:

0 (EXIT_SUCCESS)

اجرای موفقیت‌آمیز برنامه.
1 (EXIT_FAILURE)

عملیات شکست خورد یا ساختار دستور نامعتبر بود.
70 (EX_SOFTWARE)

کتابخانه libopts با یک خطای عملیاتی داخلی مواجه شد. لطفاً آن را به autogen-users@lists.sourceforge.net گزارش دهید. با تشکر.

ntp.conf(5), ntpdate(1), ntpdc(1), ntpq(1), sntp(1)

علاوه بر صفحات راهنمای ارائه‌شده، مستندات جامع بر روی وب جهان‌گستر در نشانی http://www.ntp.org در دسترس است. تصویری از این مستندات در قالب HTML در مسیر /usr/share/doc/ntp موجود می‌باشد. David L. Mills, Network Time Protocol (Version 1), RFC1059

David L. Mills, Network Time Protocol (Version 2), RFC1119

David L. Mills, Network Time Protocol (Version 3), RFC1305

David L. Mills and J. Martin, Ed. and J. Burbank and W. Kasch, Network Time Protocol Version 4: Protocol and Algorithms Specification, RFC5905

David L. Mills and B. Haberman, Ed., Network Time Protocol Version 4: Autokey Specification, RFC5906

H. Gerstung and C. Elliott and B. Haberman, Ed., Definitions of Managed Objects for Network Time Protocol Version 4: (NTPv4), RFC5907

R. Gayraud and B. Lourdelet, Network Time Protocol (NTP) Server Option for DHCPv6, RFC5908

دانشگاه دلاور (University of Delaware) و بنیاد پروتکل زمان شبکه (Network Time Foundation)

حق نشر (C) 1992-2024 متعلق به دانشگاه دلاور و Network Time Foundation است؛ تمامی حقوق محفوظ است. این برنامه تحت شرایط مجوز NTP، در http://ntp.org/license منتشر شده است.

ابزار ntpd تا حدی حجیم شده است. اگرچه خیلی بزرگ نیست، اما از آنچه ممکن است برای اجرای یک ntpd با اولویت بالا بر روی یک ایستگاه کاری مطلوب باشد بزرگتر شده است، به ویژه از آنجا که بسیاری از ویژگی‌های پیشرفته که فضا را اشغال کرده‌اند، بیشتر با در نظر گرفتن یک سرور اصلی شلوغ طراحی شده‌اند تا یک ایستگاه کاری با لایه (stratum) بالا.

لطفاً گزارش‌های اشکال را به نشانی‌های روبرو ارسال کنید: https://bugs.ntp.org, bugs@ntp.org

بخش‌هایی از این سند از FreeBSD اقتباس شده است.

این صفحه راهنما با استفاده از AutoGen از تعاریف گزینه‌های ntpd تولید شده است.

25 May 2024 4.2.8p18