CHRONY.CONF(5) Configuration Files CHRONY.CONF(5)

chrony.conf - پرونده پیکربندی دیمن همگام‌سازی زمان chrony

chrony.conf

این پرونده دیمن chronyd را پیکربندی می‌کند. مکان پیش‌فرض کامپایل‌شده آن /etc/chrony.conf است. مکان‌های دیگر را می‌توان در خط فرمان chronyd با گزینه -f مشخص کرد.

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

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

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

پرونده پیکربندی ممکن است حاوی خطوط توضیحات باشد. خط توضیح خطی است که با صفر یا چند فاصله و به دنبال آن یکی از نویسه‌های زیر آغاز می‌شود: !، ;، #، %. هر خطی با این قالب نادیده گرفته خواهد شد.

server hostname [option]...

دستورالعمل server یک سرور NTP را مشخص می‌کند که می‌تواند به عنوان یک منبع زمان استفاده شود. رابطه کلاینت-سرور کاملاً سلسه‌مراتبی است: یک کلاینت ممکن است زمان سیستم خود را با زمان سرور همگام کند، اما زمان سیستم سرور هرگز تحت تأثیر کلاینت قرار نخواهد گرفت.

سرور را می‌توان با نام میزبان یا نشانی IP آن مشخص کرد. اگر نام میزبان در هنگام راه‌اندازی قابل تفکیک نباشد، chronyd در فواصل زمانی افزایشی مجدداً تلاش خواهد کرد، و همچنین زمانی که دستور online در chronyc صادر شود.

رکورد DNS ممکن است در طول زمان تغییر کند. نشانی استفاده‌شده با یک نشانی تازه تفکیک‌شده جایگزین خواهد شد، هنگامی که سرور غیرقابل دسترس شود (یعنی هیچ پاسخ معتبری به ۸ درخواست آخر دریافت نشود)، از حالت همگام خارج شود، یک falseticker شود (یعنی با اکثریت منابع دیگر همخوانی نداشته باشد)، یا فاصله ریشه بیش از حد بزرگ باشد (حد آن می‌تواند با دستورالعمل maxdistance پیکربندی شود). جایگزینی خودکار حداکثر یک بار در هر ۳۰ دقیقه رخ می‌دهد و در هر زمان فقط یک سرور می‌تواند جایگزین شود. همچنین هنگامی که سرور به طور عادی کار می‌کند، نشانی به صورت دوره‌ای تازه‌سازی می‌شود (این فاصله زمانی را می‌توان با دستورالعمل refresh پیکربندی کرد).

این دستورالعمل می‌تواند چندین بار برای مشخص کردن چندین سرور استفاده شود. هر سرور باید نشانی IP متفاوتی داشته باشد تا برای chronyd قابل استفاده باشد. اگر سروری با نام میزبانی مشخص شود که تنها به نشانی‌هایی تفکیک می‌شود که قبلاً توسط سرورهای دیگر استفاده شده‌اند، با آن سرور به عنوان سروری با نشانی ناشناخته رفتار خواهد شد (مثلاً توسط دستور activity در chronyc گزارش می‌شود).

این دستورالعمل از گزینه‌های زیر پشتیبانی می‌کند:

minpoll poll

این گزینه حداقل فاصله بین درخواست‌های ارسال‌شده به سرور را به صورت توانی از ۲ بر حسب ثانیه مشخص می‌کند. به عنوان مثال، minpoll 5 به این معنی است که فاصله نظرسنجی نباید کمتر از ۳۲ ثانیه شود. مقدار پیش‌فرض ۶ (۶۴ ثانیه)، حداقل -7 (۱/۱۲۸ ثانیه) و حداکثر ۲۴ (۶ ماه) است. توجه داشته باشید که فواصل کوتاه‌تر از ۶ (۶۴ ثانیه) معمولاً نباید برای سرورهای عمومی در اینترنت استفاده شوند، زیرا ممکن است سوءاستفاده تلقی شود. فاصله زمانی زیر یک ثانیه تنها زمانی فعال می‌شود که سرور در دسترس باشد و تأخیر رفت و برگشت کمتر از ۱۰ میلی‌ثانیه باشد، یعنی سرور باید در یک شبکه محلی باشد.

maxpoll poll

این گزینه حداکثر فاصله بین درخواست‌های ارسال‌شده به سرور را به صورت توانی از ۲ بر حسب ثانیه مشخص می‌کند. به عنوان مثال، maxpoll 9 نشان می‌دهد که فاصله نظرسنجی باید در حد ۹ یا کمتر از آن (۵۱۲ ثانیه) باقی بماند. مقدار پیش‌فرض ۱۰ (۱۰۲۴ ثانیه)، حداقل -7 (۱/۱۲۸ ثانیه) و حداکثر ۲۴ (۶ ماه) است.

iburst

با این گزینه، chronyd با رگباری از ۴ تا ۸ درخواست شروع می‌کند تا اولین به‌روزرسانی ساعت را سریع‌تر انجام دهد. همچنین هر بار که منبع با دستور online در chronyc از حالت آفلاین به آنلاین تغییر وضعیت دهد، این رگبار تکرار خواهد شد.

burst

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

key ID

پروتکل NTP از یک کد اصالت‌سنجی پیام (MAC) برای جلوگیری از به هم ریختن زمان سیستم رایانه‌ها توسط بسته‌های سرکش ارسال‌شده به آن‌ها پشتیبانی می‌کند. این MAC به عنوان تابعی از یک کلید مشخص‌شده در پرونده کلید تولید می‌شود، که توسط دستورالعمل keyfile تعیین می‌گردد.

گزینه key مشخص می‌کند که chronyd باید از کدام کلید (با شناسه‌ای در محدوده ۱ تا 2^32-1) برای احراز اصالت درخواست‌های ارسالی به سرور و تأیید پاسخ‌های آن استفاده کند. سرور نیز باید همین کلید را برای این شماره پیکربندی کرده باشد؛ در غیر این صورت هیچ ارتباطی بین رایانه‌ها امکان‌پذیر نخواهد بود.

اگر سرور در حال اجرای ntpd باشد و اندازه خروجی تابع هش استفاده‌شده توسط کلید بیشتر از ۱۶۰ بیت باشد (مانند SHA256)، گزینه version باید برای سازگاری روی ۴ تنظیم شود.

nts

این گزینه احراز اصالت را با استفاده از سازوکار امنیت زمان شبکه (NTS) فعال می‌کند. برخلاف گزینه key، نیازی نیست سرور و کلاینت کلیدی را در یک پرونده کلید به اشتراک بگذارند. NTS دارای یک پروتکل برقراری کلید (NTS-KE) است که از پروتکل امنیت لایه انتقال (TLS) برای دریافت کلیدها و کوکی‌های مورد نیاز NTS جهت احراز اصالت بسته‌های NTP استفاده می‌کند.

با این گزینه، نام میزبان مشخص‌شده در دستورالعمل server یا pool به ترتیب همان سرور NTS-KE یا استخر سرورهای NTS-KE است. سرور NTP معمولاً روی همان میزبان اجرا می‌شود، اما می‌تواند از سرور NTS-KE جدا باشد (نام میزبان یا نشانی سرور NTP توسط سرور NTS-KE به کلاینت ارائه می‌شود).

سرور NTS-KE را می‌توان با نشانی IP مشخص کرد، به شرطی که در گواهی سرور به عنوان Subject Alternative Name (SAN) گنجانده شده باشد.

certset ID

این گزینه مشخص می‌کند که در هنگام فعال بودن گزینه nts، کدام مجموعه از گواهی‌های معتبر باید برای تأیید گواهی سرور استفاده شود. مجموعه‌های گواهی را می‌توان با دستورالعمل ntstrustedcerts مشخص کرد. مجموعه پیش‌فرض 0 است، که به طور پیش‌فرض شامل گواهی‌های مراجع صدور گواهی معتبر پیش‌فرض سیستم است.

maxdelay delay

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

برای تغییرات کوچک در تأخیر رفت و برگشت، chronyd هنگام پردازش اندازه‌گیری‌ها از یک طرح وزن‌دهی استفاده می‌کند. با این حال، فراتر از یک سطح معین از تأخیر، اندازه‌گیری‌ها احتمالاً چنان مخدوش می‌شوند که بلااستفاده خواهند بود. (این امر به ویژه در شبکه‌های بی‌سیم و سایر پیوندهای کند صادق است، جایی که یک تأخیر طولانی احتمالاً نشان‌دهنده یک تأخیر بسیار نامتقارن ناشی از انتظار پاسخ پشت تعداد زیادی بسته مربوط به نوعی بارگیری است).

اگر کاربر بداند که تأخیرهای رفت و برگشت بالاتر از یک سطح مشخص باید باعث نادیده گرفتن اندازه‌گیری شود، این سطح را می‌توان با گزینه maxdelay تعریف کرد. به عنوان مثال، maxdelay 0.3 نشان می‌دهد که اندازه‌گیری‌های با تأخیر رفت و برگشت بیش از ۰.۳ ثانیه باید نادیده گرفته شوند. مقدار پیش‌فرض ۳ ثانیه و حداکثر مقدار ۱۰۰۰ ثانیه است.

maxdelayratio ratio

این گزینه مشابه گزینه maxdelay در بالا است. chronyd رکوردی از حداقل تأخیر رفت و برگشت در بین اندازه‌گیری‌های قبلی که بافر کرده است را نگه می‌دارد. اگر یک اندازه‌گیری دارای تأخیر رفت و برگشتی باشد که بیشتر از نسبت مشخص‌شده برابر حداقل تأخیر باشد، رد خواهد شد. به طور پیش‌فرض، این آزمون غیرفعال است.

maxdelaydevratio ratio

اگر در یک اندازه‌گیری، نسبت افزایش تأخیر رفت‌وبرگشت (از کمینه تأخیر میان اندازه‌گیری‌های قبلی) به انحراف معیار اندازه‌گیری‌های قبلی بزرگ‌تر از نسبت مشخص‌شده باشد، آن اندازه‌گیری رد خواهد شد. مقدار پیش‌فرض 10.0 است.

maxdelayquant p

این گزینه آزمون maxdelaydevratio را غیرفعال کرده و بیشینه تأخیر قابل‌قبول را به‌جای تابعی از کمینه تأخیر میان اندازه‌گیری‌های بافر شده، به‌صورت چندک (quantile) تأخیر رفت‌وبرگشت مشخص می‌کند. اگر یک اندازه‌گیری دارای تأخیر رفت‌وبرگشتی بزرگ‌تر از برآورد بلندمدت چندک p باشد، رد خواهد شد.

مقدار p تعیین‌شده باید بین 0.05 و 0.95 باشد. برای نمونه، maxdelayquant 0.2 نشان می‌دهد که تنها اندازه‌گیری‌هایی با کمترین ۲۰ درصد تأخیر رفت‌وبرگشت باید پذیرفته شوند. توجه داشته باشید رسیدن چندک برآوردشده به مقدار مورد انتظار ممکن است نیازمند اندازه‌گیری‌های بسیاری باشد. این گزینه برای همگام‌سازی در شبکه‌های محلی عمدتاً ایستا با فواصل نظرسنجی بسیار کوتاه در نظر گرفته شده و امکان ترکیب با گزینه filter را دارد. به‌طور پیش‌فرض، این آزمون به نفع آزمون maxdelaydevratio غیرفعال است.

mindelay delay

این گزینه یک کمینه تأخیر رفت‌وبرگشت ثابت را مشخص می‌کند تا به‌جای کمینه تأخیر میان اندازه‌گیری‌های قبلی استفاده شود. این قابلیت در شبکه‌هایی با پیکربندی ایستا برای بهبود پایداری تصحیحات نوسان (jitter) نامتقارن، وزن‌دهی اندازه‌گیری‌ها و آزمون‌های maxdelayratio و maxdelaydevratio کاربرد دارد. مقدار باید به‌دقت تنظیم شود تا تأثیر مثبتی بر همگام‌سازی داشته باشد.

asymmetry ratio

این گزینه عدم تقارن نوسان شبکه در مسیر منبع را مشخص می‌کند که برای اصلاح انحراف (offset) اندازه‌گیری‌شده بر اساس تأخیر به کار می‌رود. عدم تقارن می‌تواند بین -0.5 و +0.5 باشد. مقدار منفی یعنی تغییرات تأخیر بسته‌های ارسالی به منبع بیشتر از تغییرات تأخیر بسته‌های بازگشتی از منبع است. به‌طور پیش‌فرض، chronyd عدم تقارن را به‌صورت خودکار برآورد می‌کند.

offset offset

این گزینه تصحیحی (به ثانیه) را تعیین می‌کند که بر انحراف‌های اندازه‌گیری‌شده با این منبع اعمال خواهد شد. این گزینه به‌ویژه برای جبران عدم تقارن مشخص در تأخیر شبکه یا خطاهای برچسب‌گذاری زمانی (timestamping) مفید است. برای نمونه، اگر بسته‌های ارسالی به منبع به‌طور میانگین ۱۰۰ میکروثانیه بیشتر از بسته‌های بازگشتی از منبع تأخیر داشته باشند، تصحیح برابر با -0.00005 (-50 میکروثانیه) خواهد بود. مقدار پیش‌فرض 0.0 است.

minsamples samples

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

maxsamples samples

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

maxunreach polls

این گزینه حداکثر تعداد نظرسنجی‌هایی را مشخص می‌کند که این منبع هنگام دردسترس نبودن (عدم دریافت پاسخ معتبر به ۸ درخواست آخر) می‌تواند برای همگام‌سازی انتخاب‌شده باقی بماند. فقط منابعی قابل انتخاب هستند که حداقل یک نمونه تازه‌تر از قدیمی‌ترین نمونه تمام منابع دردسترس داشته باشند. مقدار پیش‌فرض 100000 است.

filter polls

این گزینه یک فیلتر میانه (median filter) را برای کاهش نوفه در اندازه‌گیری‌های NTP فعال می‌کند. فیلتر، نمونه‌های جمع‌آوری‌شده در تعداد نظرسنجی‌های مشخص‌شده را در قالب یک نمونه واحد پردازش خواهد کرد. این گزینه برای استفاده با فواصل نظرسنجی بسیار کوتاه در شبکه‌های محلی با ترافیک بالای مجاز NTP در نظر گرفته شده است.

offline

اگر سرور هنگام شروع chronyd در دسترس نباشد، می‌توان گزینه offline را مشخص کرد. chronyd تا زمان فعال‌سازی (با دستور online در chronyc)، تلاشی برای نظرسنجی از سرور نخواهد کرد.

auto_offline

با این گزینه، در صورت عدم موفقیت در ارسال درخواست (مانند نبود مسیر شبکه)، سرور آفلاین در نظر گرفته می‌شود. این گزینه نیاز به اجرای دستی دستور offline در chronyc هنگام قطع اتصال شبکه را رفع می‌کند. (برای شروع مجدد اندازه‌گیری‌ها هنگام برقراری پیوند، همچنان استفاده از دستور online لازم خواهد بود.)

prefer

این منبع را بر سایر منابع قابل انتخاب فاقد گزینه prefer ترجیح می‌دهد.

noselect

هرگز این منبع را انتخاب نمی‌کند. این گزینه برای پایش (monitoring) کاربرد دارد.

trust

زمان این منبع همواره معتبر فرض می‌شود. این منبع در گزینش منابع تنها در صورتی به‌عنوان falseticker رد می‌شود که منبع دیگری با همین گزینه با آن مغایرت داشته باشد.

require

پیش از به‌روزرسانی ساعت، مستلزم آن است که حداقل یکی از منابع مشخص‌شده با این گزینه قابل انتخاب باشد (اخیراً دردسترس بوده و falseticker نباشد). همراه با گزینه trust، امکان ترکیب ایمن یک منبع احرازهویت‌شده معتمد با منابع احرازهویت‌نشده را برای بهبود دقت ساعت فراهم می‌کند. این منابع تنها در صورت توافق با منبع معتمد و الزامی انتخاب و استفاده خواهند شد.

xleave

این گزینه حالت درهم‌تنیده (interleaved mode) پروتکل NTP (استاندارد RFC 9769) را فعال می‌کند. به سرور اجازه می‌دهد با برچسب‌های زمانی ارسال دقیق‌تر (مانند برچسب‌های زمانی کرنل یا سخت‌افزاری) پاسخ دهد که امکان گنجاندن آن‌ها در خود بسته ارسالی وجود ندارد و باید به بسته پیشین ارجاع داده شوند. این امر دقت و پایداری اندازه‌گیری‌ها را به‌طور چشمگیری بهبود می‌بخشد.

حالت درهم‌تنیده با سرورهایی که فقط از حالت پایه پشتیبانی می‌کنند سازگار است. توجه داشته باشید سرورهای پشتیبانی‌کننده از حالت درهم‌تنیده نیز ممکن است در حالت پایه پاسخ دهند، زیرا این حالت نیازمند نگه‌داری وضعیت (state) برای هر کلاینت است و این وضعیت در صورت کثرت کلاینت‌ها (مانند کوچک بودن clientloglimit) ممکن است حذف شود، یا توسط سایر کلاینت‌های دارای نشانی IP مشترک (مانند سیستم‌های پشت NAT یا درخواست‌های با نشانی مبدأ جعلی) بازنویسی گردد.

گزینه xleave می‌تواند با گزینه presend ترکیب شود تا بازه نگه‌داری وضعیت توسط سرور جهت پاسخ‌گویی در حالت درهم‌تنیده کوتاه‌تر گردد.

polltarget target

تعداد اندازه‌گیری‌های هدف برای الگوریتم رگرسیون که chronyd با تنظیم بازه نظرسنجی بین minpoll و maxpoll برای حفظ آن تلاش می‌کند. مقدار هدف بالاتر موجب تمایل chronyd به بازه‌های نظرسنجی کوتاه‌تر می‌شود. پیش‌فرض 8 است و دامنه مناسب آن از 6 تا 60 می‌باشد.

port port

امکان تعیین درگاه UDP دریافت‌کننده درخواست‌های NTP سرور را فراهم می‌کند. برای سرورهای معمولی به این گزینه نیازی نیست (پیش‌فرض 123، درگاه استاندارد NTP است).

ntsport port

درگاه TCP گوش‌به‌زنگ سرور برای اتصالات NTS-KE را در صورت فعال بودن گزینه nts مشخص می‌کند. پیش‌فرض 4460 است.

presend poll

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

برای جلوگیری از این مشکل، گزینه presend به کار می‌رود. این گزینه یک آرگومان عدد صحیح دریافت می‌کند که کوچک‌ترین بازه نظرسنجی برای تبادل یک جفت بسته NTP اضافی بین کلاینت و سرور پیش از اندازه‌گیری واقعی است. برای نمونه، در صورت تعریف گزینه زیر در دستورالعمل server:

presend 9

هنگامی که فاصله نظرسنجی ۵۱۲ ثانیه یا بیشتر باشد، اندکی قبل (۲ ثانیه) از انجام اندازه‌گیری اصلی، یک بسته کلاینت NTP اضافه به سرور فرستاده خواهد شد.

اگر گزینه presend همراه با گزینه xleave استفاده شود، chronyd به جای یک بسته، دو بسته اضافی ارسال خواهد کرد.

minstratum stratum

هنگامی که منبع همگام‌سازی از میان منابع موجود انتخاب می‌شود، منابع با stratum پایین‌تر معمولاً کمی ترجیح داده می‌شوند. این گزینه می‌تواند برای افزایش stratum منبع به حداقل تعیین‌شده استفاده شود، تا chronyd از انتخاب آن منبع خودداری کند. این ویژگی برای منابع دارای stratum پایین که نامطمئن یا غیردقیق شناخته شده‌اند و تنها باید در صورت غیرقابل دسترس بودن سایر منابع استفاده شوند، مفید است.

version version

این گزینه نسخه NTP بسته‌های ارسالی به سرور را تعیین می‌کند. این می‌تواند زمانی مفید باشد که سرور از پیاده‌سازی قدیمی NTP استفاده می‌کند که به درخواست‌های دارای نسخه جدیدتر پاسخ نمی‌دهد. نسخه پیش‌فرض به گزینه‌های دیگر بستگی دارد. اگر از گزینه extfield یا xleave استفاده شود، نسخه پیش‌فرض ۴ است. اگر از این گزینه‌ها استفاده نشود و گزینه key کلیدی را با استفاده از تابع درهم‌سازی با اندازه خروجی بیش از ۱۶۰ بیت (مانند SHA256) تعیین کند، نسخه پیش‌فرض برای سازگاری با سرورهای قدیمی‌تر chronyd برابر ۳ است. در سایر موارد، نسخه پیش‌فرض ۴ است.

copy

این گزینه مشخص می‌کند که سرور و کلاینت ارتباط نزدیکی با هم دارند، پیکربندی آن‌ها اجازه تشکیل حلقه همگام‌سازی را نمی‌دهد، و کلاینت مجاز است reference ID و stratum سرور را به خود اختصاص دهد. این زمانی مفید است که چندین نمونه از chronyd روی یک رایانه در حال اجرا باشند (مثلاً به دلایل امنیتی یا کارایی)، یکی عمدتاً به عنوان کلاینت برای همگام‌سازی ساعت سیستم کار کند و نمونه‌های دیگر با گزینه -x راه‌اندازی شوند تا به عنوان سرورهای NTP برای سایر رایانه‌ها با ساعت‌های NTP همگام‌شده با نمونه اول عمل کنند.

extfield type

این گزینه یک فیلد افزونه NTPv4 را که با نوع آن به صورت یک عدد هگزادسیمال مشخص شده است، فعال می‌کند. این فیلد در درخواست‌های ارسالی به سرور گنجانده شده و در پاسخ‌های دریافتی، در صورت پشتیبانی سرور، پردازش می‌شود. توجه داشته باشید که برخی از پیاده‌سازی‌های سرور به درخواست‌های حاوی فیلد افزونه ناشناخته پاسخ نمی‌دهند (chronyd به عنوان سرور از نسخه ۲.۰ به این درخواست‌ها پاسخ داده است).

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

فیلدهای افزونه زیر پشتیبانی می‌شوند:

F323

یک فیلد افزونه آزمایشی برای فعال کردن چندین بهبود که برای نسخه بعدی پروتکل NTP (NTPv5) پیشنهاد شده بودند. این فیلد شامل root delay و dispersion با تفکیک‌پذیری بالاتر و یک برچسب زمانی دریافت یکنواخت (monotonic) است که انتقال فرکانس بین سرور و کلاینت را برای بهبود چشمگیر پایداری همگام‌سازی امکان‌پذیر می‌سازد. این فیلد فقط باید برای سرورهایی فعال شود که مشخص است نسخه chronyd ۴.۲ یا بالاتر را اجرا می‌کنند.

F324

یک فیلد افزونه آزمایشی برای فعال کردن استفاده از فیلد تصحیح Precision Time Protocol (PTP) در پیام‌های NTP-over-PTP که توسط ساعت‌های شفاف سرتاسری (end-to-end) یک‌مرحله‌ای (one-step) در سوئیچ‌ها و روترهای شبکه به‌روزرسانی می‌شوند، تا دقت و پایداری همگام‌سازی را به طور چشمگیری بهبود بخشد. NTP-over-PTP می‌تواند با دستورالعمل ptpport و تنظیم گزینه port روی پورت PTP فعال شود. تصحیحات فقط روی اندازه‌گیری‌های NTP با برچسب‌های زمانی سخت‌افزاری (فعال‌شده با دستورالعمل hwtimestamp) اعمال می‌شوند. این فیلد فقط باید برای سرورهایی فعال شود که مشخص است نسخه chronyd ۴.۵ یا بالاتر را اجرا می‌کنند.

ipv4, ipv6

این گزینه‌ها chronyd را مجبور می‌کنند که به ترتیب فقط از آدرس‌های IPv4 یا IPv6 برای این منبع استفاده کند. آن‌ها گزینه -4 یا -6 را در خط فرمان chronyd لغو نمی‌کنند.

pool name [option]...

نحو این دستورالعمل مشابه دستورالعمل server است، با این تفاوت که به جای یک سرور NTP منفرد، برای تعیین یک استخر (pool) از سرورهای NTP استفاده می‌شود. انتظار می‌رود نام استخر به چندین آدرس ترجمه شود که ممکن است در طول زمان تغییر کنند.

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

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

maxsources sources

این گزینه تعداد منابع مورد نظر برای استفاده از استخر را تعیین می‌کند. chronyd به طور مکرر تلاش خواهد کرد نام را ترجمه کند تا زمانی که این تعداد منبعِ پاسخ‌دهنده به درخواست‌ها را به دست آورد. مقدار پیش‌فرض ۴ و حداکثر مقدار ۱۶ است.

یک مثال از دستورالعمل pool:

pool pool.ntp.org iburst maxsources 3

peer hostname [option]...

نحو این دستورالعمل کاملاً شبیه دستورالعمل server است، با این تفاوت که به جای یک ارتباط کلاینت/سرور با سرور NTP، یک ارتباط متقارن با یک همتای (peer) در NTP را مشخص می‌کند. یک ارتباط متقارن منفرد به همتاها اجازه می‌دهد که همزمان سرور و کلاینت یکدیگر باشند. این عمدتاً زمانی مفید است که پیاده‌سازی NTP همتا (مانند ntpd) از ارتباطات متقارن زودگذر (ephemeral) پشتیبانی کند و نیازی به پیکربندی با آدرس این میزبان نداشته باشد. chronyd از ارتباطات زودگذر پشتیبانی نمی‌کند.

این دستورالعمل می‌تواند چندین بار برای تعیین چندین همتا استفاده شود.

گزینه‌های زیر از دستورالعمل server در دستورالعمل peer کار نمی‌کنند: iburst، burst، nts، presend، copy.

هنگام استفاده از گزینه xleave، هر دو همتا باید از حالت درهم‌تنیده (interleaved mode) پشتیبانی کرده و آن را فعال داشته باشند؛ در غیر این صورت همگام‌سازی فقط در یک جهت کار خواهد کرد. هنگامی که کلیدی توسط گزینه key برای فعال‌سازی احراز هویت مشخص می‌شود، هر دو همتا باید از همان کلید و همان شماره کلید استفاده کنند.

توجه داشته باشید که حالت متقارن امنیت کمتری نسبت به حالت کلاینت/سرور دارد. یک حمله منع سرویس (denial-of-service) روی ارتباطات متقارن احراز‌نشده امکان‌پذیر است، یعنی زمانی که همتا بدون گزینه key مشخص شده باشد. مهاجمی که ترافیک شبکه بین دو میزبان را نمی‌بیند، اما می‌داند که آن‌ها با یکدیگر ارتباط همتا دارند، می‌تواند به طور دوره‌ای بسته‌های احرازشده‌نشده با آدرس‌های مبدا جعلی برای آن‌ها ارسال کند تا وضعیت NTP آن‌ها را مختل کرده و از همگام‌سازی آن‌ها با یکدیگر جلوگیری کند. هنگامی که ارتباط احراز هویت شده باشد، مهاجمی که ترافیک شبکه را می‌بیند، اما نمی‌تواند مانع رسیدن بسته‌ها به میزبان دیگر شود، همچنان می‌تواند با بازپخش بسته‌های قدیمی وضعیت را مختل کند. مهاجم عملاً همان قدرت یک مهاجم مرد میانی (man-in-the-middle) را دارد. یک حفاظت جزئی در برابر این حمله در chronyd پیاده‌سازی شده است که می‌تواند از همتاها محافظت کند اگر آن‌ها از بازه زمانی پرسش (polling interval) یکسانی استفاده کنند و هرگز بسته‌ای احرازشده با برچسب زمانی از آینده ارسال نکرده باشند، اما نباید به آن تکیه کرد زیرا اطمینان از برآورده شدن این شرایط دشوار است. اگر دو میزبان باید بتوانند در هر دو جهت با یکدیگر همگام شوند، توصیه می‌شود به جای آن از دو ارتباط کلاینت/سرور مجزا (مشخص‌شده توسط دستورالعمل server در هر دو میزبان) استفاده شود.

initstepslew step-threshold [hostname]...

(این دستورالعمل به نفع دستورالعمل makestep منسوخ شده است.)

هدف از دستورالعمل initstepslew این است که به chronyd اجازه دهد اندازه‌گیری سریعی از خطای ساعت سیستم در زمان بوت انجام دهد و ساعت سیستم را با جهش (stepping) قبل از شروع کارکرد عادی تصحیح کند. از آنجا که این کار معمولاً فقط در یک نقطه مناسب در توالی بوت سیستم انجام می‌شود، هیچ نرم‌افزار دیگری نباید تحت تأثیر منفی این جهش قرار گیرد.

اگر تصحیح مورد نیاز کمتر از آستانه مشخص‌شده باشد، به جای آن از تغییر تدریجی (slew) استفاده می‌شود. این امر راه‌اندازی مجدد chronyd را در حین کارکرد عادی سیستم ایمن‌تر می‌کند.

دستورالعمل initstepslew یک آستانه و فهرستی از سرورهای NTP را به عنوان آرگومان می‌پذیرد. هر یک از سرورها به سرعت چندین بار مورد پرسش قرار می‌گیرند و از یک سازوکار رأی‌گیری اکثریت برای یافتن محتمل‌ترین محدوده خطای ساعت سیستم استفاده می‌شود. یک جهش یا تغییر تدریجی برای تصحیح این خطا بر روی ساعت سیستم اعمال می‌گردد. سپس chronyd وارد حالت کارکرد عادی خود می‌شود.

یک مثال از استفاده از این دستورالعمل:

initstepslew 30 ntp1.example.net ntp2.example.net ntp3.example.net

جایی که ۳ سرور NTP برای انجام اندازه‌گیری استفاده می‌شوند. مقدار 30 نشان می‌دهد که اگر خطای سیستم ۳۰ ثانیه یا کمتر تشخیص داده شود، برای تصحیح آن از تغییر تدریجی (slew) استفاده می‌شود؛ اگر خطا بیش از ۳۰ ثانیه باشد، از یک جهش (step) استفاده خواهد شد.

دستورالعمل initstepslew همچنین می‌تواند در یک محیط LAN ایزوله، جایی که ساعت‌ها به صورت دستی تنظیم می‌شوند، استفاده شود. پایدارترین رایانه به عنوان سرور اصلی انتخاب می‌شود و سایر رایانه‌ها کلاینت‌های آن هستند. اگر هر یک از کلاینت‌ها با دستورالعمل local پیکربندی شده باشد، سرور را می‌توان با یک دستورالعمل initstepslew راه‌اندازی کرد که به برخی یا همه کلاینت‌ها اشاره دارد. سپس، اگر دستگاه سرور مجبور به راه‌اندازی مجدد شود، می‌توان به کلاینت‌ها اعتماد کرد که به طور مشابه با یک چرخ طیار (flywheel) عمل کنند و زمان را برای یک دوره کوتاه در حالی که سرور راه‌اندازی مجدد خود را کامل می‌کند، حفظ نمایند.

دستورالعمل initstepslew از نظر عملکردی مشابه ترکیبی از دستورالعمل‌های makestep و server همراه با گزینه iburst است. تفاوت اصلی این است که سرورهای initstepslew تنها پیش از آغاز عملکرد عادی استفاده می‌شوند و فرایند پیش‌زمینه chronyd تا پایان یافتن initstepslew پیش از خروج منتظر می‌ماند. این امر مانع از آن می‌شود که برنامه‌های اجرا شده در توالی راه‌اندازی سیستم پس از chronyd، ساعت را پیش از تنظیم پله‌ای بخوانند. با دستورالعمل makestep، می‌توان به‌جای آن از فرمان waitsync در chronyc استفاده کرد.

refclock driver parameter[:option]... [option]...

دستورالعمل refclock یک ساعت مرجع سخت‌افزاری را برای استفاده به‌عنوان منبع زمان تعیین می‌کند. این دستور دارای دو پارامتر اجباری است: نام راه‌انداز و یک پارامتر ویژه راه‌انداز. پس از این دو پارامتر، صفر یا چند گزینه refclock قرار می‌گیرد. برخی راه‌اندازها گزینه‌های ویژه‌ای دارند که می‌توان آن‌ها را با استفاده از نویسه : به پارامتر ویژه راه‌انداز ضمیمه کرد.

این دستورالعمل می‌تواند چندین بار برای تعیین چندین ساعت مرجع استفاده شود.

پنج راه‌انداز در chronyd گنجانده شده است:

PPS

راه‌انداز برای رابط کاربری برنامه‌نویسی (API) پالس بر ثانیه (PPS) هسته. پارامتر، مسیر دستگاه PPS است (معمولاً /dev/pps?). از آنجا که ساعت‌های مرجع PPS زمان کامل را ارائه نمی‌دهند، منبع زمان دیگری (مانند سرور NTP یا ساعت مرجع غیر PPS) برای تکمیل نمونه‌های ارسالی از ساعت مرجع PPS مورد نیاز است. یک جایگزین، فعال‌سازی دستورالعمل local برای اجازه همگام‌سازی با یک انحراف ناشناخته اما ثابت است. این راه‌انداز از گزینه زیر پشتیبانی می‌کند:

clear

به‌طور پیش‌فرض، ساعت مرجع PPS از رویدادهای assert (لبه بالا رونده) برای همگام‌سازی استفاده می‌کند. با این گزینه، به‌جای آن از رویدادهای clear (لبه پایین رونده) استفاده خواهد کرد.
مثال‌ها:
refclock PPS /dev/pps0 lock NMEA refid GPS1
refclock SOCK /var/run/chrony.clk.ttyS0.sock offset 0.5 delay 0.2 refid NMEA noselect
refclock PPS /dev/pps1:clear refid GPS2

SOCK

راه‌انداز سوکت دامنه یونیکس (Unix domain socket). این راه‌انداز از یک سوکت دیتاگرام برای دریافت نمونه‌ها از برنامه‌ای دیگر در حال اجرا روی سیستم استفاده می‌کند. پارامتر، مسیر سوکتی است که chronyd هنگام شروع ایجاد خواهد کرد. ساختار پیام‌ها در پرونده refclock_sock.c در کد منبع chrony توصیف شده است.

برنامه‌ای که از پروتکل SOCK پشتیبانی می‌کند، دیمن gpsd است. این برنامه می‌تواند با استفاده از سیگنال PPS گیرنده، اندازه‌گیری‌های دقیقی ارائه دهد و از نسخه 3.25 به بعد، همچنین اندازه‌گیری‌های (بسیار کم‌دقت‌تر) بر اساس زمان‌بندی داده‌های سریال (مانند NMEA) فراهم کند؛ که این قابلیت در زمان عدم ارائه سیگنال PPS توسط گیرنده یا عدم امکان اتصال آن به رایانه مفید است. مسیرهایی که gpsd انتظار دارد سوکت‌ها توسط chronyd ایجاد شوند در صفحه راهنمای gpsd(8) توصیف شده است. توجه داشته باشید که gpsd باید پس از chronyd راه‌اندازی شود تا بتواند به سوکت متصل گردد.

مثال‌ها:

refclock SOCK /var/run/chrony.ttyS0.sock refid GPS1 poll 2 filter 4
refclock SOCK /var/run/chrony.clk.ttyUSB0.sock refid GPS2 offset 0.2 delay 0.1

SHM

راه‌انداز حافظه اشتراکی NTP. این راه‌انداز پروتکل راه‌انداز نوع 28 در ntpd را پیاده‌سازی می‌کند. این راه‌انداز از نظر عملکردی مشابه راه‌انداز SOCK است، اما به‌جای سوکت از یک بخش حافظه اشتراکی استفاده می‌کند. پارامتر، شماره واحد است؛ معمولاً عددی کوچک مانند 0، 1، 2 یا 3 که کلید بخش حافظه از آن به‌صورت 0x4e545030 + unit مشتق می‌شود.

این راه‌انداز از گزینه زیر پشتیبانی می‌کند:

perm=mode

این گزینه مجوزهای دسترسی بخش حافظه اشتراکی ایجاد شده توسط chronyd را تعیین می‌کند. این مجوزها به‌صورت یک حالت عددی مشخص می‌شوند. مقدار پیش‌فرض 0600 است (دسترسی خواندن-نوشتن فقط برای مالک).

برخلاف راه‌انداز SOCK، هیچ ترتیبی برای راه‌اندازی chronyd و برنامه ارائه‌دهنده اندازه‌گیری‌ها تعیین نشده است. انتظار می‌رود در صورت عدم وجود بخش حافظه، هر دو آن را ایجاد کنند. chronyd به بخش موجود متصل خواهد شد حتی اگر مالکی غیر از root یا مجوزهایی متفاوت با آنچه در گزینه perm آمده داشته باشد. این بخش باید پیش از اجرای کد توسط برنامه‌ها یا کاربران غیرقابل اعتماد ایجاد شود تا از ارسال داده‌های نادرست توسط مهاجم به chronyd جلوگیری شود. مالک و مجوزهای بخش را می‌توان با دستور ipcs -m بررسی کرد. به همین دلیل، راه‌انداز SHM به نفع SOCK منسوخ شده است.

مثال‌ها:

refclock SHM 0 poll 3 refid GPS1
refclock SHM 1:perm=0644 refid GPS2

PHC

راه‌انداز ساعت سخت‌افزاری پی‌تی‌پی (PHC). پارامتر، مسیر مطلق به دستگاه ساعت PTP است که باید به‌عنوان منبع زمان استفاده شود، یا نام رابط شبکه‌ای که ساعت PTP آن مورد استفاده قرار می‌گیرد. اگر ساعت به‌جای UTC در TAI نگهداری می‌شود (مثلاً توسط یک دیمن PTP همگام‌سازی می‌شود)، انحراف کنونی UTC-TAI باید با گزینه offset مشخص شود. همچنین می‌توان گزینه refclock مربوط به pps را فعال کرد تا با PHC مانند یک ساعت مرجع PPS رفتار شود و تنها از انحراف زیر-ثانیه برای همگام‌سازی استفاده گردد. این راه‌انداز از گزینه‌های زیر پشتیبانی می‌کند:

nocrossts

این گزینه استفاده از برچسب‌گذاری زمانی متقاطع دقیق (cross timestamping) را غیرفعال می‌کند.

extpps

این گزینه حالت PPS را فعال می‌کند که در آن ساعت PTP پالس‌های یک سیگنال PPS خارجی متصل به ساعت را برچسب‌گذاری زمانی می‌کند. ساعت نیازی به همگام‌سازی ندارد، اما برای تکمیل نمونه‌های PPS به منبع زمان دیگری نیاز است. توجه داشته باشید که برخی ساعت‌های PTP را نمی‌توان طوری پیکربندی کرد که فقط رویدادهای assert یا clear را برچسب‌گذاری کنند؛ بنابراین استفاده از گزینه width برای فیلتر کردن نمونه‌های نادرست PPS ضروری است.

pin=index

این گزینه شناسه پایه (pin) فعال برای برچسب‌گذاری زمانی PPS را مشخص می‌کند. اگر PHC دارای پایه‌های قابل‌پیکربندی نباشد (یعنی عملکرد کانال ثابت باشد)، شناسه باید روی -1 تنظیم شود تا پیکربندی پایه غیرفعال گردد. مقدار پیش‌فرض 0 است.

channel=index

این گزینه شناسه کانال را برای حالت PPS مشخص می‌کند. مقدار پیش‌فرض 0 است.

clear

این گزینه برچسب‌گذاری زمانی رویدادهای clear (لبه پایین رونده) را به‌جای رویدادهای assert (لبه بالا رونده) در حالت PPS فعال می‌کند. این ویژگی ممکن است با برخی ساعت‌ها کار نکند.

مثال‌ها:

refclock PHC /dev/ptp0 poll 0 dpoll -2 offset -37
refclock PHC /dev/ptp1:nocrossts poll 3 pps
refclock PHC /dev/ptp2:extpps:pin=1 width 0.2 poll 2

RTC

راه‌انداز برای استفاده از ساعت زمان واقعی (RTC) به‌عنوان ساعت مرجع. پارامتر، مسیر دستگاه نویسه‌ای RTC است که باید به‌عنوان منبع زمان استفاده شود. این راه‌انداز را نمی‌توان همراه با دستورالعمل‌های rtcfile یا rtcsync استفاده کرد. این راه‌انداز از گزینه زیر پشتیبانی می‌کند:

utc

فرض می‌کند که RTC به‌جای زمان محلی، زمان هماهنگ جهانی (UTC) را نگه می‌دارد.

مثال‌ها:

refclock RTC /dev/rtc0:utc
دستورالعمل refclock از گزینه‌های زیر پشتیبانی می‌کند:

poll poll

برچسب‌های زمانی تولیدشده توسط راه‌اندازهای refclock بلافاصله استفاده نمی‌شوند، بلکه ذخیره شده و توسط یک پالایه میانه در بازه نظرسنجی مشخص‌شده با این گزینه پردازش می‌شوند. این مقدار به صورت توانی از ۲ تعریف می‌شود و می‌تواند منفی باشد تا بازه زیر یک ثانیه را مشخص کند. مقدار پیش‌فرض ۴ (۱۶ ثانیه) است. یک بازه کوتاه‌تر به chronyd اجازه می‌دهد تا سریع‌تر به تغییرات بسامد ساعت سیستم واکنش نشان دهد، اما در صورتی که نمونه‌ها دارای لغزش زیادی باشند ممکن است بر دقت آن تأثیر منفی بگذارد.

dpoll dpoll

برخی راه‌اندازها به رویدادهای خارجی گوش نمی‌دهند و سعی می‌کنند نمونه‌ها را در بازه نظرسنجی خود تولید کنند. این مقدار به صورت توانی از ۲ تعریف می‌شود و می‌تواند منفی باشد تا بازه زیر یک ثانیه را مشخص کند. مقدار پیش‌فرض ۰ (۱ ثانیه) است.

refid refid

این گزینه برای مشخص کردن شناسه مرجع refclock به صورت حداکثر چهار نویسه ASCII استفاده می‌شود. شناسه مرجع پیش‌فرض از سه نویسه اول نام راه‌انداز و شماره refclock تشکیل می‌شود. هر refclock باید یک شناسه مرجع یکتا داشته باشد.

lock refid

این گزینه می‌تواند برای قفل کردن یک refclock از نوع PPS به یک refclock دیگر، که با شناسه مرجع آن مشخص می‌شود، استفاده شود. در این حالت، نمونه‌های PPS دریافتی مستقیماً با نمونه‌های خام حاصل از refclock مشخص‌شده جفت می‌شوند.

rate rate

این گزینه نرخ پالس‌ها در سیگنال PPS را (بر حسب هرتز) تعیین می‌کند. این گزینه نحوه تکمیل پالس‌ها با زمان واقعی را کنترل می‌کند. برای دریافت بیش از یک پالس در ثانیه، باید یک dpoll منفی مشخص شود (-3 برای یک سیگنال ۵ هرتز). مقدار پیش‌فرض ۱ است.

maxlockage pulses

این گزینه حداکثر قدمت نمونه‌ها از refclock مشخص‌شده توسط گزینه lock را بر حسب تعداد پالس‌ها برای جفت شدن با پالس‌ها تعیین می‌کند. افزایش این مقدار زمانی مفید است که نمونه‌ها با نرخی کمتر از پالس‌ها تولید شوند. مقدار پیش‌فرض ۲ است.

width width

این گزینه پهنای پالس‌ها را (بر حسب ثانیه) مشخص می‌کند. این گزینه برای پالایش نمونه‌های PPS زمانی استفاده می‌شود که راه‌انداز نمونه‌ها را برای هر دو لبه بالارونده و پایین‌رونده ارائه می‌دهد. توجه داشته باشید که این گزینه حداکثر خطای مجاز منبع زمانی که نمونه‌های PPS را تکمیل می‌کند، کاهش می‌دهد. اگر چرخه کار (duty cycle) قابل پیکربندی است، ۵۰٪ باید ترجیح داده شود تا خطای مجاز بیشینه شود.

pps

این گزینه chronyd را وادار می‌کند تا با هر refclock (مانند SHM یا PHC) مانند یک refclock از نوع PPS رفتار کند. این می‌تواند زمانی مفید باشد که refclock زمان را با یک انحراف متغیر از تعداد ثانیه‌های کامل ارائه می‌دهد (مانند استفاده از TAI به جای UTC). برای تکمیل نمونه‌های حاصل از refclock به یک منبع زمان دیگر نیاز است.

offset offset

این گزینه می‌تواند برای جبران یک خطای ثابت استفاده شود. افست مشخص‌شده (بر حسب ثانیه) بر تمام نمونه‌های تولیدشده توسط ساعت مرجع اعمال می‌شود. مقدار پیش‌فرض 0.0 است.

delay delay

این گزینه تأخیر NTP منبع را (بر حسب ثانیه) تنظیم می‌کند. نیمی از این مقدار در حداکثر خطای مفروض که در الگوریتم انتخاب منبع استفاده می‌شود، گنجانده می‌شود. افزایش تأخیر برای جلوگیری از عدم وجود اکثریت در انتخاب منبع یا ترجیح دادن منابع دیگر مفید است. مقدار پیش‌فرض 1e-9 (۱ نانوثانیه) است.

stratum stratum

این گزینه لایه (stratum) مربوط به NTP را برای refclock تعیین می‌کند. این می‌تواند زمانی مفید باشد که refclock زمان را با لایه‌ای غیر از ۰ ارائه می‌دهد. مقدار پیش‌فرض ۰ است.

precision precision

این گزینه دقت ساعت مرجع را (بر حسب ثانیه) تعیین می‌کند. مقدار پیش‌فرض، دقت تخمینی ساعت سیستم است.

maxdispersion dispersion

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

filter samples

این گزینه حداکثر تعداد نمونه‌هایی را که می‌توانند در پالایه میانه بین نظرسنجی‌های منبع ذخیره شوند، تعیین می‌کند. این پالایه حدود ۶۰ درصد از نمونه‌های نزدیک‌تر به افست میانه را در یک نمونه ترکیب می‌کند. اگر نمونه‌های بیشتری توسط راه‌انداز در بین نظرسنجی‌ها دریافت شود، قدیمی‌ترین نمونه‌ها دور ریخته می‌شوند. یک نمونه در هر نظرسنجی برای قابل انتخاب بودن منبع کافی است. مقدار پیش‌فرض ۶۴ است. توجه داشته باشید که راه‌انداز PHC دارای پالایش اضافی بر اساس تأخیر خواندن است.

prefer

این منبع را نسبت به سایر منابع قابل انتخاب بدون گزینه prefer ترجیح می‌دهد.

noselect

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

trust

فرض می‌شود زمان این منبع همیشه درست است. این منبع در فرایند انتخاب منبع تنها زمانی می‌تواند به عنوان یک falseticker رد شود که منبع دیگری با این گزینه با آن موافق نباشد.

require

الزام می‌کند که حداقل یکی از منابع مشخص‌شده با این گزینه قبل از به‌روزرسانی ساعت قابل انتخاب باشد (یعنی اخیراً در دسترس بوده و یک falseticker نباشد). همراه با گزینه trust، این می‌تواند برای امکان ترکیب ایمن یک ساعت مرجع قابل اعتماد اما با دقت نه چندان بالا با منابع احراز هویت‌نشده NTP به منظور بهبود دقت ساعت مفید باشد. آنها تنها در صورتی می‌توانند انتخاب شده و برای همگام‌سازی استفاده شوند که با منبع مورد اعتماد و الزامی موافق باشند.

tai

این گزینه مشخص می‌کند که ساعت مرجع زمان را به جای UTC در قالب TAI نگه می‌دارد و chronyd باید افست آن را بر اساس افست فعلی TAI-UTC تصحیح کند. دستورالعمل leapsectz یا leapseclist باید همراه با این گزینه استفاده شود و پایگاه‌داده باید به‌روز نگه داشته شود تا این تصحیح همان‌طور که انتظار می‌رود عمل کند. این گزینه برای ساعت‌های مرجع PPS کاربردی ندارد.

local

این گزینه مشخص می‌کند که ساعت مرجع یک ساعت همگام‌نشده است که پایدارتر از ساعت سیستم می‌باشد (مانند TCXO، OCXO یا ساعت اتمی) و باید به عنوان یک استاندارد محلی برای تثبیت ساعت سیستم استفاده شود. این refclock فرایند انتخاب منبع را دور می‌زند. باید حداکثر یک refclock با این گزینه مشخص شده باشد و باید کوتاه‌ترین بازه نظرسنجی را در میان تمام منابع پیکربندی‌شده داشته باشد.

minsamples samples

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

maxsamples samples

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

maxunreach polls

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

manual

دستورالعمل manual پشتیبانی هنگام اجرا را برای دستور settime در chronyc فعال می‌کند. اگر هیچ دستورالعمل manual درج نشده باشد، هرگونه تلاش برای استفاده از دستور settime در chronyc با پیام خطا مواجه خواهد شد.

توجه داشته باشید که دستور settime می‌تواند در زمان اجرا با استفاده از دستور manual در chronyc فعال شود. (ایده این دو دستور این است که دستور manual رفتار راه‌انداز ساعت دستی را کنترل می‌کند، در حالی که دستور settime اجازه می‌دهد نمونه‌های زمان واردشده به‌صورت دستی ارائه شوند.)

acquisitionport port

به‌طور پیش‌فرض، chronyd به‌عنوان یک کلاینت NTP برای هر درخواست یک سوکت جدید باز می‌کند که پورت مبدأ آن به‌صورت تصادفی توسط سیستم‌عامل انتخاب می‌شود. دستورالعمل acquisitionport می‌تواند برای مشخص کردن پورت مبدأ و استفاده از تنها یک سوکت (به ازای هر خانواده آدرس IPv4 یا IPv6) برای تمام سرورهای پیکربندی‌شده به کار رود. این می‌تواند برای عبور از برخی فایروال‌ها مفید باشد. در صورت عدم ضرورت نباید استفاده شود زیرا تأثیر اندکی بر امنیت کلاینت دارد. اگر روی 0 تنظیم شود، پورت مبدأ سوکت دائمی به‌صورت تصادفی توسط سیستم‌عامل انتخاب خواهد شد.

می‌توان آن را روی همان پورتی که توسط سرور NTP استفاده می‌شود (که می‌تواند با دستورالعمل port پیکربندی شود) تنظیم کرد تا فقط از یک سوکت برای تمام بسته‌های NTP استفاده شود.

نمونه‌ای از دستورالعمل acquisitionport:

acquisitionport 1123

این کار پورت مبدأ استفاده‌شده برای درخواست‌های کلاینت را به پورت UDP 1123 تغییر می‌دهد. سپس می‌توانید از مدیر فایروال بخواهید که آن پورت را باز کند.

bindacqaddress address

دستورالعمل bindacqaddress یک آدرس IP محلی را مشخص می‌کند که chronyd سوکت‌های کلاینت NTP و NTS-KE خود را به آن مقید (bind) می‌کند. نحو آن مشابه دستورالعمل‌های bindaddress و bindcmdaddress است.

برای هر یک از پروتکل‌های IPv4 و IPv6، تنها یک دستورالعمل bindacqaddress می‌تواند مشخص شود.

bindacqdevice interface

دستورالعمل bindacqdevice سوکت‌های کلاینت را به یک دستگاه شبکه مشخص‌شده با نام رابط متصل (bind) می‌کند. این می‌تواند زمانی که آدرس محلی پویا است یا برای فعال‌سازی یک منبع NTP مشخص‌شده با آدرس link-local IPv6 مفید باشد. این دستورالعمل می‌تواند تنها یک رابط را مشخص کند و فقط در Linux پشتیبانی می‌شود.

نمونه‌ای از این دستورالعمل:

bindacqdevice eth0

dscp point

دستورالعمل dscp مقدار Differentiated Services Code Point (DSCP) را در بسته‌های NTP ارسالی روی مقدار مشخص‌شده تنظیم می‌کند. این می‌تواند پایداری اندازه‌گیری‌های NTP را در شبکه‌های محلی که سوییچ‌ها یا روترها برای اولویت‌بندی ارسال بسته‌ها با مقادیر DSCP خاص پیکربندی شده‌اند، بهبود بخشد. مقدار پیش‌فرض 0 و حداکثر مقدار 63 است.

نمونه‌ای از این دستورالعمل (تنظیم کلاس Expedited Forwarding):

dscp 46

dumpdir directory

برای محاسبه نرخ جلو یا عقب افتادن زمان، chronyd باید یک تاریخچه اندازه‌گیری را برای هر یک از منابع زمانی که استفاده می‌کند ذخیره کند.

تمام سیستم‌های پشتیبانی‌شده، به استثنای macOS 10.12 و پیش از آن، دارای پشتیبانی سیستم‌عامل برای تنظیم نرخ جلو یا عقب افتادن جهت جبران خطاهای شناخته‌شده هستند. (در macOS 10.12 و پیش از آن، chronyd باید چنین قابلیتی را با تغییر تدریجی (slew) دوره‌ای ساعت سیستم به جلو یا عقب به میزان مناسب برای جبران خطای انباشته‌شده از زمان تغییر قبلی شبیه‌سازی کند.)

برای چنین سیستم‌هایی، ذخیره تاریخچه اندازه‌گیری در میان راه‌اندازی‌های مجدد chronyd امکان‌پذیر است (با فرض اینکه هیچ تغییری در رفتار ساعت سیستم در زمان عدم اجرای آن ایجاد نشود). دستورالعمل dumpdir شاخه‌ای را تعریف می‌کند که تاریخچه‌های اندازه‌گیری هنگام خروج chronyd یا اجرای دستور dump در chronyc در آن ذخیره می‌شوند.

اگر شاخه وجود نداشته باشد، به‌طور خودکار ایجاد می‌شود.

گزینه -r در chronyd بارگیری پرونده‌های dump را هنگام شروع فعال می‌کند. تمام پرونده‌های dump یافت‌شده در شاخه پس از شروع حذف خواهند شد، حتی اگر گزینه -r وجود نداشته باشد.

نمونه‌ای از این دستورالعمل:

dumpdir /var/run/chrony

منبعی که آدرس IP آن 1.2.3.4 باشد، تاریخچه اندازه‌گیری‌اش در پرونده /var/run/chrony/1.2.3.4.dat ذخیره می‌شود. تاریخچه ساعت‌های مرجع در پرونده‌هایی با نام شناسه مرجع آن‌ها به صورت refid:XXXXXXXX.dat ذخیره می‌شود.

maxsamples samples

دستورالعمل maxsamples حداکثر تعداد پیش‌فرض نمونه‌هایی را که chronyd باید برای هر منبع نگه دارد، تعیین می‌کند. این تنظیم می‌تواند برای منابع مجزا در دستورالعمل‌های server و refclock بازنویسی شود. مقدار پیش‌فرض 0 است که محدودیت قابل تنظیم را غیرفعال می‌کند. محدوده کاربردی 4 تا 64 است.

به‌عنوان یک حالت خاص، تنظیم maxsamples روی 1 ردیابی فرکانس را غیرفعال می‌کند تا منابع بلافاصله و تنها با یک نمونه قابل انتخاب باشند. این می‌تواند زمانی که chronyd با گزینه -q یا -Q شروع می‌شود مفید باشد.

minsamples samples

دستورالعمل minsamples حداقل تعداد پیش‌فرض نمونه‌هایی را که chronyd باید برای هر منبع نگه دارد، تعیین می‌کند. این تنظیم می‌تواند برای منابع مجزا در دستورالعمل‌های server و refclock بازنویسی شود. مقدار پیش‌فرض 6 است. محدوده کاربردی 4 تا 64 است.

مجبور کردن chronyd به نگهداری نمونه‌های بیشتر از حد معمول، نویز را در فرکانس و آفست برآوردشده کاهش می‌دهد، اما پاسخ‌دهی به تغییرات در فرکانس و آفست ساعت را کُند می‌کند. آفست‌ها در گزارش‌های tracking و sourcestats (و پرونده‌های tracking.log و statistics.log) ممکن است کوچک‌تر از آفست‌های واقعی باشند.

ntsaeads ID...

این دستورالعمل فهرستی از شناسه‌های الگوریتم‌های Authenticated Encryption with Associated Data (AEAD) فعال‌شده برای احراز هویت NTS در پیام‌های NTP را مشخص می‌کند. الگوریتم‌ها به ترتیب نزولی اولویت مشخص می‌شوند. الگوریتم‌هایی که توسط نسخه نصب‌شده کتابخانه رمزنگاری (Nettle، GnuTLS) پشتیبانی نمی‌شوند نادیده گرفته می‌شوند.

شناسه‌های زیر پشتیبانی می‌شوند:

•15: AES-SIV-CMAC-256
•30: AES-128-GCM-SIV

فهرست پیش‌فرض شناسه‌ها 30 15 است. AES-128-GCM-SIV به دلیل کلیدهای کوتاه‌تر نسبت به AES-SIV-CMAC-256 ارجحیت دارد، که باعث کوتاه‌تر شدن کوکی‌های NTS می‌شود و قابلیت اطمینان NTS را در شبکه‌هایی که پیام‌های NTP طولانی‌تر را مسدود یا محدود می‌کنند، بهبود می‌بخشد.

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

یک مثال از این دستورالعمل:

ntsaeads 15

این فهرست توسط کارساز NTS نیز استفاده می‌شود.

ntsdumpdir directory

این دستورالعمل دایرکتوری‌ای را برای کلاینت مشخص می‌کند تا کوکی‌های NTS دریافت‌شده از کارساز را در آن ذخیره کند، به این منظور که هنگام راه‌اندازی مجدد chronyd از برقراری درخواست NTS-KE جلوگیری شود. کوکی‌ها برای هر منبع NTP به صورت جداگانه در پرونده‌هایی به نام آدرس IP کارساز NTS-KE (مانند 1.2.3.4.nts) ذخیره می‌شوند. به طور پیش‌فرض، کلاینت کوکی‌ها را ذخیره نمی‌کند.

اگر دایرکتوری وجود نداشته باشد، به صورت خودکار ایجاد خواهد شد.

یک مثال از این دستورالعمل:

ntsdumpdir /var/lib/chrony

این دایرکتوری توسط کارساز NTS نیز برای ذخیره کلیدها استفاده می‌شود.

ntsrefresh interval

این دستورالعمل بیشینه بازه زمانی بین دست‌تکانی‌های NTS-KE (به ثانیه) را برای تازه‌سازی کلیدهای اصالت‌سنجی بسته‌های NTP مشخص می‌کند. مقدار پیش‌فرض 2419200 (۴ هفته) و بیشینه مقدار 2^31-1 (۶۸ سال) است.

این بازه باید طولانی‌تر از بازه‌های نظرسنجی تمام منابع NTP پیکربندی‌شده با استفاده از NTS باشد، در غیر این صورت منبع با بازه نظرسنجی طولانی‌تر در هر نظرسنجی کلیدها را تازه‌سازی می‌کند و هیچ بسته NTP مبادله نخواهد شد.

ntstrustedcerts [set-ID] file|directory

این دستورالعمل پرونده یا دایرکتوری حاوی گواهی‌های مورد اعتماد (در قالب PEM) را مشخص می‌کند که برای اعتبارسنجی گواهی‌های کارسازهای NTS-KE لازم هستند، مانند گواهی‌های مراجع صدور گواهی (CA) معتمد یا گواهی‌های خودامضاشده کارسازها.

آرگومان اختیاری set-ID عددی در محدوده 0 تا 2^32-1 است که مجموعه گواهی‌هایی را انتخاب می‌کند که گواهی‌های پرونده یا دایرکتوری مشخص‌شده به آن اضافه می‌شوند. شناسه پیش‌فرض 0 است، که مجموعه‌ای حاوی CAهای مورد اعتماد پیش‌فرض سیستم است (مگر اینکه دستورالعمل nosystemcert موجود باشد). تمام مجموعه‌های دیگر به طور پیش‌فرض خالی هستند. یک مجموعه گواهی می‌تواند برای اعتبارسنجی یک کارساز NTS با گزینه certset در دستورالعمل server یا pool انتخاب شود.

این دستورالعمل می‌تواند چندین بار برای تعیین یک یا چند مجموعه از گواهی‌های مورد اعتماد، که هرکدام شامل گواهی‌هایی از یک یا چند پرونده و/یا دایرکتوری هستند، استفاده شود.

در صورت تغییر گواهی‌ها (مثلاً پس از تمدید)، راه‌اندازی مجدد chronyd برای بارگذاری مجدد آن‌ها لازم نیست.

یک مثال:

ntstrustedcerts /etc/pki/nts/ca1.example.net.crt
ntstrustedcerts 1 /etc/pki/nts/ca2.example.net.crt
ntstrustedcerts 1 /etc/pki/nts/ca3.example.net.crt
ntstrustedcerts 2 /etc/pki/nts/ntp2.example.net.crt

nosystemcert

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

nocerttimecheck limit

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

یک مثال از این دستورالعمل:

nocerttimecheck 1

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

refresh interval

این دستورالعمل حداقل بازه زمانی (به ثانیه) بین تازه‌سازی آدرس‌های IP منابع NTP مشخص‌شده با نام میزبان را تعیین می‌کند. اگر نام میزبان دیگر به آدرس در حال استفاده حل نشود، با یکی از آدرس‌های جدید جایگزین می‌شود تا از استفاده از کارسازی که دیگر برای سرویس‌دهی در نظر گرفته نشده جلوگیری شود، حتی اگر همچنان به درستی پاسخ دهد و به عنوان دسترس‌ناپذیر جایگزین نشود. در هر زمان تنها یک منبع تازه‌سازی می‌شود و فقط زمانی که پاسخی معتبر دریافت شود (منابع دسترس‌ناپذیر به صورت مستقل جایگزین می‌شوند). مقدار پیش‌فرض 1209600 (۲ هفته) و بیشینه مقدار 2^31-1 (۶۸ سال) است. مقدار 0 تازه‌سازی دوره‌ای را غیرفعال می‌کند.

فرمان refresh می‌تواند برای تازه‌سازی فوری تمام منابع استفاده شود.

authselectmode mode

منابع NTP می‌توانند با گزینه key یا nts مشخص شوند تا اصالت‌سنجی به منظور محدود کردن اثر حملات مرد میانی (man-in-the-middle) فعال شود. مهاجمان می‌توانند بسته‌های NTP را حذف کنند یا به تاخیر بیندازند (تا سقف محدودیت‌های maxdelay و maxdistance)، اما نمی‌توانند برچسب‌های زمانی موجود در بسته‌ها را تغییر دهند. این حمله تنها می‌تواند یک انحراف یا پرش محدود ایجاد کند، و همچنین باعث شود ساعت تندتر یا کندتر از زمان واقعی کار کند (تا دو برابر محدودیت maxdrift).

هنگامی که اصالت‌سنجی برای یک منبع NTP فعال است، مهم است که منابع NTP بدون اصالت‌سنجی که ممکن است در حمله مورد سوءاستفاده قرار گیرند غیرفعال شوند، مثلاً اگر فقط از طریق یک شبکه مورد اعتماد در دسترس نباشند. به عنوان جایگزین، انتخاب منبع می‌تواند با گزینه‌های require و trust پیکربندی شود تا همگام‌سازی با منابع غیراصالت‌سنجی‌شده تنها در صورتی انجام شود که آن‌ها با منابع اصالت‌سنجی‌شده هم‌نظر باشند و احتمالاً اثر مثبتی بر دقت ساعت داشته باشند. توجه داشته باشید که در این حالت اثر حمله بیشتر است. مهاجمان نمی‌توانند پرش یا انحراف دلخواه بزرگی ایجاد کنند، اما کنترل بیشتری روی بسامد ساعت دارند و می‌توانند باعث شوند chronyd اطلاعات نادرست گزارش دهد، مانند root delay و پراکندگی (dispersion) به مراتب کمتر.

این دستورالعمل گزینه‌های انتخاب پیش‌فرض را برای منابع اصالت‌سنجی‌شده و غیراصالت‌سنجی‌شده تعیین می‌کند تا پیکربندی با پرونده پیکربندی و فرمان‌های chronyc ساده‌تر شود. این دستورالعمل یک خط‌مشی برای اصالت‌سنجی تنظیم می‌کند.

منابع مشخص‌شده با گزینه noselect نادیده گرفته می‌شوند (نه به عنوان اصالت‌سنجی‌شده و نه غیراصالت‌سنجی‌شده شمرده می‌شوند)، و آن‌ها همیشه فقط گزینه‌های انتخاب مشخص‌شده در پیکربندی را دارند.

چهار حالت وجود دارد:

require

در این حالت، اصالت‌سنجی برای منابع NTP اکیداً الزامی است. اگر هر منبع NTP بدون اصالت‌سنجی مشخص شود، به طور خودکار گزینه noselect را دریافت می‌کند تا از انتخاب آن برای همگام‌سازی جلوگیری شود.

prefer

در این حالت، اصالت‌سنجی اختیاری و ارجح است. اگر حداقل برای یک منبع NTP فعال باشد، تمام منابع NTP بدون اصالت‌سنجی گزینه noselect را دریافت خواهند کرد.

mix

در این حالت، اصالت‌سنجی اختیاری است و همگام‌سازی با ترکیبی از منابع NTP اصالت‌سنجی‌شده و بدون اصالت‌سنجی مجاز است. اگر هم منابع NTP اصالت‌سنجی‌شده و هم بدون اصالت‌سنجی مشخص شوند، تمام منابع NTP اصالت‌سنجی‌شده و ساعت‌های مرجع گزینه‌های require و trust را دریافت می‌کنند تا از همگام‌سازی با منابع NTP بدون اصالت‌سنجی در صورتی که با اکثریت منابع اصالت‌سنجی‌شده و ساعت‌های مرجع توافق نداشته باشند جلوگیری شود. این حالت پیش‌فرض است.

ignore

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

به عنوان مثال، پیکربندی زیر با استفاده از حالت پیش‌فرض mix:

server ntp1.example.net nts
server ntp2.example.net nts
server ntp3.example.net
refclock SOCK /var/run/chrony.ttyS0.sock

معادل پیکربندی زیر با استفاده از حالت ignore است:

authselectmode ignore
server ntp1.example.net nts require trust
server ntp2.example.net nts require trust
server ntp3.example.net
refclock /var/run/chrony.ttyS0.sock require trust

combinelimit limit

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

دستورالعمل combinelimit تعیین می‌کند کدام منابع در الگوریتم ترکیب گنجانده شوند. فاصله همگام‌سازی آن‌ها باید کوتاه‌تر از فاصله منبع انتخاب‌شده ضرب در مقدار حد (limit) باشد. همچنین، فرکانس‌های اندازه‌گیری‌شده آن‌ها باید نزدیک به فرکانس منبع انتخاب‌شده باشد. اگر منبع انتخاب‌شده با گزینه prefer مشخص شده باشد، تنها می‌تواند با سایر منابع مشخص‌شده با این گزینه ترکیب شود.

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

maxdistance distance

دستورالعمل maxdistance حداکثر فاصله ریشه (root distance) یک منبع را برای پذیرفته شدن جهت همگام‌سازی ساعت تعیین می‌کند. منابعی که فاصله‌ای بیشتر از مقدار مشخص‌شده دارند رد خواهند شد. این فاصله حداکثر خطای منبع را تخمین می‌زند و شامل پراکندگی ریشه (root dispersion) و نصف تاخیر ریشه (root delay یا زمان رفت‌وبرگشت) انباشته‌شده در مسیر به منبع اولیه است.

به‌طور پیش‌فرض، حداکثر فاصله ریشه ۳ ثانیه است.

تنظیم maxdistance روی مقداری بزرگ‌تر می‌تواند برای مجاز کردن همگام‌سازی با سروری مفید باشد که اتصال بسیار نادری به منابع خود دارد و می‌تواند پراکندگی زیادی بین به‌روزرسانی‌های ساعت خود انباشته کند.

maxjitter jitter

دستورالعمل maxjitter حداکثر ژیتر مجاز منابع را برای رد نشدن توسط الگوریتم انتخاب منبع تعیین می‌کند. این کار از همگام‌سازی با منابعی که فاصله ریشه کمی دارند اما زمان آن‌ها بسیار متغیر است جلوگیری می‌کند.

به‌طور پیش‌فرض، حداکثر ژیتر ۱ ثانیه است.

minsources sources

دستورالعمل minsources حداقل تعداد منابعی را که باید در الگوریتم انتخاب منبع به عنوان قابل انتخاب در نظر گرفته شوند پیش از به‌روزرسانی ساعت محلی، تعیین می‌کند. مقدار پیش‌فرض ۱ است.

تنظیم این گزینه روی عددی بزرگ‌تر می‌تواند برای بهبود قابلیت اطمینان استفاده شود. منابع بیشتری باید با یکدیگر توافق داشته باشند، و زمانی که تنها یک منبع (که ممکن است زمان نادرست ارائه دهد) در دسترس باشد، ساعت به‌روزرسانی نخواهد شد.

reselectdist distance

هنگامی که chronyd یک منبع همگام‌سازی را از بین منابع موجود انتخاب می‌کند، منبعی با کوتاه‌ترین فاصله همگام‌سازی را ترجیح می‌دهد. با این حال، برای جلوگیری از انتخاب مجدد مکرر در صورت وجود منابعی با فاصله مشابه، یک فاصله ثابت به فاصله منابعی که در حال حاضر انتخاب نشده‌اند اضافه می‌شود. این مقدار می‌تواند با دستورالعمل reselectdist تنظیم شود. به‌طور پیش‌فرض، این فاصله ۱۰۰ میکروثانیه است.

stratumweight distance

دستورالعمل stratumweight تعیین می‌کند به ازای هر stratum چه مقدار فاصله باید به فاصله همگام‌سازی اضافه شود، هنگامی که chronyd منبع همگام‌سازی را از بین منابع موجود انتخاب می‌کند.

به‌طور پیش‌فرض، این وزن 0.001 ثانیه است. این بدان معناست که stratum منابع در فرآیند انتخاب تنها زمانی اهمیت دارد که تفاوت بین فاصله‌ها در حد میلی‌ثانیه باشد.

clockprecision precision

دستورالعمل clockprecision دقت ساعت سیستم را (به ثانیه) مشخص می‌کند. این مقدار توسط chronyd برای تخمین حداقل نویز در اندازه‌گیری‌های NTP و تصادفی‌سازی بیت‌های مرتبه پایین برچسب‌های زمانی در پاسخ‌های NTP استفاده می‌شود. به‌طور پیش‌فرض، دقت در زمان راه‌اندازی به عنوان حداقل زمان لازم برای خواندن ساعت اندازه‌گیری می‌شود.

مقدار اندازه‌گیری‌شده در اکثر موارد به خوبی کار می‌کند. با این حال، معمولاً دقت را بیش از حد برآورد می‌کند و می‌تواند به سرعت CPU حساس باشد که ممکن است برای صرفه‌جویی در مصرف انرژی در طول زمان تغییر کند. در برخی موارد با یک منبع ساعت با دقت بالا (مانند Time Stamp Counter مربوط به CPU) و برچسب‌گذاری زمانی سخت‌افزاری، تنظیم دقت روی سرور با یک مقدار کوچک‌تر می‌تواند پایداری اندازه‌گیری‌های NTP کلاینت‌ها را بهبود بخشد. دقت سرور در کلاینت‌ها توسط دستور ntpdata گزارش می‌شود.

یک مثال برای تنظیم دقت روی ۸ نانوثانیه:

clockprecision 8e-9

corrtimeratio ratio

هنگامی که chronyd برای اصلاح آفست، ساعت سیستم را شیب‌دهی (slew) می‌کند، نرخی که با آن شیب‌دهی انجام می‌شود به خطای فرکانس ساعت اضافه می‌شود. در تمام سیستم‌های پشتیبانی‌شده، به استثنای macOS 12 و نسخه‌های قبل‌تر، این نرخ قابل کنترل است.

دستورالعمل corrtimeratio نسبت بین مدت زمانی که ساعت برای یک تصحیح میانگین طبق تاریخچه منبع شیب‌دهی می‌شود و بازه‌ای که در آن تصحیحات انجام می‌شود (معمولاً بازه نظرسنجی NTP) را تعیین می‌کند. تصحیحات بزرگ‌تر از میانگین زمان کمتری می‌برند و تصحیحات کوچک‌تر زمان بیشتری نیاز دارند؛ مقدار تصحیح و زمان تصحیح نسبت معکوس دارند.

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

به‌طور پیش‌فرض، این نسبت روی ۳ تنظیم شده است، دقت زمانی ساعت بر دقت فرکانس آن ترجیح داده می‌شود.

حداکثر نرخ شیب‌دهی مجاز را می‌توان با دستورالعمل maxslewrate تعیین کرد. تصحیح باقی‌مانده فعلی در گزارش tracking به صورت مقدار System time نشان داده می‌شود.

driftfile file [interval interval]

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

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

دستورالعمل driftfile اجازه می‌دهد پرونده‌ای مشخص شود که chronyd می‌تواند اطلاعات نرخ را در آن ذخیره کند. دو پارامتر در پرونده ثبت می‌شود. اولی نرخی است که ساعت سیستم زمان کسب می‌کند یا از دست می‌دهد، که بر حسب قسمت در میلیون (ppm) بیان می‌شود و مقادیر مثبت نشان‌دهنده جلو افتادن هستند. بنابراین، مقدار 100.0 نشان می‌دهد که وقتی ساعت سیستم یک ثانیه جلو رفته است، در واقعیت ۱۰۰ میکروثانیه جلو افتاده است (بنابراین زمان واقعی تنها ۹۹۹۹۰۰ میکروثانیه پیش رفته است). دومین پارامتر تخمینی از کران خطای اطراف مقدار اول است که نرخ واقعی در آن قرار دارد.

گزینه interval حداقل بازه بین به‌روزرسانی‌های پرونده را به ثانیه مشخص می‌کند. پرونده تنها هنگام به‌روزرسانی ساعت محلی نوشته می‌شود. بازه پیش‌فرض ۳۶۰۰ ثانیه است.

یک مثال از دستورالعمل driftfile:

driftfile /var/lib/chrony/drift

fallbackdrift min-interval max-interval

دریفت‌های جایگزین (Fallback drifts) میانگین‌های بلندمدت رانش ساعت سیستم هستند که در بازه‌های افزایشیِ نمایی محاسبه می‌شوند. آن‌ها برای جلوگیری از انحراف سریع از زمان واقعی استفاده می‌شوند، زمانی که ساعت برای مدت طولانی‌تری به‌روزرسانی نشده باشد و قبل از توقف به‌روزرسانی‌ها یک انحراف کوتاه‌مدت در رانش وجود داشته باشد.

این دستورالعمل کمینه و بیشینه بازه زمانی پس از آخرین به‌روزرسانی ساعت را برای تغییر بین مقادیر انحراف پشتیبان مشخص می‌کند. این مقادیر به‌صورت توانی از ۲ (به ثانیه) تعریف می‌شوند. نحو دستور به شرح زیر است:

fallbackdrift 16 19

در این مثال، کمینه بازه ۱۶ (۱۸ ساعت) و بیشینه بازه ۱۹ (۶ روز) است. بسامد ساعت سیستم ۱۸ ساعت پس از آخرین به‌روزرسانی ساعت روی اولین مقدار پشتیبان، پس از ۳۶ ساعت روی دومین مقدار و به همین ترتیب تنظیم خواهد شد. این ممکن است تنظیم مناسبی برای پوشش تغییرات بسامد ناشی از نوسانات دمایی روزانه و هفتگی باشد. هنگامی که بسامد روی یک مقدار پشتیبان تنظیم شود، وضعیت ساعت به ‘Not synchronised’ تغییر خواهد کرد.

به‌طور پیش‌فرض (یا اگر بیشینه یا کمینه مشخص‌شده ۰ باشد)، هیچ مقدار پشتیبانی استفاده نمی‌شود و بسامد ساعت تنها با اندازه‌گیری‌های جدید از منابع NTP، ساعت‌های مرجع، یا ورودی دستی تغییر می‌کند.

leapsecmode mode

ثانیه کبیسه تنظیمی است که گهگاه بر UTC اعمال می‌شود تا آن را به زمان میانگین خورشیدی نزدیک نگه دارد. هنگام درج ثانیه کبیسه، آخرین روز ژوئن یا دسامبر یک ثانیه اضافی 23:59:60 دارد.

برای ساعت‌های رایانه‌ای این یک مشکل است. زمان Unix به‌صورت تعداد ثانیه‌های سپری‌شده از 00:00:00 UTC در ۱ ژانویه ۱۹۷۰ بدون ثانیه‌های کبیسه تعریف شده است. ساعت سیستم نمی‌تواند زمان 23:59:60 داشته باشد، بر اساس تعریف هر دقیقه ۶۰ ثانیه و هر روز ۸۶۴۰۰ ثانیه دارد. ثانیه کبیسه درج‌شده نادیده گرفته می‌شود و ساعت ناگهان یک ثانیه از UTC جلو می‌افتد. دستورالعمل leapsecmode نحوه تصحیح این خطا را مشخص می‌کند. چهار گزینه وجود دارد:

system

هنگام درج ثانیه کبیسه، کرنل با رسیدن ساعت به 00:00:00 UTC ساعت سیستم را با پرش یک ثانیه به عقب بازمی‌گرداند. هنگام حذف ثانیه کبیسه، با رسیدن ساعت به 23:59:59 UTC آن را با پرش یک ثانیه به جلو می‌برد. این حالت پیش‌فرض در زمانی است که گرداننده سیستم از ثانیه‌های کبیسه پشتیبانی می‌کند (یعنی تمام سیستم‌های پشتیبانی‌شده به استثنای macOS 12 و نسخه‌های پیشین).

step

مشابه حالت system است، با این تفاوت که پرش ساعت به جای کرنل توسط chronyd انجام می‌شود. برای جلوگیری از اشکالات موجود در کد کرنل که در حالت system اجرا می‌شوند مفید است. این حالت پیش‌فرض در زمانی است که گرداننده سیستم از ثانیه‌های کبیسه پشتیبانی نمی‌کند.

slew

ساعت با تنظیم تدریجی (slewing) تصحیح می‌شود که در زمان درج ثانیه کبیسه از 00:00:00 UTC و در زمان حذف ثانیه کبیسه از 23:59:59 UTC آغاز می‌گردد. زمانی که برنامه‌های در حال اجرا روی سیستم به جهش‌های زمانی حساس هستند و خارج از تنظیم بودن ساعت برای مدتی طولانی‌تر قابل قبول است، این حالت می‌تواند نسبت به حالت‌های system و step ترجیح داده شود. در Linux با مقدار پیش‌فرض maxslewrate این تصحیح ۱۲ ثانیه طول می‌کشد.

ignore

هیچ تصحیحی برای ثانیه کبیسه بر روی ساعت اعمال نمی‌شود. ساعت بعداً در کارکرد عادی با انجام اندازه‌گیری‌های جدید و لحاظ شدن خطای یک‌ثانیه‌ای در آفست برآوردی تصحیح خواهد شد. این گزینه به‌ویژه زمانی کاربرد دارد که چندین نمونه از chronyd روی سیستم در حال اجرا باشند؛ یکی ساعت سیستم را کنترل می‌کند و سایرین با گزینه -x اجرا شده‌اند که باید برای تصحیح ساعت سیستم به نمونه اول تکیه کرده و آن را در تصحیح ساعت NTP خود که روی ساعت سیستم اجرا می‌شود نادیده بگیرند.

هنگام ارائه زمان به کارخواهان NTP که امکان پیکربندی آن‌ها برای تصحیح ساعت با تنظیم تدریجی در ثانیه کبیسه وجود ندارد، یا کارخواهانی که با نرخ‌های متفاوتی تصحیح می‌کنند در حالی که نزدیک نگه‌داشتن زمان آن‌ها به یکدیگر ضروری است، حالت slew می‌تواند با دستورالعمل smoothtime ترکیب شود تا leap smear سرور فعال گردد.

هنگام پخش تدریجی ثانیه کبیسه (leap smear)، وضعیت کبیسه روی سرور پنهان می‌شود و زمان ارائه‌شده به جای پرش، با تنظیم تدریجی به‌آرامی تصحیح می‌گردد. کارخواهان به هیچ پیکربندی خاصی نیاز ندارند زیرا از وجود ثانیه کبیسه مطلع نمی‌شوند و از زمان سرور پیروی می‌کنند که در نهایت آن‌ها را به UTC بازمی‌گرداند. باید دقت شود که آن‌ها برای همگام‌سازی فقط از سرورهای NTP استفاده کنند که ثانیه کبیسه را دقیقاً به همان روش پخش تدریجی می‌کنند.

این ویژگی باید با احتیاط استفاده شود، زیرا سرور عمداً بهترین برآورد خود از زمان واقعی را ارائه نمی‌دهد.

پیکربندی توصیه‌شده برای فعال‌سازی leap smear سرور عبارت است از:

leapsecmode slew
maxslewrate 1000
smoothtime 400 0.001024 leaponly

دستورالعمل اول برای غیرفعال‌سازی پرش ساعت ضروری است که می‌توانست فرایند هموارسازی را بازنشانی کند. دستورالعمل دوم نرخ تنظیم تدریجی ساعت محلی را به 1000 ppm محدود می‌کند که پایداری فرایند هموارسازی را در زمان شروع و پایان تصحیح محلی بهبود می‌بخشد. دستورالعمل سوم فرایند هموارسازی زمان سرور را فعال می‌کند. این فرایند با رسیدن ساعت به 00:00:00 UTC آغاز شده و تکمیل آن ۶۲۵۰۰ ثانیه (حدود ۱۷.۳۶ ساعت) طول خواهد کشید. آفست بسامد به میزان 0.001024 ppm بر ثانیه تغییر خواهد کرد و پس از ۳۱۲۵۰ ثانیه به بیشینه 32 ppm می‌رسد. گزینه leaponly مدت زمان leap smear را ثابت می‌کند و به کارخواهان اجازه می‌دهد با چند سرور leap smear با پیکربندی یکسان به‌طور ایمن همگام شوند.

مدت زمان leap smear را می‌توان از مقدار wander مشخص‌شده محاسبه کرد:

duration = sqrt(4 / wander)

leapsectz timezone

این دستورالعمل یک منطقه زمانی را در پایگاه‌داده مناطق زمانی سیستم مشخص می‌کند که chronyd می‌تواند از آن برای تعیین زمان وقوع ثانیه کبیسه بعدی و آفست فعلی میان TAI و UTC استفاده کند. این دستورالعمل به‌طور دوره‌ای معتبر بودن زمان‌های 23:59:59 و 23:59:60 در آن منطقه زمانی را بررسی می‌کند. این ویژگی معمولاً با منطقه زمانی right/UTC کار می‌کند.

هنگام اعلام ثانیه کبیسه، منطقه زمانی باید حداقل ۱۲ ساعت پیش از ثانیه کبیسه به‌روزرسانی شود. نیازی به راه‌اندازی مجدد chronyd نیست.

این دستورالعمل برای ساعت‌های مرجع و سایر منابع زمانی مفید است که ثانیه‌های کبیسه را اعلام نمی‌کنند، یا آن را دیرتر از موعدی اعلام می‌کنند که سرور NTP بتواند به کارخواهان خود فوروارد کند. کارخواهان سرورهای leap smear نباید از این دستورالعمل استفاده کنند.

همچنین زمانی کاربرد دارد که ساعت سیستم نیازمند آفست صحیح TAI-UTC باشد. توجه داشته باشید که آفست تنها زمانی تنظیم می‌شود که ثانیه‌های کبیسه توسط کرنل مدیریت شوند، یعنی leapsecmode روی system تنظیم شده باشد.

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

نمونه‌ای از این دستورالعمل:

leapsectz right/UTC

دستور شل زیر بررسی می‌کند که آیا منطقه زمانی حاوی ثانیه‌های کبیسه است و می‌تواند با این دستورالعمل استفاده شود:

$ TZ=right/UTC date -d 'Dec 31 2008 23:59:60'
Wed Dec 31 23:59:60 UTC 2008

leapseclist file

این دستورالعمل مسیر فایلی شامل فهرستی از ثانیه‌های کبیسه و آفست‌های TAI-UTC در قالب NIST/IERS را مشخص می‌کند. توصیه می‌شود از فایل leap-seconds.list استفاده شود که معمولاً همراه با پایگاه‌داده مناطق زمانی سیستم ارائه می‌شود. رفتار این دستورالعمل در سایر موارد معادل leapsectz است.

نمونه‌ای از این دستورالعمل:

leapseclist /usr/share/zoneinfo/leap-seconds.list

makestep threshold limit

به‌طور معمول chronyd باعث می‌شود سیستم با کند کردن یا تند کردن ساعت بر حسب نیاز، هرگونه آفست زمانی را به‌صورت تدریجی تصحیح کند. در شرایط خاص، مثلاً هنگام راه‌اندازی اولیه chronyd، ساعت سیستم ممکن است چنان دچار انحراف شده باشد که این فرایند تصحیح تدریجی زمان بسیار زیادی برای اصلاح ساعت سیستم ببرد.

این دستورالعمل chronyd را مجبور می‌کند که در صورت بزرگ‌تر بودن میزان تنظیم از مقدار آستانه، ساعت سیستم را جهش (step) دهد، اما تنها در صورتی که تعداد به‌روزرسانی‌های ساعت از زمان شروع chronyd از حد مشخص‌شده بیشتر نباشد. یک مقدار منفی این محدودیت را غیرفعال می‌کند.

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

نمونه‌ای از استفاده این دستورالعمل:

makestep 0.1 3

این مورد در صورتی که تنظیم بزرگ‌تر از 0.1 ثانیه باشد، ساعت سیستم را جهش می‌دهد، اما فقط در سه به‌روزرسانی اول ساعت.

توجه داشته باشید که اگر کنترل ساعت سیستم توسط گزینهٔ -x در chronyd غیرفعال شده باشد، این دستورالعمل کار نمی‌کند و نباید استفاده شود.

maxchange offset start ignore

این دستورالعمل حداکثر آفست (انحراف زمانی) قابل قبول در یک به‌روزرسانی ساعت را تعیین می‌کند. آفست نسبت به برآورد فعلی از زمان واقعی سنجیده می‌شود، که در صورت پایان نیافتن تغییر تدریجی (slew) قبلی، با زمان سیستم متفاوت است.

این بررسی پس از تعداد مشخص‌شده به‌روزرسانی ساعت فعال می‌شود تا امکان اصلاح انحراف اولیهٔ بزرگ هنگام شروع فراهم باشد. انحراف‌های بزرگ‌تر از حداکثر مشخص‌شده به تعداد دفعات تعیین‌شده نادیده گرفته خواهند شد. یک انحراف بزرگ دیگر باعث تسلیم شدن و خروج chronyd می‌شود. از یک مقدار منفی می‌توان برای غیرفعال کردن محدودیت جهت نادیده گرفتن تمام انحراف‌های بزرگ استفاده کرد. هنگام نادیده گرفته شدن یک انحراف یا خروج ناشی از آن، یک پیام syslog تولید خواهد شد.

نمونه‌ای از استفاده این دستورالعمل:

maxchange 1000 1 2

پس از نخستین به‌روزرسانی ساعت، chronyd آفست را در هر به‌روزرسانی ساعت بررسی خواهد کرد، دو تنظیم بزرگ‌تر از 1000 ثانیه را نادیده می‌گیرد و با بروز انحراف بعدی خارج می‌شود.

maxclockerror error-in-ppm

دستورالعمل maxclockerror حداکثر خطای فرکانسی مفروضی را تعیین می‌کند که ساعت سیستم می‌تواند به خودی خود بین به‌روزرسانی‌های ساعت کسب کند. این دستورالعمل پایداری ساعت را توصیف می‌کند.

به‌طور پیش‌فرض، حداکثر خطا 1 ppm است.

مقادیر معمول برای error-in-ppm ممکن است 10 برای یک ساعت با کیفیت پایین و 0.1 برای یک ساعت با کیفیت بالا با استفاده از نوسان‌ساز کریستالی با جبران دما باشد.

maxdrift drift-in-ppm

این دستورالعمل حداکثر رانش (خطای فرکانسی) مفروض ساعت سیستم را مشخص می‌کند. این دستورالعمل تنظیم فرکانسی مجاز برای chronyd جهت تصحیح رانش اندازه‌گیری‌شده را محدود می‌کند. این یک محدودیت اضافی برای حداکثر تنظیمی است که توسط درایور سیستم قابل اعمال است (100000 ppm در Linux، 500 ppm در FreeBSD، NetBSD و macOS 10.13+، 32500 ppm در illumos).

به‌طور پیش‌فرض، حداکثر رانش مفروض 500000 ppm است، یعنی میزان تنظیم به‌جای این دستورالعمل، توسط درایور سیستم محدود می‌شود.

maxupdateskew skew-in-ppm

یکی از وظایف chronyd تعیین میزان تندتر یا کندتر کار کردن ساعت رایانه نسبت به منابع مرجع آن است. علاوه بر این، برآوردی از حدود خطا در اطراف مقدار برآوردشده را محاسبه می‌کند.

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

دستورالعمل maxupdateskew آستانه را برای تشخیص اینکه آیا یک برآورد ممکن است آن‌قدر غیرقابل اعتماد باشد که نباید استفاده شود، تنظیم می‌کند. به‌طور پیش‌فرض، آستانه 1000 ppm است.

مقادیر معمول برای skew-in-ppm ممکن است 100 برای منابع NTP نظرسنجی‌شده از طریق شبکهٔ بی‌سیم، و 10 یا کمتر برای منابع روی یک شبکهٔ سیمی محلی باشد.

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

maxslewrate rate-in-ppm

دستورالعمل maxslewrate حداکثر نرخی را که chronyd مجاز است زمان را به‌صورت تدریجی تغییر دهد (slew)، تعیین می‌کند. این دستورالعمل نرخ تغییر تدریجی کنترل‌شده توسط نسبت زمان تصحیح (که می‌تواند با دستورالعمل corrtimeratio تنظیم شود) را محدود می‌کند و فقط در سیستم‌هایی مؤثر است که chronyd قادر به کنترل نرخ باشد (یعنی تمام سیستم‌های پشتیبانی‌شده به استثنای macOS 12 یا قدیمی‌تر).

برای هر سیستم حداکثر آفست فرکانسی ساعتی وجود دارد که می‌تواند توسط درایور تنظیم شود. در Linux این مقدار 100000 ppm است، در FreeBSD، NetBSD و macOS 10.13+ برابر 5000 ppm است، و در illumos برابر 32500 ppm است. همچنین، به دلیل محدودیت هسته، تنظیم maxslewrate در FreeBSD، NetBSD، macOS 10.13+ روی مقداری بین 500 ppm و 5000 ppm عملاً آن را روی 500 ppm تنظیم می‌کند.

به‌طور پیش‌فرض، حداکثر نرخ تغییر تدریجی روی 83333.333 ppm (یک دوازدهم) تنظیم شده است.

tempcomp file interval T0 k0 k1 k2, tempcomp file interval points-file

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

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

نتیجه به عوامل زیادی از جمله دقت حسگر، میزان نویز در اندازه‌گیری‌ها، بازهٔ زمانی پرس‌وجو از منبع زمان، بازهٔ زمانی به‌روزرسانی جبران، نحوهٔ مشخص شدن مشخصات جبران، و میزان نزدیکی حسگر به نوسان‌ساز بستگی دارد. هنگامی که به‌خوبی کار کند، فرکانس گزارش‌شده در پروندهٔ tracking.log پایدارتر و حداکثر آفست به‌دست‌آمده کوچک‌تر است.

دو شکل از این دستورالعمل وجود دارد. شکل اول شش پارامتر دارد: یک مسیر به پروندهٔ حاوی دمای فعلی از حسگر (در قالب متنی)، بازهٔ زمانی به‌روزرسانی جبران (به ثانیه)، و ضرایب دمایی T0، k0، k1، k2.

جبران فرکانس (به ppm) به صورت زیر محاسبه می‌شود:

comp = k0 + (T - T0) * k1 + (T - T0)^2 * k2

نتیجه باید بین -10 ppm و 10 ppm باشد، در غیر این صورت اندازه‌گیری نامعتبر تلقی شده و نادیده گرفته خواهد شد. ضریب k0 را می‌توان طوری تنظیم کرد که جبران در آن محدوده باقی بماند.

نمونه‌ای از استفاده:

tempcomp /sys/class/hwmon/hwmon0/temp2_input 30 26000 0.0 0.000183 0.0

دمای اندازه‌گیری‌شده هر 30 ثانیه از پرونده در سیستم‌پروندهٔ sysfs در Linux خوانده می‌شود. هنگامی که دما 26000 (26 درجهٔ سلسیوس) باشد، تصحیح فرکانس صفر خواهد بود. هنگامی که 27000 (27 درجهٔ سلسیوس) باشد، ساعت تنظیم می‌شود تا 0.183 ppm سریع‌تر کار کند، و غیره.

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

یک نمونه:

tempcomp /sys/class/hwmon/hwmon0/temp2_input 30 /etc/chrony.tempcomp

که در آن پروندهٔ /etc/chrony.tempcomp می‌تواند حاوی مقادیر زیر باشد:

20000 1.0
21000 0.64
22000 0.36
23000 0.16
24000 0.04
25000 0.0
26000 0.04
27000 0.16
28000 0.36
29000 0.64
30000 1.0

اندازه‌گیری‌های معتبر با جبران‌سازی‌های متناظر در صورت فعال بودن با دستورالعمل log tempcomp در پرونده tempcomp.log ثبت می‌شوند.

allow [all] [subnet]

دستورالعمل allow برای تعیین زیرشبکه‌ای خاص استفاده می‌شود که کارخواه‌های NTP در آن مجاز به دسترسی به رایانه به عنوان یک کارساز NTP هستند. این دستورالعمل همچنین دسترسی کارخواه‌های NTS-KE را هنگام فعال بودن NTS روی کارساز کنترل می‌کند.

به طور پیش‌فرض هیچ کارخواهی مجاز به دسترسی نیست، یعنی chronyd صرفاً به عنوان یک کارخواه NTP عمل می‌کند. در صورت استفاده از دستورالعمل allow، دیمن chronyd هم کارخواه کارسازهای خود و هم کارسازی برای سایر کارخواه‌ها خواهد بود.

این دستورالعمل می‌تواند چندین بار استفاده شود.

نمونه‌های استفاده از این دستورالعمل به شرح زیر است:

allow 1.2.3.4
allow 3.4.5.0/24
allow 3.4.5
allow 2001:db8::/32
allow 0/0
allow ::/0
allow

دستورالعمل اول اجازه دسترسی از یک نشانی IPv4 را می‌دهد. دستورالعمل دوم اجازه دسترسی از تمام رایانه‌های یک زیرشبکه IPv4 مشخص‌شده در قالب CIDR را می‌دهد. دستورالعمل سوم همان زیرشبکه را با استفاده از نشانه‌گذاری ساده‌تری که در آن طول پیشوند با تعداد نقطه‌ها مشخص می‌شود تعیین می‌کند. دستورالعمل چهارم یک زیرشبکه IPv6 را مشخص می‌کند. دستورالعمل‌های پنجم و ششم به ترتیب اجازه دسترسی از تمام نشانی‌های IPv4 و IPv6 را می‌دهند. دستورالعمل هفتم اجازه دسترسی از همه نشانی‌ها (هم IPv4 و هم IPv6) را می‌دهد.

شکل دوم دستورالعمل، allow all، تأثیر بیشتری دارد که به ترتیب دستورالعمل‌ها در پرونده پیکربندی بستگی دارد. برای نشان دادن این اثر، دو مثال زیر را در نظر بگیرید:

allow 1.2.3.4
deny 1.2.3.0/24
allow 1.2.0.0/16

و

allow 1.2.3.4
deny 1.2.3.0/24
allow all 1.2.0.0/16

در مثال اول، اثر صرف‌نظر از ترتیبی که این سه دستورالعمل در آن داده شده‌اند یکسان است؛ بنابراین زیرشبکه 1.2.0.0/16 مجاز است، به جز زیرشبکه 1.2.3.0/24 که رد می‌شود، در حالی که میزبان 1.2.3.4 مجاز است.

در مثال دوم، دستورالعمل allow all 1.2.0.0/16 اثر هر دستورالعمل قبلی مربوط به یک زیرشبکه درون زیرشبکه مشخص‌شده را لغو می‌کند. درون یک پرونده پیکربندی این قابلیت شاید چندان مطرح نباشد؛ با این حال، برای بازپیکربندی در زمان اجرا از طریق chronyc با دستور allow all کاربرد بیشتری دارد.

قواعد به صورت داخلی به عنوان درختی از جدول‌ها با یک سطح به ازای هر چهار بیت از نشانی IPv4 یا IPv6 نمایش داده می‌شوند. ترتیب دستورالعمل‌های allow و deny در صورتی اهمیت دارد که رکوردهای یکسانی از یک جدول را تغییر دهند، یعنی اگر یک زیرشبکه در زیرشبکه دیگر گنجانده شده باشد و طول پیشوند آن‌ها در یک سطح باشد. برای نمونه، 1.2.3.0/28 و 1.2.3.0/29 در جدول‌های متفاوتی قرار دارند، اما 1.2.3.0/25 و 1.2.3.0/28 در یک جدول هستند. پیکربندی را می‌توان برای نشانی‌های منفرد با دستور accheck در chronyc بررسی کرد.

می‌توان به جای نشانی IP از نام میزبان در دستورالعمل‌ها استفاده کرد، اما نام باید هنگام شروع chronyd قابل تحلیل باشد، یعنی شبکه فعال بوده و DNS کار کند. اگر نام میزبان به چندین نشانی تحلیل شود، فقط نخستین نشانی (به ترتیبی که توسط تحلیل‌گر سامانه بازگردانده می‌شود) مجاز یا رد خواهد شد.

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

deny [all] [subnet]

مشابه دستورالعمل allow است، با این تفاوت که به جای مجاز کردن دسترسی کارخواه NTP و NTS-KE به زیرشبکه یا میزبان خاص، آن را رد می‌کند.

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

همچنین دستورالعمل deny all با رفتاری مشابه دستورالعمل allow all وجود دارد.

bindaddress address

دستورالعمل bindaddress سوکت‌هایی را که chronyd روی آن‌ها به درخواست‌های NTP و NTS-KE گوش می‌دهد، به یک نشانی محلی از رایانه متصل می‌کند. در سامانه‌های غیر از لینوکس، نشانی رایانه باید هنگام شروع به کار chronyd از پیش پیکربندی شده باشد.

نمونه استفاده از این دستورالعمل:

bindaddress 192.168.1.1

در حال حاضر برای هر یک از پروتکل‌های IPv4 و IPv6 تنها یک دستورالعمل bindaddress می‌تواند مشخص شود؛ بنابراین در رایانه‌هایی که باید روی چندین رابط شبکه خدمات NTP ارائه دهند، کاربردی نیست.

binddevice interface

دستورالعمل binddevice سوکت‌های کارساز NTP و NTS-KE را به یک دستگاه شبکه مشخص‌شده با نام رابط متصل می‌کند. این دستورالعمل فقط می‌تواند یک رابط را مشخص کند و تنها در لینوکس پشتیبانی می‌شود.

نمونه این دستورالعمل:

binddevice eth0

broadcast interval address [port]

دستورالعمل broadcast برای اعلان یک نشانی برودکست استفاده می‌شود که chronyd باید بسته‌ها را در حالت همگانی NTP به آن ارسال کند (یعنی باعث می‌شود chronyd به عنوان یک کارساز برودکست عمل کند). کارخواه‌های برودکست در آن زیرشبکه قادر به همگام‌سازی خواهند بود.

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

نحو به شرح زیر است:

broadcast 32 192.168.1.255
broadcast 64 192.168.2.255 12123
broadcast 64 ff02::101

در مثال اول، درگاه مقصد به طور پیش‌فرض درگاه UDP 123 (درگاه عادی NTP) است. در مثال دوم، درگاه مقصد به عنوان 12123 مشخص شده است. پارامتر اول در هر مورد (به ترتیب 32 یا 64) فاصله زمانی بر حسب ثانیه بین ارسال بسته‌های برودکست است. پارامتر دوم در هر مورد نشانی برودکست برای ارسال بسته به آن است. این باید متناظر با نشانی برودکست یکی از رابط‌های شبکه در رایانه‌ای باشد که chronyd روی آن اجرا می‌شود.

اگر بیش از یک رابط شبکه دارید که می‌خواهید بسته‌های برودکست NTP را روی آن‌ها ارسال کنید، می‌توانید بیش از یک دستورالعمل broadcast داشته باشید.

خود chronyd نمی‌تواند به عنوان یک کارخواه برودکست عمل کند؛ این برنامه همیشه باید با تعریف کارسازها و همتایان خاص NTP به عنوان یک کارخواه نقطه به نقطه پیکربندی شود. این قابلیت کارساز برودکست برای ارائه یک منبع زمان به سایر پیاده‌سازی‌های NTP در نظر گرفته شده است.

اگر از ntpd به عنوان کارخواه برودکست استفاده شود، تلاش خواهد کرد تا تأخیر رفت و برگشت بین کارساز و کارخواه را با بسته‌های حالت کارخواه معمولی اندازه بگیرد؛ بنابراین، زیرشبکه برودکست باید موضوع یک دستورالعمل allow نیز باشد.

clientloglimit limit

این دستورالعمل بیشینه حافظه‌ای را مشخص می‌کند که chronyd مجاز به تخصیص آن برای ثبت دسترسی‌های کارخواه و وضعیتی است که chronyd به عنوان کارساز NTP برای پشتیبانی از حالت درهم‌آمیخته (interleaved mode) برای کارخواه‌های خود به آن نیاز دارد. حد پیش‌فرض 524288 بایت است که امکان نظارت بر حداکثر 4096 نشانی IP به طور همزمان و نگه‌داری برچسب‌های زمان NTP را برای حداکثر 4096 کارخواه با استفاده از حالت درهم‌آمیخته (بسته به یکنواختی فاصله نظرسنجی آن‌ها) فراهم می‌کند. تعداد نشانی‌ها و برچسب‌های زمانی همواره توانی از 2 است. بیشینه مقدار مؤثر 2147483648 (2 گیگابایت) است که متناظر با 16777216 نشانی و برچسب زمانی است.

نمونه‌ای از کاربرد این دستورالعمل:

clientloglimit 1048576

noclientlog

این دستورالعمل، که هیچ آرگومانی نمی‌گیرد، مشخص می‌کند که دسترسی‌های کلاینت ثبت نشوند. در حالت عادی آنها ثبت می‌شوند و امکان گزارش آمار را با استفاده از دستور clients در chronyc فراهم می‌کنند. این گزینه همچنین پشتیبانی سرور از حالت متداخل (interleaved) در NTP را به طور موثر غیرفعال می‌کند.

local [option]...

دستورالعمل local یک حالت مرجع محلی را فعال می‌کند، که به chronyd فعال در قالب یک سرور NTP اجازه می‌دهد تا (از دید کلاینت‌هایی که از آن پرس‌وجو می‌کنند) همگام‌شده با زمان واقعی به نظر برسد، حتی اگر هرگز همگام‌سازی نشده باشد یا آخرین به‌روزرسانی ساعت مدت‌ها پیش رخ داده باشد.

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

دستورالعمل local دارای گزینه‌های زیر است:

stratum stratum

این گزینه لایه (stratum) سرور را که هنگام فعال بودن مرجع محلی به کلاینت‌ها گزارش می‌شود، تنظیم می‌کند. مقدار مشخص‌شده در محدوده ۱ تا ۱۵ است و مقدار پیش‌فرض ۱۰ است. این مقدار باید بزرگتر از حداکثر stratum مورد انتظار در شبکه هنگام در دسترس بودن سرورهای خارجی NTP باشد.

لایه ۱ نشان‌دهنده رایانه‌ای است که یک مرجع زمان واقعی حقیقی مستقیماً به آن متصل است (مانند GPS، ساعت اتمی و غیره)، و انتظار می‌رود چنین رایانه‌هایی بسیار نزدیک به زمان واقعی باشند. رایانه‌های لایه ۲ آنهایی هستند که یک سرور لایه ۱ دارند؛ رایانه‌های لایه ۳ سرور لایه ۲ دارند و به همین ترتیب. مقدار ۱۰ نشان می‌دهد که ساعت چندین گام از ساعت مرجع فاصله دارد و زمان آن تا حد زیادی غیرقابل اعتماد است.

distance distance

این گزینه آستانه root distance را تعیین می‌کند که موجب فعال شدن مرجع محلی می‌شود. اگر chronyd با یک منبع زمان پیکربندی‌شده همگام شده باشد، مرجع محلی تا زمانی که root distance آن به مقدار مشخص‌شده برسد فعال نخواهد شد (نرخ افزایش فاصله به این بستگی دارد که ساعت چقدر منبع را به خوبی ردیابی می‌کرده است). وقتی ساعت همگام نباشد، دارای root distance بی‌نهایت در نظر گرفته می‌شود؛ یعنی مرجع محلی به محض اینکه گزینه waitunsynced اجازه دهد، فعال می‌شود. آستانه پیش‌فرض ۱ ثانیه است.

مقدار root distance فعلی را می‌توان از طریق root delay و root dispersion (که توسط دستور tracking در chronyc گزارش می‌شود) به صورت زیر محاسبه کرد:

distance = delay / 2 + dispersion

activate distance

این گزینه یک root distance فعال‌کننده را برای مرجع محلی تنظیم می‌کند. مرجع محلی تا زمانی که root distance برای اولین بار به زیر مقدار پیکربندی‌شده نرسد، استفاده نخواهد شد. از این گزینه می‌توان برای جلوگیری از فعال شدن مرجع محلی روی سروری که هرگز با یک سرور بالادست همگام نشده است استفاده کرد. مقدار پیش‌فرض 0.0 باعث می‌شود هیچ فاصله فعال‌کننده‌ای اعمال نشود، به طوری که مرجع محلی همیشه شرایط فعال‌سازی را داشته باشد.

orphan

این گزینه حالت ویژه ‘orphan’ را فعال می‌کند، که در آن فرض می‌شود منابعی با stratum برابر با stratum محلی، زمان واقعی را ارائه نمی‌دهند. این منابع نادیده گرفته می‌شوند مگر اینکه هیچ منبع دیگری قابل انتخاب نباشد و reference ID آنها کوچکتر از reference ID محلی باشد.

این قابلیت به چندین سرور در شبکه امکان می‌دهد تا از پیکربندی local یکسان استفاده کرده و بدون سردرگم کردن کلاینت‌هایی که بیش از یک سرور را پرس‌وجو می‌کنند، با یکدیگر همگام شوند. هر سرور باید طوری پیکربندی شود که سایر سرورها را با دستورالعمل local پرس‌وجو کند. این کار تضمین می‌کند که فقط سرور با کوچک‌ترین reference ID مرجع محلی فعال داشته باشد و سرورهای دیگر با آن همگام شوند. اگر آن سرور پاسخ ندهد، سرور با دومین reference ID کوچک به محض فعال شدن حالت مرجع محلی‌اش (رسیدن root distance به آستانه پیکربندی‌شده توسط گزینه distance)، کنترل را در دست می‌گیرد.

حالت orphan با حالت orphan در ntpd (که با دستور tos orphan فعال می‌شود) سازگار است.

waitsynced interval

این گزینه حداقل بازه زمانی (به ثانیه) بین آخرین به‌روزرسانی ساعت و فعال‌سازی مرجع محلی طبق پیکربندی گزینه‌های distance و activate را مشخص می‌کند. می‌توان گزینه distance را روی 0 تنظیم کرد تا root distance نادیده گرفته شود و فعال‌سازی تنها بر اساس بازه زمانی کنترل شود. در چنین حالتی، این مقدار باید حداقل به اندازه حداکثر بازه پرس‌وجوی (polling) مورد انتظار باشد تا از فعال‌سازی مکرر در پرس‌وجوی عادی منبع جلوگیری شود. حداقل بازه پیش‌فرض 0 است.

waitunsynced interval

این گزینه مشخص می‌کند که chronyd هنگام عدم همگام‌سازی ساعت (مثلاً پس از شروع به کار یا شکست در انتخاب منبع به دلیل نبود اکثریت) چه مدت (به ثانیه) باید قبل از فعال‌سازی مرجع محلی منتظر بماند. این تاخیر مانع از آن می‌شود که chronyd پیش از آنکه منابع زمان پیکربندی‌شده فرصت همگام‌سازی ساعت محلی را پیدا کنند، زمان نادرست را به کلاینت‌ها ارائه دهد. اگر گزینه orphan تنظیم شده باشد، بازه پیش‌فرض ۳۰۰ ثانیه است؛ در غیر این صورت 0 است (یعنی مرجع محلی بلافاصله فعال می‌شود).

نمونه‌هایی از این دستورالعمل:

local stratum 5
local stratum 10 orphan distance 0.1 activate 0.5
local stratum 10 orphan distance 0.0 waitsynced 7200 waitunsynced 300

ntpsigndsocket directory

این دستورالعمل مکان سوکت ntp_signd برنامه Samba را در زمان اجرای آن به عنوان Domain Controller (DC) مشخص می‌کند. اگر chronyd با این ویژگی کامپایل شده باشد، پاسخ‌ها به کلاینت‌های MS-SNTP توسط دیمن smbd امضا می‌شوند.

توجه داشته باشید که درخواست‌های MS-SNTP احراز هویت نمی‌شوند و هر کلاینتی که با دستورالعمل allow یا دستور allow در chronyc مجاز به دسترسی به سرور باشد، می‌تواند پاسخی از MS-SNTP دریافت کند که با رمز عبور trust account امضا شده است و تلاش کند تا رمز عبور را با حمله brute-force بشکند. دسترسی به سرور باید با دقت کنترل شود.

نمونه‌ای از کاربرد این دستورالعمل:

ntpsigndsocket /var/lib/samba/ntp_signd

ntsport port

این دستورالعمل درگاه TCP را که chronyd روی آن سرویس برقراری کلید NTS (یا NTS-KE) را ارائه می‌دهد، مشخص می‌کند. درگاه پیش‌فرض ۴۴۶۰ است.

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

ntsservercert file

این دستورالعمل پرونده‌ای حاوی گواهی در قالب PEM را برای فعالیت chronyd به عنوان سرور NTS مشخص می‌کند. این پرونده همچنین باید شامل تمام گواهی‌های میانی باشد که کلاینت‌ها برای اعتبارسنجی گواهی سرور به آنها نیاز دارند. این پرونده باید برای کاربری که chronyd پس از رها کردن امتیازات root تحت آن اجرا می‌شود، قابل خواندن باشد.

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

پرونده‌ها فقط یک بار بارگیری می‌شوند. برای بارگیری مجدد گواهی تمدیدشده، chronyd باید راه‌اندازی مجدد شود. استفاده از دستورالعمل‌های ntsdumpdir و dumpdir همراه با گزینه -r در chronyd برای عملکرد تقریباً بدون وقفه سرور توصیه می‌شود.

ntsserverkey file

این دستورالعمل پرونده‌ای حاوی کلید خصوصی در قالب PEM را برای فعالیت chronyd به عنوان سرور NTS مشخص می‌کند. این پرونده باید برای کاربری که chronyd پس از رها کردن امتیازات root تحت آن اجرا می‌شود، قابل خواندن باشد. به دلایل امنیتی، این پرونده نباید توسط سایر کاربران قابل خواندن باشد.

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

ntsprocesses processes

این دستورالعمل مشخص می‌کند که chronyd هنگام کار به عنوان کارساز NTS، چه تعداد فرایند کمکی را برای رسیدگی به درخواست‌های NTS-KE کلاینت جهت بهبود کارایی در پردازنده‌های چند‌هسته‌ای و چندریسمانی آغاز کند. در صورت تنظیم روی 0، هیچ فرایند کمکی آغاز نخواهد شد و تمام درخواست‌های NTS-KE توسط فرایند اصلی chronyd رسیدگی می‌شوند. مقدار پیش‌فرض 1 و حداکثر مقدار 1000 است.

maxntsconnections connections

این دستورالعمل حداکثر تعداد اتصالات هم‌روند NTS-KE را به ازای هر فرایند که کارساز NTS می‌پذیرد مشخص می‌کند. مقدار پیش‌فرض 100 است. حداکثر مقدار کاربردی نصف مقدار ثابت FD_SETSIZE سیستم است (معمولاً 1024).

ntsaeads ID...

این دستورالعمل فهرستی از شناسه‌های الگوریتم‌های رمزگذاری احراز هویت‌شده با داده‌های مرتبط (AEAD) فعال‌شده را برای احراز هویت NTS در پیام‌های NTP مشخص می‌کند. chronyd به عنوان کارساز، از اولین الگوریتم فعال در فهرست ارائه‌شده توسط کلاینت استفاده می‌کند. الگوریتم‌هایی که توسط نسخه نصب‌شده کتابخانه رمزنگاری (Nettle، GnuTLS) پشتیبانی نمی‌شوند نادیده گرفته می‌شوند.

شناسه‌های زیر پشتیبانی می‌شوند:

•15: AES-SIV-CMAC-256
•30: AES-128-GCM-SIV

فهرست پیش‌فرض شناسه‌ها 30 15 است. AES-128-GCM-SIV به دلیل کلیدهای کوتاه‌تر، نسبت به AES-SIV-CMAC-256 ارجحیت دارد که باعث کوتاه‌تر شدن کوکی‌های NTS و بهبود قابلیت اطمینان NTS در شبکه‌هایی می‌شود که پیام‌های طولانی‌تر NTP را مسدود کرده یا نرخ آن‌ها را محدود می‌کنند.

نمونه‌ای از این دستورالعمل:

ntsaeads 15

این فهرست توسط کلاینت NTS نیز استفاده می‌شود.

توجه داشته باشید که مشخصات NTS (RFC 8915) کارسازها را ملزم به پشتیبانی از AES-SIV-CMAC-256 می‌کند، یعنی 15 باید همیشه در فهرست مشخص‌شده گنجانده شود.

کلیدهای AES-128-GCM-SIV استفاده‌شده توسط chronyd به دلیل حفظ سازگاری با کلاینت‌های قدیمی‌تر chrony با RFC 8915 مطابقت ندارند، مگر اینکه استفاده از کلیدهای منطبق از طریق یک رکورد NTS-KE https://chrony-project.org/doc/spec/nts-compliant-128gcm.html. مذاکره شود. پشتیبانی از این رکورد در نسخه 4.6.1 افزوده شد. chronyd به عنوان کلاینت می‌تواند با کارسازی که از کلیدهای منطبق استفاده می‌کند اما از مذاکره پشتیبانی نمی‌کند تعامل داشته باشد، به شرطی که کارساز به درخواست‌های با احراز هویت نادرست با یک NTS NAK پاسخ دهد.

ntsdumpdir directory

این دستورالعمل شاخه‌ای را مشخص می‌کند که در آن chronyd به هنگام کار به عنوان کارساز NTS، می‌تواند کلیدهای رمزگذاری کوکی‌های NTS ارائه‌شده به کلاینت‌ها را ذخیره کند. کلیدها در یک پرونده منفرد به نام ntskeys ذخیره می‌شوند. پس از راه‌اندازی مجدد chronyd، بازخوانی مجدد کلیدها به کلاینت‌ها اجازه می‌دهد همچنان از کوکی‌های قدیمی استفاده کنند و از هجوم درخواست‌های NTS-KE جلوگیری می‌کند. به‌طور پیش‌فرض، کارساز کلیدها را ذخیره نمی‌کند.

نمونه‌ای از این دستورالعمل:

ntsdumpdir /var/lib/chrony

این شاخه توسط کلاینت NTS نیز برای ذخیره کوکی‌های NTS استفاده می‌شود.

ntsntpserver hostname

این دستورالعمل نام میزبان (به عنوان یک نام دامنه کاملاً واجد شرایط یا FQDN) یا نشانی کارساز(های) NTP را که در پاسخ NTS-KE به کلاینت‌ها ارائه می‌شود مشخص می‌کند. این ویژگی امکان تفکیک کارساز NTS-KE از کارساز NTP را فراهم می‌سازد. با این حال، کارسازها باید کلیدها را به اشتراک بگذارند؛ یعنی مدیریت خارجی کلیدها باید با تنظیم ntsrotate روی 0 فعال شود. به‌طور پیش‌فرض، هیچ نام میزبان یا نشانی‌ای به کلاینت‌ها ارائه نمی‌شود که بدان معناست آن‌ها باید از کارساز یکسانی برای NTS-KE و NTP استفاده کنند.

ntsrotate interval

این دستورالعمل بازه زمانی چرخش (به ثانیه) کلید کارساز را که کوکی‌های NTS را رمزگذاری می‌کند، مشخص می‌نماید. کلیدهای جدید به‌طور خودکار از دستگاه /dev/urandom تولید می‌شوند. کارساز دو کلید پیشین را نگه می‌دارد تا به کلاینت‌ها فرصت دهد کوکی‌های جدید رمزگذاری‌شده با آخرین کلید را دریافت کنند. این بازه بر اساس زمان کارکرد کارساز اندازه‌گیری می‌شود؛ یعنی اگر chronyd به‌طور پیوسته اجرا نشود، بازه زمانی واقعی می‌تواند طولانی‌تر باشد. بازه زمانی پیش‌فرض 604800 ثانیه (1 هفته) است. حداکثر مقدار 2^31-1 (68 سال) است.

چرخش خودکار کلیدها را می‌توان با تنظیم ntsrotate روی 0 غیرفعال کرد. در این حالت فرض می‌شود کلیدها به صورت خارجی مدیریت می‌شوند. chronyd کلیدها را در پرونده ntskeys ذخیره نخواهد کرد و هنگام صدور دستور rekey در chronyc، کلیدها را از پرونده بازخوانی می‌کند. برای داشتن یک یا چند کارساز اختصاصی برای NTS-KE، می‌توان این پرونده را به‌طور دوره‌ای از کارساز دیگری که chronyd را اجرا می‌کند (و ntsrotate در آن روی 0 تنظیم نشده) کپی کرد. این پرونده شامل کلید بعدی است که کارساز NTS-KE در چرخش بعدی به آن سوئیچ خواهد کرد؛ یعنی فرایند کپی و بازخوانی پرونده نیازی به زمان‌بندی دقیق ندارد (می‌تواند تا حداکثر یک بازه چرخش به تعویق بیفتد). کارسازهای NTS-KE باید با دستورالعمل ntsntpserver پیکربندی شوند تا کلاینت‌ها را به کارساز NTP صحیح هدایت کنند.

نمونه‌ای از این دستورالعمل:

ntsrotate 2592000

port port

این گزینه به شما اجازه می‌دهد درگاهی را که chronyd روی آن به درخواست‌های NTP گوش فرا می‌دهد پیکربندی کنید. این درگاه تنها زمانی باز خواهد بود که نشانی‌ای توسط دستورالعمل allow یا دستور allow در chronyc مجاز شده باشد، یک همتای NTP پیکربندی شده باشد، یا حالت کارساز پخشی (broadcast) فعال باشد.

مقدار پیش‌فرض 123، درگاه استاندارد NTP است. در صورت تنظیم روی 0، chronyd هرگز درگاه کارساز را باز نخواهد کرد و صرفاً در حالت کلاینت کار خواهد کرد. درگاه مبدا مورد استفاده در درخواست‌های کلاینت NTP را می‌توان با دستورالعمل acquisitionport تعیین کرد.

ratelimit [option]...

این دستورالعمل محدودسازی نرخ پاسخ را برای بسته‌های NTP فعال می‌کند. هدف آن کاهش ترافیک شبکه ناشی از کلاینت‌های خراب یا با پیکربندی نادرست NTP است که بیش از حد معمول به کارساز سرکشی می‌کنند. این محدودیت‌ها بر روی نشانی‌های IP مجزا اعمال می‌شوند. اگر چندین کلاینت از یک نشانی IP مشترک استفاده کنند (مانند چندین میزبان پشت NAT)، مجموع ترافیک آن‌ها محدود خواهد شد. چنانچه کلاینتی شناسایی شود که با عدم دریافت پاسخ نرخ سرکشی خود را افزایش می‌دهد، محدودیت نرخ آن موقتاً به حالت تعلیق درمی‌آید تا از افزایش حجم کل ترافیک جلوگیری شود. حداکثر تعداد نشانی‌های IP که می‌توانند به‌طور هم‌زمان نظارت شوند به محدودیت حافظه تعیین‌شده توسط دستورالعمل clientloglimit بستگی دارد.

دستورالعمل ratelimit از چندین گزینه پشتیبانی می‌کند (که می‌توانند به هر ترتیبی تعریف شوند):

interval interval

این گزینه حداقل بازه زمانی بین پاسخ‌ها را تعیین می‌کند. این مقدار به عنوان توانی از 2 بر حسب ثانیه تعریف می‌شود. مقدار پیش‌فرض 3 (8 ثانیه) است. حداقل مقدار -19 (524288 بسته در ثانیه) و حداکثر مقدار 12 (یک بسته در هر 4096 ثانیه) است. توجه داشته باشید که در مقادیر کمتر از -4، محدودسازی نرخ تقریبی است (پاسخ‌ها به صورت انفجاری یا burst مجاز هستند، حتی اگر بازه زمانی بین آن‌ها کوتاه‌تر از بازه تعیین‌شده باشد).

burst responses

این گزینه حداکثر تعداد پاسخ‌هایی را تعیین می‌کند که می‌توانند در یک جهش ناگهانی (burst) ارسال شوند و موقتاً از حد تعیین‌شده توسط گزینه interval فراتر روند. این ویژگی برای کلاینت‌هایی مفید است که در هنگام راه‌اندازی، اندازه‌گیری‌های سریعی انجام می‌دهند (مانند chronyd با گزینه iburst). مقدار پیش‌فرض 8 است. حداقل مقدار 1 و حداکثر مقدار 255 است.

leak rate

این گزینه نرخی را تعیین می‌کند که در آن حتی در صورت فراتر رفتن از حدود تعیین‌شده توسط گزینه‌های interval و burst، پاسخ‌ها به صورت تصادفی مجاز می‌شوند. این سازوکار برای جلوگیری از اقدام مهاجمی لازم است که با جعل نشانی مبدا درخواست‌ها را ارسال می‌کند تا پاسخ‌ها به آن نشانی را به‌طور کامل مسدود نماید. نرخ نشت به صورت توانی از 1/2 تعریف می‌شود و به‌طور پیش‌فرض 2 است، یعنی به‌طور میانگین حداقل از هر چهار درخواست به یکی پاسخ داده می‌شود. حداقل مقدار 1 و حداکثر مقدار 4 است.

kod rate

این گزینه نرخی را تعیین می‌کند که در آن پاسخ‌های RATE از نوع Kiss-o'-Death (KoD) هنگام فراتر رفتن از محدودیت‌های مشخص‌شده توسط گزینه‌های interval و burst، به طور تصادفی ارسال می‌شوند. این یک جریان اضافی از پاسخ‌ها نسبت به گزینه leak است. پاسخ KoD RATE درخواستی از کلاینت برای کاهش نرخ نظرسنجی (polling) خود است. پیاده‌سازی‌های اندکی واقعاً از آن پشتیبانی می‌کنند. نرخ به صورت توانی از ۱/۲ تعریف می‌شود. مقدار پیش‌فرض 0 است که به معنای غیرفعال بودن است. کمترین مقدار 0 و بیشترین مقدار 4 است.

یک نمونه استفاده از دستورالعمل:

ratelimit interval 1 burst 16

این کار نرخ پاسخ را برای آدرس‌های IP که به طور میانگین بیش از یک بار در هر ۲ ثانیه بسته ارسال می‌کنند، یا بسته‌ها را در رگبارهای بیش از ۱۶ بسته می‌فرستند، تا ۷۵٪ کاهش می‌دهد (با مقدار پیش‌فرض leak برابر با 2).

ntsratelimit [option]...

این دستورالعمل محدودسازی نرخ درخواست‌های NTS-KE را فعال می‌کند. مشابه دستورالعمل ratelimit است، با این تفاوت که بازه زمانی پیش‌فرض 6 (۱ اتصال در هر ۶۴ ثانیه) است و از گزینه kod پشتیبانی نمی‌شود.

یک نمونه از استفاده از دستورالعمل:

ntsratelimit interval 3 burst 1

smoothtime max-freq max-wander [leaponly]

دستورالعمل smoothtime می‌تواند برای فعال‌سازی هموارسازی زمانی که chronyd به کلاینت‌های خود ارائه می‌دهد استفاده شود تا ردیابی آن برای آن‌ها آسان‌تر شده و ساعت‌هایشان به هم نزدیک بماند، حتی زمانی که تصحیحات آفست یا فرکانس بزرگی بر ساعت سرور اعمال می‌شود، برای مثال پس از آفلاین بودن به مدت طولانی‌تر.

هشدار: سرور عمداً بهترین تخمین خود را از زمان واقعی ارائه نمی‌دهد. اگر آفست بزرگی انباشته شده باشد، هموار کردن آن ممکن است زمان بسیار زیادی ببرد. این دستورالعمل باید تنها زمانی استفاده شود که کلاینت‌ها برای نظرسنجی از سرور NTP دیگری نیز پیکربندی نشده باشند، زیرا ممکن است این سرور را به عنوان falseticker رد کنند یا به طور کامل در انتخاب منبع ناموفق باشند.

فرایند هموارسازی با یک تابع اسپلاین درجه دو با دو یا سه قطعه پیاده‌سازی می‌شود. این فرایند مستقل از هرگونه تنظیم تدریجی (slewing) اعمال‌شده بر ساعت محلی سیستم است، اما آفست و فرکانس انباشته‌شده با تصحیح ساعت از طریق گام برداشتن (stepping)، مثلاً با دستورالعمل makestep یا فرمان makestep در chronyc، بازنشانی خواهند شد. این فرایند بدون گام برداشتن ساعت می‌تواند با فرمان smoothtime reset بازنشانی شود.

دو آرگومان اول دستورالعمل عبارتند از حداکثر آفست فرکانسی زمان هموارشده نسبت به زمان NTP ردیابی‌شده (بر حسب ppm) و حداکثر نرخی که آفست فرکانس مجاز به تغییر در آن است (بر حسب ppm در ثانیه). leaponly یک آرگومان اختیاری سوم است که حالتی را فعال می‌کند که در آن فقط ثانیه‌های کبیسه هموار می‌شوند و تغییرات آفست و فرکانس عادی نادیده گرفته می‌شوند. گزینه leaponly در ترکیب با دستورالعمل leapsecmode slew برای ایجاد امکان استفاده ایمن کلاینت‌ها از چندین سرور هموارسازی زمان مفید است.

فرایند هموارسازی زمانی که ۱/۱۰۰۰۰ از انحراف (skew) تخمینی ساعت محلی به زیر حداکثر نرخ تغییر فرکانس بیفتد، به طور خودکار فعال می‌شود. این فرایند همچنین می‌تواند به صورت دستی با فرمان smoothtime activate فعال شود، که به ویژه زمانی مفید است که ساعت فقط با ورودی دستی همگام‌سازی شده باشد و انحراف همواره بزرگتر از آستانه باشد. فرمان smoothing می‌تواند برای پایش این فرایند استفاده شود.

یک نمونه مناسب برای کلاینت‌هایی که از ntpd و بازه نظرسنجی ۱۰۲۴ ثانیه استفاده می‌کنند:

smoothtime 400 0.001

یک نمونه مناسب برای کلاینت‌هایی که از chronyd در Linux استفاده می‌کنند:

smoothtime 50000 0.01

bindcmdaddress address

دستورالعمل bindcmdaddress یک آدرس IP محلی را مشخص می‌کند که chronyd سوکت UDP شنونده برای بسته‌های فرمان پایش (صادرشده توسط chronyc) را به آن مقید (bind) می‌کند. در سیستم‌هایی غیر از Linux، آدرس رابط باید هنگام شروع chronyd از قبل پیکربندی شده باشد.

این دستورالعمل همچنین می‌تواند مسیر سوکت فرمان Unix domain را که توسط chronyc برای ارسال فرمان‌های پیکربندی استفاده می‌شود، تغییر دهد. سوکت باید در دایرکتوری‌ای باشد که فقط توسط کاربر root یا chrony قابل دسترسی باشد. در صورت عدم وجود، دایرکتوری در زمان شروع ایجاد خواهد شد. مسیر پیش‌فرض کامپایل‌شده برای سوکت /var/run/chrony/chronyd.sock است. سوکت را می‌توان با تنظیم مسیر روی / غیرفعال کرد.

به طور پیش‌فرض، chronyd سوکت‌های UDP را به آدرس‌های 127.0.0.1 و ::1 (یعنی رابط loopback) مقید می‌کند. این کار تمام دسترسی‌ها به جز دسترسی از localhost را مسدود می‌کند. برای شنود بسته‌های فرمان روی همه رابط‌ها، می‌توانید خطوط زیر را اضافه کنید:

bindcmdaddress 0.0.0.0
bindcmdaddress ::

به پرونده پیکربندی.

برای هر یک از پروتکل‌های IPv4، IPv6 و Unix domain، تنها یک دستورالعمل bindcmdaddress می‌تواند مشخص شود.

نمونه‌ای که مسیر سوکت فرمان Unix domain را تعیین می‌کند:

bindcmdaddress /var/run/chrony/chronyd.sock

bindcmddevice interface

دستورالعمل bindcmddevice سوکت‌های فرمان UDP را به یک دستگاه شبکه مشخص‌شده با نام رابط مقید می‌کند. این دستورالعمل تنها می‌تواند یک رابط را مشخص کند و فقط در Linux پشتیبانی می‌شود.

یک نمونه از دستورالعمل:

bindcmddevice eth0

cmdallow [all] [subnet]

این دستورالعمل مشابه allow است، با این تفاوت که به جای دسترسی کلاینت NTP، دسترسی پایش را به یک زیرشبکه یا میزبان خاص امکان‌پذیر می‌کند. (منظور از «دسترسی پایش» این است که chronyc می‌تواند روی آن میزبان‌ها اجرا شده و داده‌های پایش را از chronyd روی این رایانه دریافت کند.)

نحو آن دقیقاً با دستورالعمل allow یکسان است.

همچنین یک دستورالعمل cmdallow all با رفتاری مشابه دستورالعمل allow all وجود دارد (اما البته در این مورد برای دسترسی پایش اعمال می‌شود).

آدرس‌های 127.0.0.1 و ::1 (یعنی رابط loopback) همیشه مجاز هستند.

توجه داشته باشید که chronyd باید با دستورالعمل bindcmdaddress پیکربندی شود تا صرفاً روی رابط loopback شنود نکند و دسترسی از راه دور عملاً مجاز شود.

cmddeny [all] [subnet]

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

نحو آن یکسان است.

همچنین یک دستورالعمل cmddeny all با رفتاری مشابه دستورالعمل cmdallow all وجود دارد.

cmdport port

دستورالعمل cmdport امکان تغییر درگاه مورد استفاده برای پایش زمان اجرا (از طریق برنامه chronyc) را از مقدار پیش‌فرض (323) فراهم می‌کند. در صورت تنظیم روی 0، chronyd درگاه را باز نمی‌کند، که دسترسی از راه دور chronyc (با bindcmdaddress غیرپیش‌فرض) و دسترسی محلی کاربران بدون امتیاز را غیرفعال می‌کند. سوکت فرمان دامنه یونیکس غیرفعال نمی‌شود.

مثال:

cmdport 257

این دستور chronyd را وادار به استفاده از UDP 257 به‌عنوان درگاه فرمان می‌کند. (جهت تعامل درست، chronyc باید با گزینه -p 257 اجرا شود.)

cmdratelimit [option]...

این دستورالعمل محدودیت نرخ پاسخ را برای بسته‌های فرمان فعال می‌کند. مشابه دستورالعمل ratelimit است، با این تفاوت که پاسخ‌ها به localhost هرگز محدود نمی‌شوند، بازه زمانی پیش‌فرض -4 (16 بسته در ثانیه) است، و گزینه kod پشتیبانی نمی‌شود.

مثال استفاده:

cmdratelimit interval 2

opencommands [command]...

این دستورالعمل فهرستی از دستورهای پایش را برای میزبان‌های مجاز توسط دستورالعمل cmdallow فعال می‌کند. دستورهای زیر قابل تعیین هستند (نام‌گذاری از chronyc پیروی می‌کند):

activity*, authdata, clients, manual*, ntpdata, rtcdata*, selectdata, serverstats*, smoothing*, sourcename*, sources*, sourcestats, tracking*.

دستورهای دارای علامت * به‌طور پیش‌فرض فعال هستند. پروتکل این دستورها پایدار تلقی می‌شود و بین نسخه‌های مختلف chronyc و chronyd کار می‌کند. پروتکل سایر دستورها پایدار نیست و نسخه‌های مختلف chronyc و chronyd ممکن است با یکدیگر کار نکنند. در این صورت، chronyc خطای ‘Invalid command’ یا ‘Bad reply from daemon’ را چاپ خواهد کرد.

توجه: برخی داده‌های ارائه‌شده می‌توانند برای مهاجمان در جهت مشاهده و پیش‌بینی وضعیت داخلی chronyd مفید باشند. توصیه می‌شود فقط دستورهای مورد نیاز فعال شده و دسترسی محدود گردد.

hwclockfile file

دستورالعمل hwclockfile مسیر پرونده adjtime مورد استفاده برنامه hwclock در لینوکس را تعیین می‌کند. chronyd پرونده را جهت بررسی نگهداری زمان محلی یا UTC توسط RTC می‌خواند. این دستور اولویت بالاتری نسبت به دستورالعمل rtconutc دارد.

مقدار پیش‌فرض کامپایل‌شده '/etc/adjtime' است.

مثال:

hwclockfile /etc/adjtime

rtcautotrim threshold

دستورالعمل rtcautotrim برای نزدیک نگه‌داشتن خودکار RTC به ساعت سیستم استفاده می‌شود. هنگام همگام بودن ساعت سیستم و بیشتر بودن خطای تخمینی از آستانه مشخص‌شده، chronyd ساعت RTC را مانند دستور trimrtc در chronyc تنظیم می‌کند. دقت عملیات تنظیم حدود ۱ ثانیه است که حداقل آستانه مؤثر محسوب می‌شود.

این دستورالعمل تنها همراه با rtcfile مؤثر است.

مثال استفاده:

rtcautotrim 30

این دستور خطای آستانه را روی ۳۰ ثانیه تنظیم می‌کند.

rtcdevice device

دستورالعمل rtcdevice مسیر پرونده افزاره دسترسی به RTC را تعیین می‌کند. مسیر پیش‌فرض /dev/rtc است.

rtcfile file

دستورالعمل rtcfile نام پرونده ذخیره پارامترهای ردیابی دقت RTC توسط chronyd را تعریف می‌کند.

مثال:

rtcfile /var/lib/chrony/rtc

chronyd هنگام خروج و هنگام اجرای دستور writertc در chronyc، اطلاعات را در این پرونده ذخیره می‌کند. اطلاعات شامل خطای RTC در مبدأ زمانی مشخص، آن مبدأ (به ثانیه از ۱ ژانویه ۱۹۷۰)، و نرخ جلو یا عقب افتادن RTC است.

پشتیبانی از RTC محدود است؛ کد آن وابسته به سیستم است. امکانات RTC (دستورالعمل rtcfile و گزینه -s در chronyd) فقط در صورت برقراری سه شرط زیر کار می‌کنند:

1.لینوکس در حال اجرا باشد.
2.هسته با پشتیبانی گسترده ساعت بلادرنگ کامپایل شده باشد (افزاره /dev/rtc فعال باشد).
3.برنامه دیگری از /dev/rtc استفاده نکند.

rtconutc

chronyd به‌طور پیش‌فرض فرض می‌کند RTC زمان محلی را نگه می‌دارد (شامل تغییرات ساعت تابستانی). این حالت برای سیستم‌های دوگانه‌بوت لینوکس و ویندوز مناسب است.

در صورت تنظیم RTC روی زمان محلی و خاموش بودن رایانه هنگام تغییر ساعت تابستانی، ساعت سیستم در بوت بعدی یک ساعت خطا خواهد داشت.

راهکار دیگر، نگهداری ساعت هماهنگ جهانی (UTC) در RTC است. این روش مشکل خطای یک ساعته را ندارد.

دستورالعمل rtconutc نشان می‌دهد RTC باید زمان UTC را نگه دارد. این دستور آرگومانی ندارد و معادل سوئیچ -u در برنامه hwclock است.

این تنظیم توسط hwclockfile لغو می‌شود و برای دستورالعمل rtcsync یا استفاده از RTC به‌عنوان ساعت مرجع کاربرد ندارد.

rtcsync

دستورالعمل rtcsync حالتی را فعال می‌کند که در آن ساعت سیستم به‌صورت دوره‌ای روی RTC کپی شده و chronyd رانش آن را ردیابی نمی‌کند. این دستورالعمل با rtcfile هم‌زمان قابل استفاده نیست.

در لینوکس، رونوشت RTC توسط کرنل هر ۱۱ دقیقه یک‌بار انجام می‌شود.

در macOS، زمانی که ساعت سیستم در وضعیت همگام‌شده باشد، chronyd رونوشت RTC را هر ۶۰ دقیقه یک‌بار انجام می‌دهد.

در سایر سیستم‌ها، این دستورالعمل هیچ کاری انجام نمی‌دهد.

log [option]...

دستورالعمل log مشخص می‌کند که اطلاعات خاصی باید ثبت و گزارش شوند. پرونده‌های گزارش در شاخه‌ای که توسط دستورالعمل logdir مشخص شده نوشته می‌شوند. به‌طور دوره‌ای سربرگی در پرونده‌ها نوشته می‌شود تا معنای ستون‌ها را مشخص کند.

rawmeasurements

این گزینه اندازه‌گیری‌های خام NTP و اطلاعات مرتبط را در پرونده‌ای به نام measurements.log ثبت می‌کند. برای هر بسته دریافتی از منبع، یک ورودی ثبت می‌شود. این گزینه هنگام اشکال‌زدایی یک مشکل می‌تواند مفید باشد. نمونه‌ای از یک خط (که در پرونده اصلی به‌صورت یک خط واحد ظاهر می‌شود) از پرونده گزارش در زیر نشان داده شده است.
2016-11-09 05:40:50 203.0.113.15    N  2 111 111 1111  10 10 1.0 \
   -4.966e-03  2.296e-01  1.577e-05  1.615e-01  7.446e-03 CB00717B 4B D K

ستون‌ها به شرح زیر هستند (مقادیر داخل قلاب، مقادیر مربوط به خط نمونه بالا هستند):

1.تاریخ [2015-10-13]
2.ساعت:دقیقه:ثانیه. توجه داشته باشید که جفت تاریخ-زمان در قالب UTC بیان می‌شود، نه منطقه زمانی محلی. [05:40:50]
3.نشانی IP سرور یا پیری که اندازه‌گیری از آن به دست آمده است [203.0.113.15]
4.وضعیت کبیسه (N به معنای عادی، + به این معنا که آخرین دقیقه ماه جاری ۶۱ ثانیه است، - به این معنا که آخرین دقیقه ماه ۵۹ ثانیه است، ? به این معنا که رایانه دوردست در حال حاضر همگام نشده است.) [N]
5.استراتوم رایانه دوردست. [2]
6.آزمون‌های ۱ تا ۳ مربوط به RFC 5905 (۱=قبول، ۰=رد) [111]
7.آزمون‌های ۵ تا ۷ مربوط به RFC 5905 (۱=قبول، ۰=رد) [111]
8.نتایج آزمون‌های maxdelay، maxdelayratio، و maxdelaydevratio (یا maxdelayquant)، و آزمونی برای حلقه همگام‌سازی (۱=قبول، ۰=رد). نخستین آزمون از این چهار آزمون، دقت سرور، زمان پاسخ، معتبر بودن آفست اندازه‌گیری‌شده و این‌که آیا یک پاسخ درهم‌تنیده برای همگام‌سازی قابل قبول است یا خیر را نیز بررسی می‌کند. [1111]
9.نظرسنجی محلی [10]
10.نظرسنجی دوردست [10]
11.‘امتیاز’ (یک امتیاز داخلی در هر سطح نظرسنجی که برای تصمیم‌گیری در مورد افزایش یا کاهش سطح نظرسنجی به کار می‌رود. این مقدار بر اساس تعداد اندازه‌گیری‌هایی که در حال حاضر برای الگوریتم رگرسیون استفاده می‌شوند تنظیم می‌گردد). [1.0]
12.خطای تخمینی ساعت محلی (theta در RFC 5905). مقادیر مثبت نشان می‌دهند که ساعت محلی نسبت به منبع دوردست عقب‌تر است. [-4.966e-03]
13.تأخیر همتا (delta در RFC 5905). [2.296e-01]
14.پراکندگی همتا (epsilon در RFC 5905). [1.577e-05]
15.تاخیر ریشه (DELTA در RFC 5905). [1.615e-01]
16.پراکندگی ریشه (EPSILON در RFC 5905). [7.446e-03]
17.شناسه مرجع منبع سرور به‌صورت یک عدد هگزادسیمال. [CB00717B]
18.حالت NTP بسته دریافت‌شده (1=همتای فعال، 2=همتای غیرفعال، 4=سرور، B=پایه، I=درهم‌تنیده). [4B]
19.منبع برچسب زمانی ارسال محلی (D=دیمن، K=هسته، H=سخت‌افزار). [D]
20.منبع برچسب زمانی دریافت محلی (D=دیمن، K=هسته، H=سخت‌افزار). [K]

measurements

این گزینه با گزینه rawmeasurements یکسان است، با این تفاوت که تنها اندازه‌گیری‌های معتبر از منابع همگام‌شده را ثبت می‌کند، یعنی اندازه‌گیری‌هایی که آزمون‌های ۱ تا ۷ در RFC 5905 را با موفقیت پشت سر گذاشته‌اند. این می‌تواند برای رسم نمودارهای عملکرد منبع مفید باشد.

statistics

این گزینه اطلاعات مربوط به پردازش رگرسیون را در پرونده‌ای به نام statistics.log ثبت می‌کند. یک خط نمونه (که در واقع به صورت یک خط تکی در پرونده ظاهر می‌شود) از پرونده ثبت گزارش در زیر نشان داده شده است.
2016-08-10 05:40:50 203.0.113.15     6.261e-03 -3.247e-03 \
     2.220e-03  1.874e-06  1.080e-06 7.8e-02  16   0   8  0.00

ستون‌ها به شرح زیر هستند (مقادیر درون براکت مقادیر خط نمونه بالا هستند):

1.تاریخ [2015-07-22]
2.ساعت:دقیقه:ثانیه. توجه داشته باشید که جفت تاریخ-زمان بر حسب UTC بیان می‌شود، نه منطقه زمانی محلی. [05:40:50]
3.نشانی IP سرور یا همتایی که اندازه‌گیری از آن می‌آید [203.0.113.15]
4.انحراف معیار تخمینی اندازه‌گیری‌های منبع (به ثانیه). [6.261e-03]
5.آفست تخمینی منبع (به ثانیه، در این حالت مقدار مثبت یعنی ساعت محلی جلوتر تخمین زده شده است). [-3.247e-03]
6.انحراف معیار تخمینی برای آفست تخمین‌زده‌شده (به ثانیه). [2.220e-03]
7.نرخ تخمینی جلو رفتن یا عقب افتادن زمان ساعت محلی نسبت به منبع (به ثانیه در ثانیه، مثبت یعنی ساعت محلی جلو می‌افتد). این مقدار نسبت به جبران‌سازی فعلی اعمال‌شده روی ساعت محلی است، نه نسبت به ساعت محلی بدون هرگونه جبران‌سازی. [1.874e-06]
8.خطای تخمینی در مقدار نرخ (به ثانیه در ثانیه). [1.080e-06].
9.نسبت |old_rate - new_rate| / old_rate_error. مقادیر بزرگ نشان می‌دهند که آمار منبع را به خوبی مدل‌سازی نمی‌کند. [7.8e-02]
10.تعداد اندازه‌گیری‌هایی که در حال حاضر برای الگوریتم رگرسیون استفاده می‌شوند. [16]
11.شاخص شروع جدید (قدیمی‌ترین نمونه دارای شاخص 0 است؛ این روشی است که برای هرس نمونه‌های قدیمی هنگامی که دیگر به نظر نمی‌رسد اندازه‌گیری‌ها با مدل خطی همخوانی دارند، استفاده می‌شود). [0، یعنی هیچ نمونه‌ای این بار دور ریخته نشده است]
12.تعداد دورها (runs). تعداد دورهای باقیمانده‌های رگرسیون با علامت یکسان محاسبه می‌شود. اگر این مقدار خیلی کوچک باشد، نشان می‌دهد که اندازه‌گیری‌ها دیگر به خوبی با یک مدل خطی نمایش داده نمی‌شوند و برخی نمونه‌های قدیمی‌تر باید دور ریخته شوند. تعداد دورها برای داده‌هایی که حفظ می‌شوند در جدول قرار می‌گیرد. مقادیری تقریباً نصف تعداد نمونه‌ها مورد انتظار است. [8]
13.عدم تقارن تخمینی یا پیکربندی‌شده لغزش شبکه (jitter) در مسیر به منبع که برای تصحیح آفست‌های اندازه‌گیری‌شده استفاده شده است. عدم تقارن می‌تواند بین -0.5 و +0.5 باشد. مقدار منفی یعنی تاخیر بسته‌های ارسال‌شده به منبع متغیرتر از تاخیر بسته‌های ارسال‌شده برگشتی از منبع است. [0.00، یعنی بدون تصحیح برای عدم تقارن]

selection

این گزینه اطلاعات مربوط به انتخاب منابع برای همگام‌سازی را در پرونده‌ای به نام selection.log ثبت می‌کند. توجه داشته باشید که نرخ ورودی‌های نوشته‌شده در این پرونده به صورت درجه دو با تعداد منابع مشخص‌شده رشد می‌کند (هر اندازه‌گیری انتخاب را برای تمام منابع فعال می‌کند). یک خط نمونه (که در واقع به صورت یک خط واحد در پرونده ظاهر می‌شود) از پرونده ثبت رویداد در زیر نشان داده شده است.
2022-05-01 02:01:20 203.0.113.15    * -----  377  1.00  \
     4.228e+01 -1.575e-04  1.239e-04

ستون‌ها به شرح زیر هستند (مقادیر داخل قلاب مقادیر خط نمونه بالا هستند):

1.تاریخ [2022-05-01]
2.ساعت:دقیقه:ثانیه. توجه داشته باشید که جفت تاریخ-زمان بر حسب UTC بیان می‌شود، نه منطقه زمانی محلی. [02:01:20]
3.نشانی IP یا شناسه مرجع (reference ID) منبع. [203.0.113.15]
4.وضعیت منبع که با یکی از نمادهای زیر مشخص می‌شود. [*]
برای همگام‌سازی قابل انتخاب در نظر گرفته نشده است:
•N - گزینه noselect را دارد.
•s - همگام‌سازی نشده است.
•M - اندازه‌گیری‌های کافی ندارد.
•d - فاصله ریشه (root distance) بزرگ‌تر از حداکثر فاصله (پیکربندی‌شده توسط دستورالعمل maxdistance) دارد.
•~ - لغزشی (jitter) بزرگ‌تر از حداکثر لغزش (پیکربندی‌شده توسط دستورالعمل maxjitter) دارد.
•w - منتظر می‌ماند تا منابع دیگر از وضعیت M خارج شوند.
•S - نسبت به منابع دیگر اندازه‌گیری‌های قدیمی‌تری دارد.
•O - دارای stratum برابر یا بزرگ‌تر از stratum یتیم (پیکربندی‌شده توسط دستورالعمل local).
•T - عدم توافق کامل با منابع دارای گزینه trust.
•x - عدم توافق با سایر منابع (falseticker).
قابل انتخاب برای همگام‌سازی در نظر گرفته شده، اما در حال حاضر استفاده نمی‌شود:
•W - در انتظار قابل انتخاب شدن سایر منابع (الزام‌شده توسط دستورالعمل minsources، یا گزینه require یک منبع دیگر).
•P - ترجیح یک منبع قابل انتخاب دیگر به‌دلیل گزینه prefer.
•U - در انتظار اندازه‌گیری جدید (پس از انتخاب یک منبع برتر متفاوت).
•D - دارای root distance بسیار بزرگ (در حال حاضر یا اخیراً) برای ترکیب با سایر منابع (پیکربندی‌شده با دستورالعمل combinelimit).
استفاده‌شده برای همگام‌سازی ساعت محلی:
•+ - ترکیب‌شده با بهترین منبع.
•* - انتخاب‌شده به‌عنوان بهترین منبع برای به‌روزرسانی داده‌های مرجع (مانند root delay، root dispersion).
5.گزینه‌های انتخاب موثر فعلی منبع. ممکن است به‌دلیل حالت انتخاب احراز هویت (پیکربندی‌شده توسط دستورالعمل authselectmode) با گزینه‌های پیکربندی‌شده تفاوت داشته باشد. [-----]
•N نشان‌دهنده گزینه noselect است.
•P نشان‌دهنده گزینه prefer است.
•T نشان‌دهنده گزینه trust است.
•R نشان‌دهنده گزینه require است.
6.ثبات دسترس‌پذیری چاپ‌شده به‌صورت یک عدد مبنای هشت (اکتال). این ثبات ۸ بیت دارد و با هر بسته دریافتی یا ازدست‌رفته از منبع به‌روزرسانی می‌شود. مقدار 377 نشان می‌دهد که برای تمام هشت ارسال اخیر پاسخی معتبر دریافت شده است. [377]
7.امتیاز فعلی در برابر منبع در وضعیت *. سیستم امتیازدهی از انتخاب مجدد مکرر در زمان شباهت root distance چندین منبع جلوگیری می‌کند. مقدار بزرگ‌تر از 1 نشان می‌دهد این منبع در انتخاب‌های اخیر از منبع * بهتر بوده است. در صورت رسیدن امتیاز به 10، بهترین منبع مجدداً انتخاب شده و امتیازها به 1 بازنشانی می‌شوند. [1.00]
8.فاصله زمانی از آخرین اندازه‌گیری منبع به ثانیه. [4.228e+01]
9.نقطه پایانی پایین بازه‌ای که انتظار می‌رفت شامل آفست واقعی ساعت محلی تعیین‌شده توسط root distance منبع باشد. [-1.575e-04]
10.نقطه پایانی بالای بازه‌ای که انتظار می‌رفت شامل آفست واقعی ساعت محلی تعیین‌شده توسط root distance منبع باشد. [1.239e-04]

tracking

این گزینه تغییرات برآورد نرخ پیش‌افتادن یا عقب‌افتادن سیستم، و هرگونه slew انجام‌شده را در پرونده‌ای به نام tracking.log ثبت می‌کند. یک سطر نمونه (که در اصل به صورت یک تک‌سطر در پرونده نمایش می‌یابد) از پرونده گزارش در زیر آورده شده است.
2017-08-22 13:22:36 203.0.113.15     2     -3.541      0.075 -8.621e-06 N \
            2  2.940e-03 -2.084e-04  1.534e-02  3.472e-04  8.304e-03

ستون‌ها به شرح زیر هستند (مقادیر درون قلاب‌ها مقادیر سطر نمونه بالا هستند):

1.تاریخ [2017-08-22]
2.ساعت:دقیقه:ثانیه. توجه داشته باشید که زوج تاریخ-زمان در قالب UTC بیان می‌شود، نه منطقه زمانی محلی. [13:22:36]
3.نشانی IP کارساز یا همتایی که سیستم محلی با آن همگام شده است. [203.0.113.15]
4.مقدار stratum سیستم محلی. [2]
5.بسامد سیستم محلی (بر حسب ppm، مثبت یعنی سیستم محلی جلوتر از UTC کار می‌کند). [-3.541]
6.حدود خطای بسامد (بر حسب ppm). [0.075]
7.آفست محلی تخمینی در مبدا زمانی، که معمولاً با slew ساعت محلی تصحیح می‌شود (بر حسب ثانیه، مثبت نشان می‌دهد ساعت جلوتر از UTC است). [-8.621e-06]
8.وضعیت ثانیه کبیسه (N یعنی عادی، + یعنی آخرین دقیقه این ماه ۶۱ ثانیه‌ای است، - یعنی آخرین دقیقه ماه ۵۹ ثانیه‌ای است، ? یعنی ساعت در حال حاضر همگام نیست.) [N]
9.تعداد منابع ترکیب‌شده. [2]
10.انحراف معیار برآوردشده آفست ترکیب‌شده (بر حسب ثانیه). [2.940e-03]
11.تصحیح آفست باقی‌مانده از به‌روزرسانی قبلی (بر حسب ثانیه، مثبت یعنی ساعت سیستم عقب‌تر از UTC است). [-2.084e-04]
12.مجموع تاخیرهای مسیر شبکه تا ساعت مرجعی که ساعت محلی در نهایت با آن همگام می‌شود (بر حسب ثانیه). [1.534e-02]
13.پراکندگی کل انباشته‌شده در تمام کارسازها تا ساعت مرجعی که ساعت محلی در نهایت با آن همگام می‌شود (بر حسب ثانیه). [3.472e-04]
14.حداکثر خطای تخمینی ساعت سیستم در بازه زمانی از آخرین به‌روزرسانی (به ثانیه). شامل افست، تصحیح افست باقی‌مانده، root delay و پراکندگی از آخرین به‌روزرسانی به همراه پراکندگی انباشته‌شده در بازه. [8.304e-03]

rtc

این گزینه اطلاعات ساعت زمان‌واقعی (RTC) سیستم را ثبت می‌کند. یک خط نمونه (که در پرونده به صورت یک خط واحد ظاهر می‌شود) از پرونده rtc.log در زیر نشان داده شده است.
2015-07-22 05:40:50     -0.037360 1       -0.037434\
          -37.948  12   5  120

ستون‌ها به شرح زیر هستند (مقادیر داخل قلاب مقادیر خط نمونه بالا هستند):

1.تاریخ [2015-07-22]
2.ساعت:دقیقه:ثانیه. جفت تاریخ-زمان بر حسب UTC بیان می‌شود، نه منطقه زمانی محلی. [05:40:50]
3.افست اندازه‌گیری‌شده بین RTC و ساعت سیستم بر حسب ثانیه. مقدار مثبت نشان‌دهنده جلوتر بودن RTC از زمان سیستم است [-0.037360].
4.پرچم نشان‌دهنده این که آیا رگرسیون ضرایب معتبر تولید کرده است یا خیر. (۱ برای بله، ۰ برای خیر). [1]
5.افست در زمان فعلی که توسط فرایند رگرسیون پیش‌بینی شده است. تفاوت بزرگ بین این مقدار و افست اندازه‌گیری‌شده تمایل به نشان دادن یک داده پرت با خطای اندازه‌گیری جدی دارد. [-0.037434]
6.نرخی که RTC نسبت به ساعت سیستم زمان از دست می‌دهد یا به دست می‌آورد. بر حسب ppm، با مقدار مثبت که نشان می‌دهد RTC در حال جلو افتادن است. [-37.948]
7.تعداد اندازه‌گیری‌های استفاده‌شده در رگرسیون. [12]
8.تعداد توالی‌های باقیمانده‌های رگرسیون با علامت یکسان. مقادیر کم نشان می‌دهند خط مستقیم دیگر مدل مناسبی برای داده‌های اندازه‌گیری‌شده نیست و اندازه‌گیری‌های قدیمی‌تر باید دور ریخته شوند. [5]
9.بازه اندازه‌گیری استفاده‌شده قبل از انجام اندازه‌گیری (به ثانیه). [120]

refclocks

این گزینه اندازه‌گیری‌های خام و فیلترشده ساعت مرجع را در پرونده‌ای به نام refclocks.log ثبت می‌کند. یک خط نمونه (که در پرونده به صورت یک خط واحد ظاهر می‌شود) از پرونده لاگ در زیر نشان داده شده است.
2009-11-30 14:33:27.000000 PPS2    7 N 1  4.900000e-07 -6.741777e-07  1.000e-06

ستون‌ها به شرح زیر هستند (مقادیر داخل قلاب مقادیر خط نمونه بالا هستند):

1.تاریخ [2009-11-30]
2.ساعت:دقیقه:ثانیه.میکروثانیه. جفت تاریخ-زمان بر حسب UTC بیان می‌شود، نه منطقه زمانی محلی. [14:33:27.000000]
3.شناسه مرجع (Reference ID) ساعت مرجعی که اندازه‌گیری از آن آمده است. [PPS2]
4.شماره توالی poll راه‌انداز در یک بازه زمانی poll برای نمونه‌های خام، یا - برای نمونه‌های فیلترشده. [7]
5.وضعیت ثانیه کبیسه (N به معنی عادی، + یعنی آخرین دقیقه از ماه جاری دارای ۶۱ ثانیه است، - یعنی آخرین دقیقه ماه دارای ۵۹ ثانیه است). [N]
6.پرچمی که مشخص می‌کند آیا نمونه از منبع PPS می‌آید یا خیر (۱ برای بله، ۰ برای خیر، یا - برای نمونه فیلترشده). [1]
7.خطای ساعت محلی اندازه‌گیری‌شده توسط درایور ساعت مرجع، یا - برای نمونه فیلترشده. [4.900000e-07]
8.خطای ساعت محلی به همراه تصحیحات اعمال‌شده. مقدار مثبت نشان می‌دهد ساعت محلی عقب است. [-6.741777e-07]
9.پراکندگی (dispersion) فرض‌شده نمونه. [1.000e-06]

tempcomp

این گزینه اندازه‌گیری‌های دما و جبران‌سازی‌های نرخ سیستم را در پرونده‌ای به نام tempcomp.log ثبت می‌کند. یک خط نمونه (که در عمل به صورت یک خط واحد در پرونده ظاهر می‌شود) از پرونده گزارش در زیر نشان داده شده است.
2015-04-19 10:39:48  2.8000e+04  3.6600e-01

ستون‌ها به شرح زیر هستند (مقادیر داخل کروشه مقادیر مربوط به خط نمونه بالا می‌باشند):

1.تاریخ [2015-04-19]
2.ساعت:دقیقه:ثانیه. توجه داشته باشید که جفت تاریخ-زمان بر حسب UTC بیان شده است، نه منطقه زمانی محلی. [10:39:48]
3.دمای خوانده‌شده از حسگر. [2.8000e+04]
4.جبران‌سازی اعمال‌شده بر حسب ppm، مقدار مثبت به این معنی است که ساعت سیستم سریع‌تر از حالتی که بدون جبران‌سازی بود کار می‌کند. [3.6600e-01]
یک مثال از این دستورالعمل:
log measurements statistics tracking

logbanner entries

یک بنر (سربرگ) به صورت دوره‌ای در پرونده‌های گزارشی که توسط دستورالعمل log فعال شده‌اند نوشته می‌شود تا معنای ستون‌ها را مشخص کند.

دستورالعمل logbanner بازه تعداد ورودی‌هایی که در پرونده گزارش نوشته می‌شوند و پس از آن بنر دوباره نوشته می‌شود را مشخص می‌کند. مقدار پیش‌فرض ۳۲ است، و برای غیرفعال کردن کامل آن می‌توان از ۰ استفاده کرد.

logchange threshold

این دستورالعمل آستانه‌ای را برای تنظیم ساعت سیستم تعیین می‌کند که باعث تولید پیام syslog خواهد شد. خطاهای ساعت شناسایی‌شده از طریق بسته‌های NTP، ساعت‌های مرجع، یا برچسب‌های زمانی واردشده از طریق دستور settime در chronyc ثبت می‌شوند.

به طور پیش‌فرض، این آستانه ۱ ثانیه است.

یک مثال از استفاده:

logchange 0.1

که باعث می‌شود در صورت آغاز جبران‌سازی خطای ساعت سیستم بیشتر از ۰.۱ ثانیه، یک پیام syslog تولید شود.

logdir directory

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

یک مثال از استفاده از این دستورالعمل:

logdir /var/log/chrony

mailonchange email threshold

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

یک مثال از استفاده از این دستورالعمل:

mailonchange root@localhost 0.5

این دستور در صورتی که تغییری بیش از ۰.۵ ثانیه بر روی ساعت سیستم اعمال شود، یک پیام ایمیل به root ارسال می‌کند.

این دستورالعمل را نمی‌توان هنگامی که پالایه فراخوانی سیستم توسط گزینه -F فعال شده باشد استفاده کرد، زیرا به پردازش chronyd اجازه انشعاب (fork) و اجرای باینری sendmail داده نخواهد شد.

confdir directory...

دستورالعمل confdir پرونده‌های پیکربندی با پسوند .conf را از یک شاخه وارد (include) می‌کند. پرونده‌ها به ترتیب لغت‌نگاری نام پرونده‌ها وارد می‌شوند.

چندین شاخه (حداکثر ۱۰ مورد) را می‌توان با یک دستورالعمل confdir مشخص کرد. در این حالت، اگر چندین شاخه حاوی پرونده‌ای با نام یکسان باشند، تنها اولین پرونده به ترتیب شاخه‌های مشخص‌شده وارد خواهد شد. این کار امکان یک پیکربندی قطعه‌قطعه را فراهم می‌کند که در آن می‌توان با افزودن پرونده‌ها به شاخه‌ای دیگر، قطعات موجود را جایگزین کرد.

این دستورالعمل می‌تواند چندین بار استفاده شود.

نمونه‌ای از این دستورالعمل:

confdir /etc/chrony.d

sourcedir directory...

دستورالعمل sourcedir همسان دستورالعمل confdir است، با این تفاوت که پرونده‌های پیکربندی پسوند .sources دارند، فقط می‌توانند منابع NTP را مشخص کنند (یعنی دستورالعمل‌های server، pool و peer)، انتظار می‌رود تمامی خطوط به نویسه خط جدید ختم شوند، و می‌توانند توسط دستور reload sources در chronyc بازخوانی شوند. این دستورالعمل به‌ویژه برای منابع پویا مانند سرورهای NTP دریافت‌شده از یک سرور DHCP مفید است، که می‌توانند توسط یک اسکریپت شبکه در پرونده‌ای مختص به همان رابط شبکه نوشته شوند.

این دستورالعمل می‌تواند چندین بار استفاده شود.

نمونه‌ای از این دستورالعمل:

sourcedir /var/run/chrony-dhcp

include pattern

دستورالعمل include یک پرونده پیکربندی یا در صورت مشخص شدن یک الگوی نویسه عمومی (wildcard)، چندین پرونده پیکربندی را شامل می‌کند. برخلاف دستورالعمل confdir، نام کامل پرونده‌ها باید مشخص شود و وجود حداقل یک پرونده الزامی است.

این دستورالعمل می‌تواند چندین بار استفاده شود.

نمونه‌ای از این دستورالعمل:

include /etc/chrony.d/*.conf

hwtimestamp interface [option]...

این دستورالعمل برچسب‌گذاری زمانی سخت‌افزاری (HW timestamping) بسته‌های NTP ارسالی و دریافتی از رابط شبکه مشخص‌شده را فعال می‌کند. کنترل‌کننده رابط شبکه (NIC) از ساعت خود برای برچسب‌گذاری زمانی دقیق ارسال‌ها و دریافت‌های واقعی استفاده می‌کند که از تاخیرهای پردازش و صف‌بندی در هسته، درایور شبکه و سخت‌افزار جلوگیری می‌کند. این کار می‌تواند دقت برچسب‌های زمانی و انحراف (offset) اندازه‌گیری‌شده را که برای همگام‌سازی ساعت سیستم استفاده می‌شود، به میزان قابل توجهی بهبود بخشد. برای دستیابی به بهترین نتایج، هر دو سمت دریافت‌کننده و ارسال‌کننده بسته‌های NTP (یعنی سرور و کلاینت، یا دو همتا) باید از HW timestamping استفاده کنند. اگر سرور یا همتا از حالت interleaved پشتیبانی می‌کند، باید با گزینه xleave در دستورالعمل server یا peer فعال شود.

این دستورالعمل در Linux 3.19 و جدیدتر پشتیبانی می‌شود. کارت شبکه (NIC) باید از HW timestamping پشتیبانی کند، که می‌توان آن را با دستور ethtool -T بررسی کرد. فهرست قابلیت‌ها باید شامل hardware-raw-clock، hardware-transmit و hardware-receive باشد. پالایه دریافت all یا ntp برای برچسب‌گذاری زمانی بسته‌های دریافتی NTP ضروری است. برچسب‌گذاری زمانی بسته‌های دریافت‌شده روی رابط‌های bridged و bonded در Linux 4.13 و جدیدتر پشتیبانی می‌شود. اگر HW timestamping برای بسته‌های دریافتی کار نکند، chronyd در عوض از برچسب‌های زمانی دریافت هسته استفاده خواهد کرد. برچسب‌گذاری زمانی سخت‌افزاری فقط-ارسال همچنان می‌تواند برای بهبود پایداری همگام‌سازی مفید باشد.

برنامه chronyd ساعت NIC را همگام‌سازی نمی‌کند. فرض می‌کند که ساعت به‌صورت آزاد کار می‌کند. چندین نمونه از chronyd می‌توانند از یک رابط با HW timestamping فعال استفاده کنند. برنامه‌هایی که به HW timestamping با ساعت همگام‌شده نیاز دارند (مانند دیمن PTP) باید از یک ساعت مجازی که روی ساعت فیزیکی اجرا می‌شود و با نوشتن در /sys/class/ptp/ptpX/n_vclocks ایجاد شده است، استفاده کنند. این ویژگی در Linux 5.14 و جدیدتر در دسترس است.

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

منبع برچسب‌های زمانی (یعنی سخت‌افزار، هسته یا دیمن) در سمت کلاینت در پرونده measurements.log (در صورت فعال بودن توسط دستورالعمل log) و گزارش ntpdata نشان داده می‌شود. در سمت سرور، تعداد برچسب‌های زمانی ارائه‌شده از هر منبع در گزارش serverstats ارائه می‌شود.

این دستورالعمل می‌تواند چندین بار برای فعال‌سازی HW timestamping روی چندین رابط استفاده شود. اگر رابط مشخص‌شده * باشد، chronyd تلاش خواهد کرد تا HW timestamping را روی تمام رابط‌های موجود فعال کند.

دستورالعمل hwtimestamp دارای گزینه‌های زیر است:

minpoll poll

این گزینه حداقل فاصله بین خواندن‌های ساعت NIC را مشخص می‌کند. این مقدار به صورت توانی از ۲ تعریف می‌شود. باید متناظر با حداقل بازه نظرسنجی همه منابع NTP و حداقل بازه نظرسنجی مورد انتظار کلاینت‌های NTP باشد. مقدار پیش‌فرض 0 (۱ ثانیه)، حداقل مقدار -6 (۱/۶۴ ثانیه) و حداکثر مقدار 20 (حدود ۱۲ روز) است.

maxpoll poll

این گزینه حداکثر فاصله بین خواندن‌های ساعت NIC را به صورت توانی از ۲ مشخص می‌کند. مقدار پیش‌فرض minpoll + 1 است، یعنی با مقدار پیش‌فرض 0 برای minpoll برابر با 1 (۲ ثانیه) خواهد بود. مقادیر حداقل و حداکثر مشابه گزینه minpoll هستند.

minsamples samples

این گزینه حداقل تعداد خواندن‌های نگه‌داری‌شده برای ردیابی ساعت NIC را مشخص می‌کند. مقدار پیش‌فرض 2 است.

maxsamples samples

این گزینه حداکثر تعداد خواندن‌های نگه‌داری‌شده برای ردیابی ساعت NIC را مشخص می‌کند. مقدار پیش‌فرض 16 است.

precision precision

این گزینه دقت فرض‌شده خواندن ساعت NIC را مشخص می‌کند. مقدار پیش‌فرض 100e-9 (۱۰۰ نانوثانیه) است.

txcomp compensation

این گزینه اختلاف بر حسب ثانیه بین زمان واقعی ارسال در لایه فیزیکی و برچسب زمانی ارسال گزارش‌شده را مشخص می‌کند. این مقدار به برچسب‌های زمانی ارسال دریافت‌شده از NIC اضافه خواهد شد. مقدار پیش‌فرض 0 است.

rxcomp compensation

این گزینه اختلاف بر حسب ثانیه بین برچسب زمانی دریافت گزارش‌شده و زمان واقعی دریافت در لایه فیزیکی را مشخص می‌کند. این مقدار از برچسب‌های زمانی دریافت به‌دست‌آمده از NIC کم خواهد شد. مقدار پیش‌فرض 0 است.

nocrossts

برخی سخت‌افزارها می‌توانند ساعت NIC را با ساعت سیستم به طور دقیق برچسب‌گذاری متقاطع (cross-timestamp) کنند. این گزینه استفاده از برچسب‌گذاری متقاطع را غیرفعال می‌کند.

rxfilter filter

این گزینه پالایه برچسب‌گذاری زمانی دریافت را انتخاب می‌کند. مقدار filter می‌تواند یکی از موارد زیر باشد:

all

برچسب‌گذاری زمانی همه بسته‌های دریافتی را فعال می‌کند.

ntp

برچسب‌گذاری زمانی بسته‌های NTP دریافتی را فعال می‌کند.

ptp

برچسب‌گذاری زمانی بسته‌های PTP دریافتی را فعال می‌کند.

none

برچسب‌گذاری زمانی بسته‌های دریافتی را غیرفعال می‌کند.
به‌طور پیش‌فرض، خاص‌ترین فیلتر برای برچسب‌گذاری زمانی بسته‌های NTP که توسط کارت شبکه (NIC) پشتیبانی می‌شود، انتخاب می‌گردد. برخی از NICها تنها می‌توانند بسته‌های PTP را برچسب‌گذاری زمانی کنند. به‌طور پیش‌فرض، آن‌ها با فیلتر none پیکربندی می‌شوند و انتظار می‌رود فقط برای بسته‌های ارسالی برچسب‌های زمانی سخت‌افزاری ارائه دهند. برچسب‌گذاری زمانی بسته‌های PTP با فعال بودن NTP-over-PTP توسط دستورالعمل ptpport یا زمانی که برنامه دیگری بسته‌های PTP را روی رابط دریافت می‌کند، مفید است. اجبار برچسب‌گذاری زمانی تمام بسته‌ها با فیلتر all می‌تواند زمانی مفید باشد که NIC از هر دو فیلتر all و ntp پشتیبانی کند و قرار باشد هم بسته‌های NTP و PTP، یا بسته‌های NTP روی یک درگاه UDP متفاوت را برچسب‌گذاری زمانی کند.

مثال‌هایی از این دستورالعمل عبارتند از:

hwtimestamp eth0
hwtimestamp eth1 txcomp 300e-9 rxcomp 645e-9
hwtimestamp *

hwtstimeout timeout

اگر برچسب‌گذاری زمانی سخت‌افزاری با یک سرور NTP نزدیک استفاده شود، یا NIC یا گرداننده (درایور) آن در ارائه برچسب زمانی ارسال درخواست‌های NTP کند باشد، ممکن است پاسخ از سرور قبل از برچسب زمانی ارسال درخواست دریافت شود. برای جلوگیری از محاسبه آفست با یک برچسب زمانی ارسال با دقت کمتر، chronyd می‌تواند پاسخ را برای پردازش بعدی ذخیره کرده و منتظر برچسب زمانی ارسال سخت‌افزاری بماند. هیچ تضمینی برای ارائه برچسب زمانی وجود ندارد (NICها معمولاً نرخ محدودی برای برچسب‌گذاری زمانی ارسال دارند). این دستورالعمل پیکربندی می‌کند که chronyd پس از دریافت یک پاسخ معتبر از سرور چه مدت باید منتظر برچسب زمانی بماند. اگر در حین انتظار برای برچسب زمانی، پاسخ معتبر دومی از سرور دریافت شود، هر دو بلافاصله پردازش خواهند شد.

مقدار پیش‌فرض 0.001 ثانیه است که باید برای بیشتر سخت‌افزارها کافی باشد. اگر مرتباً برچسب‌های زمانی ارسال هسته را در پرونده measurements.log یا گزارش ntpdata مشاهده می‌کنید، و این یک سرور نیست که نرخ بالایی از درخواست‌ها را در حالت interleaved روی همان رابط پردازش می‌کند (که با برچسب‌گذاری زمانی درخواست‌های خود سرور رقابت می‌کند)، افزایش مهلت زمانی به 0.01 یا احتمالاً بیشتر ممکن است کمک کند. توجه داشته باشید که حداکثر مهلت زمانی توسط بازه نظرسنجی NTP محدود می‌شود.

keyfile file

این دستورالعمل برای تعیین مکان پرونده حاوی کلیدهای متقارن استفاده می‌شود؛ کلیدهایی که بین سرورها و کارخواه‌های NTP یا همتایان به اشتراک گذاشته می‌شوند تا بسته‌های NTP را با یک کد اصالت‌سنجی پیام (MAC) با استفاده از یک تابع درهم‌سازی رمزنگاری یا سایفر احراز هویت کنند.

قالب این دستورالعمل در مثال زیر نشان داده شده است:

keyfile /etc/chrony.keys

آرگومان صرفاً نام پرونده شامل جفت‌های شناسه-کلید است. قالب پرونده در زیر نشان داده شده است:

10 tulip
11 hyacinth
20 MD5 ASCII:crocus
25 SHA1 HEX:933F62BE1D604E68A81B557F18CFA200483F5B70
30 AES128 HEX:7EA62AE64D190114D46D5A082F948EC1
31 AES256 HEX:37DDCBC67BB902BCB8E995977FAB4D2B5642F5B32EBCEEE421921D97E5CBFE39
 ...

هر خط شامل یک شناسه، نوع اختیاری و کلید است.

شناسه می‌تواند هر عدد صحیح مثبتی در محدوده ۱ تا 2^32-1 باشد.

نوع، نام یک تابع درهم‌سازی رمزنگاری یا سایفر است که برای تولید و تأیید MAC استفاده می‌شود. نوع پیش‌فرض MD5 است که همیشه پشتیبانی می‌شود. اگر chronyd با پشتیبانی فعال برای درهم‌سازی با استفاده از یک کتابخانه رمزنگاری (Nettle، GnuTLS، NSS یا LibTomCrypt) کامپایل شده باشد، توابع زیر در دسترس هستند: MD5، SHA1، SHA256، SHA384، SHA512. بسته به اینکه chronyd از کدام کتابخانه و نسخه استفاده می‌کند، ممکن است برخی از توابع درهم‌سازی و سایفرهای زیر نیز در دسترس باشند: SHA3-224، SHA3-256، SHA3-384، SHA3-512، TIGER، WHIRLPOOL، AES128، AES256.

کلید می‌تواند به صورت رشته‌ای از نویسه‌های ASCII بدون فاصله سفید با پیشوند اختیاری ASCII: یا به عنوان یک عدد هگزادسیمال با پیشوند HEX: مشخص شود. حداکثر طول خط 2047 نویسه است. اگر نوع یک سایفر باشد، طول کلید باید با سایفر مطابقت داشته باشد (یعنی ۱۲۸ بیت برای AES128 و ۲۵۶ بیت برای AES256).

توصیه می‌شود از کلیدهای تصادفی تولید شده در قالب هگزادسیمال استفاده کنید که حداقل ۱۲۸ بیت طول دارند (یعنی حداقل ۳۲ نویسه بعد از پیشوند HEX: دارند). اگر منبعی در پرونده پیکربندی با کلیدی کوتاه‌تر از ۸۰ بیت مشخص شده باشد، chronyd در هنگام شروع هشداری را در syslog ثبت خواهد کرد.

انواع کلید توصیه شده سایفرهای AES و توابع درهم‌سازی SHA3 هستند. از MD5 باید اجتناب شود مگر اینکه نوع دیگری در سرور و کارخواه یا همتایان پشتیبانی نشود. یک نقطه ضعف عمده MD5 برای MAC در NTP، حمله گسترش طول است که در آن یک مهاجم مرد میانی می‌تواند فیلدهای افزونه دلخواه را به پیام NTP اضافه کند و MAC را به‌روز کند تا تأیید پیام گسترش‌یافته با موفقیت انجام شود. گزینه extfield (فعال‌سازی پردازش فیلد افزونه مشخص‌شده) نباید برای منابع NTP که با کلید MD5 احراز هویت شده‌اند استفاده شود.

دستور keygen از chronyc می‌تواند برای تولید کلیدهای تصادفی برای پرونده کلید استفاده شود. به‌طور پیش‌فرض، کلیدهای ۱۶۰ بیتی MD5 یا SHA1 تولید می‌کند.

به دلایل امنیتی، پرونده فقط باید توسط root و کاربری که chronyd معمولاً تحت آن اجرا می‌شود قابل خواندن باشد (تا به chronyd اجازه دهد هنگام صدور دستور rekey توسط chronyc، پرونده را دوباره بخواند).

lock_all

دستورالعمل lock_all فرایند chronyd را در RAM قفل می‌کند تا هرگز به حافظه مجازی منتقل (page out) نشود. این می‌تواند منجر به تأخیر کمتر و پایدارتر شود. این دستورالعمل در Linux، FreeBSD، NetBSD و illumos پشتیبانی می‌شود.

pidfile file

مگر اینکه chronyd با گزینه -Q راه‌اندازی شود، شناسه فرایند (PID) خود را در یک پرونده می‌نویسد و این پرونده را هنگام راه‌اندازی بررسی می‌کند تا ببیند آیا ممکن است chronyd دیگری از قبل روی سیستم در حال اجرا باشد یا خیر. به‌طور پیش‌فرض، پرونده مورد استفاده /run/chrony/chronyd.pid است. دستورالعمل pidfile امکان تغییر نام را فراهم می‌کند، به عنوان مثال:
pidfile /run/chronyd.pid

تنظیم این دستورالعمل روی / نوشتن و بررسی پرونده PID را غیرفعال می‌کند.

ptpport port

دستورالعمل ptpport به chronyd امکان می‌دهد پیام‌های NTP گنجانده‌شده در پیام‌های رویداد PTP را ارسال و دریافت کند (NTP-over-PTP) تا برچسب‌گذاری زمانی سخت‌افزاری روی NICهایی که نمی‌توانند بسته‌های NTP را برچسب‌گذاری کنند اما می‌توانند بسته‌های یونیکست PTP را برچسب‌گذاری کنند فعال شود، و همچنین از اصلاحات ارائه‌شده توسط ساعت‌های شفاف تک‌مرحله‌ای سرتاسری PTP در سوئیچ‌ها و مسیریاب‌های شبکه استفاده کند. درگاهی که توسط NICها و ساعت‌های شفاف PTP شناسایی می‌شود 319 (درگاه رویداد PTP) است. مقدار پیش‌فرض 0 (غیرفعال) است.

پشتیبانی از NTP-over-PTP آزمایشی است. پروتکل و پیکربندی ممکن است در آینده تغییر کند. این ویژگی فقط باید در شبکه‌های محلی استفاده شود.

درگاه PTP باز خواهد بود حتی اگر chronyd برای کار به عنوان سرور یا کارخواه پیکربندی نشده باشد. این دستورالعمل پروتکل پیش‌فرض منابع NTP مشخص‌شده را تغییر نمی‌دهد. هر منبع NTP که باید از NTP-over-PTP استفاده کند باید با گزینه port تنظیم‌شده روی درگاه PTP مشخص شود. برای فعال‌سازی واقعی برچسب‌گذاری زمانی سخت‌افزاری روی NICهایی که فقط می‌توانند بسته‌های PTP را برچسب‌گذاری کنند، گزینه rxfilter از دستورالعمل hwtimestamp باید روی ptp تنظیم شود. فیلد افزونه F324 باید فعال باشد تا از اصلاحات ارائه‌شده توسط ساعت‌های شفاف PTP استفاده شود.

یک مثال از پیکربندی کارخواه:

server ntp1.example.net minpoll 0 maxpoll 0 xleave port 319 extfield F324
hwtimestamp * rxfilter ptp
ptpport 319

ptpdomain domain

دستورالعمل ptpdomain شماره دامنه PTP پیام‌های NTP-over-PTP ارسالی و پذیرفته‌شده را تنظیم می‌کند. پیام‌های دامنه‌های دیگر نادیده گرفته می‌شوند. پیش‌فرض 123، حداقل 0 و حداکثر 255 است.

sched_priority priority

در Linux، FreeBSD، NetBSD و illumos، دستورالعمل sched_priority زمان‌بند بلادرنگ SCHED_FIFO را با اولویت تعیین‌شده انتخاب می‌کند (که باید بین ۰ و ۱۰۰ باشد). در macOS، این گزینه باید مقداری برابر با ۰ (پیش‌فرض) برای غیرفعال‌سازی سیاست محدودیت زمانی ریسه یا ۱ برای فعال‌سازی آن داشته باشد.

در سیستم‌هایی به جز macOS، این دستورالعمل از فراخوانی سیستمی pthread_setschedparam() برای هدایت هسته به استفاده از سیاست زمان‌بندی بلادرنگ خروج به ترتیب ورود (SCHED_FIFO) برای chronyd با اولویت مشخص‌شده استفاده می‌کند. این به این معنی است که هر زمان chronyd آماده اجرا باشد، اجرا می‌شود و اجرای سایر پردازه‌ها را قطع می‌کند مگر اینکه پردازه‌ای بلادرنگ با اولویت بالاتر باشد. این نباید روی کارایی تأثیر منفی بگذارد زیرا نیازمندی‌های منبع chronyd ناچیز است، اما باید منجر به تاخیر کمتر و پایدارتر شود چون chronyd نیازی به منتظر ماندن برای نوبت زمان‌بندی جهت اجرا نخواهد داشت. نباید از این دستور استفاده کنید مگر اینکه واقعاً به آن نیاز داشته باشید. صفحه راهنمای pthread_setschedparam(3) جزئیات بیشتری دارد.

در macOS، این دستورالعمل از فراخوانی هسته thread_policy_set() برای تعیین زمان‌بندی بلادرنگ استفاده می‌کند. همان‌طور که در بالا اشاره شد، نباید از این دستورالعمل استفاده کنید مگر اینکه واقعاً به آن نیاز داشته باشید.

user user

دستورالعمل user نام کاربر سیستمی را تنظیم می‌کند که chronyd پس از شروع برای لغو اختیارات root به آن تغییر کاربری می‌دهد.

در Linux، chronyd باید با پشتیبانی از کتابخانه libcap کامپایل شده باشد. در macOS، FreeBSD، NetBSD و illumos، دیمن chronyd به دو فرایند منشعب (fork) می‌شود. فرایند فرزند اختیارات root را حفظ می‌کند، اما فقط می‌تواند دامنه بسیار محدودی از فراخوانی‌های سیستمی ممتاز را به نمایندگی از والد انجام دهد.

مقدار پیش‌فرض کامپایل‌شده chrony است.

این بخش نحوه پیکربندی chronyd را برای رایانه‌هایی که به‌طور دائم یا در بیشتر مواقع به اینترنت (یا به هر شبکه‌ای حاوی سرورهای واقعی NTP که در نهایت زمان خود را از یک ساعت مرجع دریافت می‌کنند) متصل هستند، نشان می‌دهد.

برای کار در این حالت، باید نام سرورهای NTP مورد نظر برای استفاده را بدانید. ممکن است بتوانید نام سرورهای مناسب را از طریق یکی از روش‌های زیر بیابید:

•سازمان شما ممکن است سرورهایی را روی شبکه خود اجرا کند. برای آگاهی با مدیر سیستم خود تماس بگیرید.
•احتمالاً ISP شما یک یا چند سرور NTP در دسترس برای مشتریان خود دارد.
•در جایی در وب‌سایت NTP فهرستی از سرورهای عمومی stratum 1 و stratum 2 وجود دارد. باید یک یا چند سرور که به شما نزدیک‌تر هستند را پیدا کنید. بررسی کنید که سیاست دسترسی آن‌ها اجازه استفاده از امکاناتشان را به شما می‌دهد.
•استفاده از سرورهای عمومی از پروژه pool.ntp.org https://www.pool.ntp.org

با فرض اینکه سرورهای NTP شما ntp1.example.net، ntp2.example.net و ntp3.example.net نامیده می‌شوند، پرونده chrony.conf شما در حداقل حالت می‌تواند شامل موارد زیر باشد:

server ntp1.example.net
server ntp2.example.net
server ntp3.example.net

با این حال، احتمالاً می‌خواهید برخی دستورالعمل‌های دیگر را نیز بگنجانید. دستورالعمل‌های driftfile، makestep و rtcsync ممکن است بسیار مفید باشند. همچنین گزینه iburst از دستورالعمل server برای تسریع همگام‌سازی اولیه کاربردی است. کوچک‌ترین پرونده پیکربندی مفید چیزی شبیه به این خواهد بود:

server ntp1.example.net iburst
server ntp2.example.net iburst
server ntp3.example.net iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync

هنگام استفاده از یک استخر (pool) از سرورهای NTP (یک نام برای چندین سرور استفاده می‌شود که ممکن است در طول زمان تغییر کنند)، بهتر است به جای چندین دستورالعمل server آن‌ها را با دستورالعمل pool مشخص کنید. پرونده پیکربندی در این حالت می‌تواند به این شکل باشد:

pool pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync

اگر سرورها (یا pool) از سازوکار احراز هویت امنیت زمان شبکه (NTS) پشتیبانی کنند و chronyd با پشتیبانی از NTS کامپایل شده باشد، گزینه nts همگام‌سازی امن با سرورها را فعال می‌کند. پرونده پیکربندی می‌تواند به این شکل باشد:

server ntp1.example.net iburst nts
server ntp2.example.net iburst nts
server ntp3.example.net iburst nts
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync

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

مجدداً، با فرض اینکه سرورهای NTP شما ntp1.example.net، ntp2.example.net و ntp3.example.net نام دارند، پرونده chrony.conf شما اکنون شامل موارد زیر خواهد بود:

server ntp1.example.net offline
server ntp2.example.net offline
server ntp3.example.net offline
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync

کلیدواژه offline نشان می‌دهد که سرورها در وضعیت برون‌خط شروع به کار می‌کنند و تا زمانی که chronyd اعلانی مبنی بر برقراری پیوند اینترنت از chronyc دریافت نکند نباید با آن‌ها تماسی برقرار شود. برای مشخص کردن زمان شروع و پایان نمونه‌برداری از سرورها به chronyd، باید از دستورهای online و offline در chronyc استفاده شود.

برای ارائه مثالی از کاربرد آن‌ها، با فرض اینکه pppd برنامه‌ای است که برای اتصال به اینترنت استفاده می‌شود و chronyc در مسیر /usr/bin/chronyc نصب شده است، اسکریپت /etc/ppp/ip-up شامل موارد زیر خواهد بود:

/usr/bin/chronyc online

و اسکریپت /etc/ppp/ip-down شامل این خواهد بود:

/usr/bin/chronyc offline

اکنون نظرسنجی سرورها توسط chronyd تنها زمانی انجام می‌شود که دستگاه واقعاً به اینترنت متصل باشد.

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

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

دستورالعمل local حالت مرجع محلی را فعال می‌کند که به chronyd امکان می‌دهد حتی زمانی که همگام نیست، همگام به نظر برسد.

مقدار نرخ در پرونده رانش سرور باید روی میانگین نرخی تنظیم شود که سرور در آن زمان اضافه یا کم می‌کند. chronyd شامل پشتیبانی از این کار در قالب دستورالعمل manual و فرمان settime در برنامه chronyc است.

اگر سرور راه‌اندازی مجدد شود، chronyd می‌تواند نرخ رانش را دوباره از پرونده رانش بخواند. با این حال، سرور برآورد دقیقی از زمان فعلی ندارد. برای رفع این مشکل، سیستم می‌تواند طوری پیکربندی شود که سرور در ابتدا خود را بر اساس «رأی اکثریت» زمان‌های کلاینت‌های منتخب تنظیم کند؛ این کار به کلاینت‌ها امکان می‌دهد هنگام راه‌اندازی مجدد سرور، آن را سرپا نگه دارند.

دستورالعمل smoothtime زمانی مفید است که هنگام تنظیم زمان محلی با فرمان settime، ساعت‌های کلاینت‌ها باید نزدیک به هم بمانند. فرایند هموارسازی باید زمانی که زمان محلی آماده ارائه شد، با فرمان smoothtime activate فعال شود. پس از آن نقطه، هرگونه تنظیمی هموار خواهد شد.

یک پرونده پیکربندی معمولی برای سرور (به نام ntp.local) ممکن است به این صورت باشد (با فرض اینکه کلاینت‌ها و سرور در زیرشبکه 192.168.165.x هستند):

initstepslew 1 client1 client3 client6
driftfile /var/lib/chrony/drift
local stratum 8
manual
allow 192.168.165.0/24
smoothtime 400 0.01
rtcsync

برای کلاینت‌هایی که باید سرور را هنگام راه‌اندازی مجدد دوباره همگام کنند، پرونده پیکربندی ممکن است به این صورت باشد:

server ntp.local iburst
driftfile /var/lib/chrony/drift
allow 192.168.165.0/24
makestep 1.0 3
rtcsync

بقیه کلاینت‌ها نیز یکسان خواهند بود، با این تفاوت که نیازی به دستورالعمل allow نیست.

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

یک پرونده پیکربندی برای اولین سرور ممکن است به این صورت باشد (با فرض وجود سه سرور به نام‌های ntp1.local، ntp2.local و ntp3.local):

initstepslew 1 ntp2.local ntp3.local
server ntp2.local
server ntp3.local
driftfile /var/lib/chrony/drift
local stratum 8 orphan
manual
allow 192.168.165.0/24
rtcsync

سایر سرورها نیز مشابه خواهند بود، با این تفاوت که نام‌های میزبان در دستورالعمل‌های initstepslew و server برای مشخص کردن سرورهای دیگر تغییر داده می‌شوند. کلاینت‌های آن‌ها ممکن است طوری پیکربندی شوند که از هر سه سرور نظرسنجی کنند.

این بخش رایانه‌ای را بررسی می‌کند که اتصالات گاه‌به‌گاه به اینترنت دارد و بین «نشست‌ها» خاموش می‌شود. در این حالت، chronyd برای حفظ زمان بین دوره‌های روشن بودن، به RTC رایانه متکی است. فرض بر این است که لینوکس منحصراً روی رایانه اجرا می‌شود. سیستم‌های دوگانه‌راه‌انداز ممکن است کار کنند؛ این بستگی دارد که سیستم دیگر با RTC چه می‌کند (اگر اصلاً کاری انجام دهد). در هسته‌های 2.6 و جدیدتر، اگر مادربرد شما دارای HPET باشد، باید گزینه HPET_EMULATE_RTC را در پیکربندی هسته خود فعال کنید. در غیر این صورت، chronyd قادر به تعامل با دستگاه RTC نخواهد بود و از استفاده از آن صرف‌نظر می‌کند.

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

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

در حالی که رایانه در حال اجراست، chronyd اندازه‌گیری‌هایی از RTC (از طریق رابط /dev/rtc که باید در هسته کامپایل شده باشد) انجام می‌دهد. برآوردی از خطای RTC در یک ثانیه خاص RTC، و نرخی که RTC نسبت به زمان واقعی، زمان اضافه یا کم می‌کند، انجام می‌شود.

هنگامی که رایانه خاموش می‌شود، تاریخچه اندازه‌گیری‌ها برای همه سرورهای NTP در پرونده‌ها ذخیره می‌شود و اطلاعات ردیابی RTC نیز در یک پرونده ذخیره می‌گردد (در صورتی که دستورالعمل rtcfile مشخص شده باشد). این اطلاعات همچنین در صورت صدور فرمان‌های dump و writertc از طریق chronyc ذخیره می‌شوند.

هنگامی که رایانه مجدداً راه‌اندازی می‌شود، chronyd زمان فعلی RTC و اطلاعات RTC ذخیره‌شده در آخرین خاموشی را می‌خواند. از این اطلاعات برای تنظیم ساعت سیستم بر روی بهترین برآورد از زمانی که اگر پیوسته کار می‌کرد اکنون می‌داشت، استفاده می‌شود. سپس تاریخچه اندازه‌گیری‌های سرورها دوباره بارگیری می‌شود.

دفعه بعد که رایانه آنلاین شود، اندازه‌گیری‌های نشست‌های قبلی می‌توانند به فرایند برازش خط کمک کنند، که برآورد بسیار بهتری از نرخ افزایش یا کاهش رایانه ارائه می‌دهد.

یک مشکل در ذخیره اندازه‌گیری‌ها و داده‌های RTC هنگام خاموش شدن دستگاه این است که در صورت قطع برق چه اتفاقی می‌افتد؛ جدیدترین داده‌ها ذخیره نخواهند شد. اگرچه chronyd به اندازه کافی برای مقابله با این موضوع پایدار است، اما ممکن است مقداری کارایی از دست برود. (خطر اصلی زمانی ایجاد می‌شود که RTC در طول نشست با فرمان trimrtc در chronyc تغییر کرده باشد. به همین دلیل، trimrtc اطمینان حاصل می‌کند که یک پرونده معنادار RTC پس از تکمیل تغییر ذخیره شود).

ساده‌ترین راه محافظت در برابر قطع برق این است که فرمان‌های dump و writertc در همان جایی قرار داده شوند که فرمان offline برای آفلاین کردن chronyd صادر می‌شود؛ از آنجا که chronyd بین نشست‌های آنلاین به‌صورت آزاد کار می‌کند، هیچ پارامتری بین آفلاین شدن از اینترنت و هرگونه قطع برق به‌طور چشمگیری تغییر نخواهد کرد.

نکته نهایی مربوط به رایانه‌هایی است که برای مدت‌های طولانی روشن رها می‌شوند و در آن‌ها مطلوب است که دیسک سخت در صورت عدم استفاده متوقف شود (مثلاً زمانی که ۱۵ دقیقه به آن دسترسی وجود نداشته باشد). chronyd طوری طراحی شده است که از چنین عملکردی پشتیبانی کند؛ این دلیل آن است که پارامترهای ردیابی RTC پس از هر به‌روزرسانی در دیسک ذخیره نمی‌شوند، بلکه فقط زمانی که کاربر درخواست چنین نوشتنی را بدهد، یا در طول فرایند خاموش شدن ذخیره می‌شوند. تنها امکان دیگری که نوشتن‌های دوره‌ای روی دیسک ایجاد می‌کند، امکان log rtc در پرونده پیکربندی است؛ اگر می‌خواهید دیسک شما متوقف شود نباید از این گزینه استفاده شود.

برای نشان دادن نحوه پیکربندی یک رایانه برای این حالت، پرونده‌های پیکربندی نمونه نشان داده شده‌اند.

برای پرونده chrony.conf، می‌توان از موارد زیر به‌عنوان مثال استفاده کرد.

server ntp1.example.net maxdelay 0.4 offline
server ntp2.example.net maxdelay 0.4 offline
server ntp3.example.net maxdelay 0.4 offline
logdir /var/log/chrony
log statistics measurements tracking
driftfile /var/lib/chrony/drift
makestep 1.0 3
maxupdateskew 100.0
dumpdir /var/lib/chrony
rtcfile /var/lib/chrony/rtc

pppd برای اتصال به اینترنت استفاده می‌شود. این ابزار به هنگام آنلاین یا آفلاین شدن پیوند، دو اسکریپت /etc/ppp/ip-up و /etc/ppp/ip-down را اجرا می‌کند.

بخش مرتبط پرونده /etc/ppp/ip-up:

/usr/bin/chronyc online

و بخش مرتبط اسکریپت /etc/ppp/ip-down:

/usr/bin/chronyc -m offline dump writertc

chronyd در طول فرایند بوت با گزینه‌های -r و -s آغاز می‌شود. بسته به دستورالعمل‌های موجود در پرونده پیکربندی chronyd، ممکن است نیاز باشد پیش از هر نرم‌افزاری که به عدم جهش یا عقب نرفتن ساعت سیستم وابسته است، راه‌اندازی شود.

برای خاموش کردن سیستم، chronyd باید چند ثانیه پیش از SIGKILL نهایی، سیگنال SIGTERM را دریافت کند؛ سیگنال SIGTERM باعث ذخیره تاریخچه اندازه‌گیری‌ها و اطلاعات RTC می‌شود.

chronyd می‌تواند برای کارکرد به عنوان سرور عمومی NTP پیکربندی شود، به عنوان مثال برای پیوستن به پروژه pool.ntp.org https://www.pool.ntp.org/en/join.html پیکربندی مشابه کلاینت NTP با اتصال دائمی است، با این تفاوت که باید اجازه دسترسی کلاینت از تمام نشانی‌ها را بدهد. توصیه می‌شود دست‌کم چهار سرور مناسب پیدا شود (مثلاً از pool یا صفحه اصلی NTP). اگر سرور ساعت مرجع سخت‌افزاری دارد (مانند گیرنده GPS)، می‌تواند با دستورالعمل refclock مشخص شود.

میزان حافظه مصرفی برای ثبت گزارش دسترسی‌های کلاینت می‌تواند افزایش یابد تا کلاینت‌ها حتی در صورت وجود تعداد زیادی کلاینت روی سرور، بتوانند از حالت interleaved استفاده کنند و در صورت فعال بودن با دستورالعمل ratelimit، محدودسازی نرخ دسترسی بهتر پشتیبانی شود. پایگاه داده منطقه زمانی سیستم، در صورتی که به‌روز نگه داشته شود و شامل منطقه زمانی right/UTC باشد، می‌تواند به عنوان منبعی قابل اعتماد برای تعیین زمان اعمال ثانیه کبیسه به UTC استفاده شود. گزینه -r به همراه دستورالعمل dumpdir، زمان ناتوانی chronyd در ارائه زمان به کلاینت‌ها هنگام نیاز به راه‌اندازی مجدد (مانند پس از ارتقا به نسخه جدیدتر یا تغییر در پیکربندی) را کوتاه‌تر می‌کند.

پرونده پیکربندی می‌تواند به این شکل باشد:

server ntp1.example.net iburst
server ntp2.example.net iburst
server ntp3.example.net iburst
server ntp4.example.net iburst
makestep 1.0 3
rtcsync
allow
clientloglimit 100000000
leapsectz right/UTC
driftfile /var/lib/chrony/drift
dumpdir /var/run/chrony

chronyc(1), chronyd(8)

برای دستورالعمل‌های مربوط به گزارش اشکالات، لطفاً ببینید: https://chrony-project.org.

chrony توسط Richard Curnow، Miroslav Lichvar و دیگران نوشته شده است.

2026-04-30 chrony 4.8