nsd-control(8) nsd 4.15.0 nsd-control(8)

nsd-control - ابزار کنترل از راه دور کارساز NSD

nsd-control [-c cfgfile] [-s server] command

دستور nsd-control مدیریت از راه دور را بر روی کارساز سامانه نام دامنه (DNS) nsd(8) انجام می‌دهد. این ابزار فایل پیکربندی را می‌خواند، از طریق SSL با کارساز nsd ارتباط برقرار می‌کند، دستور را ارسال کرده و نتیجه را نمایش می‌دهد. دستوراتی که نیازمند بازخوانی (reload) هستند در صف قرار می‌گیرند و نتیجه نشان‌دهنده پذیرفته شدن دستور خواهد بود.

گزینه‌های موجود عبارتند از:

نمایش نسخه و راهنمای گزینه‌های خط فرمان.
فایل پیکربندی حاوی تنظیمات برای خواندن. در صورت مشخص نشدن، فایل پیکربندی پیش‌فرض //etc/nsd/nsd.conf استفاده می‌شود.
نشانی IPv4 یا IPv6 کارساز جهت برقراری ارتباط. در صورت مشخص نشدن، نشانی از فایل پیکربندی خوانده می‌شود.

چندین دستور وجود دارد که کارساز آن‌ها را درک و پشتیبانی می‌کند.

راه‌اندازی کارساز. صرفاً nsd(8) را اجرا (exec) می‌کند. فایل اجرایی nsd در متغیر محیطی PATH جستجو نمی‌شود، بلکه در مکان پیش‌فرض نسبت به پیشوند نصب تعیین‌شده در زمان کامپایل جستجو می‌گردد. مکان فایل اجرایی را می‌توان با تنظیم NSD_PATH در متغیرهای محیطی لغو و جایگزین کرد. کارساز با فایل پیکربندی مشخص‌شده توسط -c یا فایل پیکربندی پیش‌فرض راه‌اندازی می‌شود.
توقف کارساز. دیمن کارساز خارج می‌شود.
بارگذاری مجدد فایل‌های ناحیه (zonefile) و بازگشایی مجدد فایل گزارش (logfile). بدون آرگومان، فایل‌های ناحیه تغییر‌یافته را می‌خواند. با آرگومان، فایل ناحیه را برای ناحیه داده‌شده می‌خواند و آن را بارگذاری می‌کند.
بارگذاری مجدد nsd.conf و اعمال تغییرات روی کلیدهای TSIG و الگوهای پیکربندی، و اعمال تغییرات مربوط به افزودن و حذف ناحیه‌هایی که در پیکربندی ذکر شده‌اند. تغییرات دیگر اعمال نمی‌شوند، مانند نشانی IP و پورت شنود و chroot، همچنین آمار اختصاصی هر ناحیه اعمال نمی‌شود. به‌روزرسانی الگوها به این معنی است که گزینه‌های پیکربندی برای ناحیه‌ها (request-xfr، zonefile، notify، ...) به‌روز می‌شوند. همچنین الگوهای جدید برای استفاده با دستور addzone در دسترس قرار می‌گیرند.
مشابه گزینه reconfig است.
بازگشایی مجدد فایل گزارش، برای چرخش گزارش‌ها (log rotate) که می‌خواهد فایل گزارش فعلی را جابه‌جا کرده و فایل گزارش جدیدی بسازد. فایل گزارش همچنین می‌تواند با دستور kill -HUP مجدداً باز شود (که تمامی فایل‌های ناحیه را نیز مجدداً بارگذاری می‌کند).
نمایش وضعیت کارساز. کد خروج 3 در صورتی که کارساز در حال اجرا نباشد (اتصال به پورت رد شود)، 1 هنگام بروز خطا، و 0 در صورت فعال و در حال اجرا بودن.
چاپ دنباله‌ای از خطوط به صورت name=value حاوی اطلاعات آماری؛ نیازمند کامپایل شدن NSD با فعال بودن این گزینه است.
مشابه stats است، اما شمارنده‌ها را صفر نمی‌کند.
افزودن یک ناحیه جدید به کارساز در حال اجرا. ناحیه به فایل zonelist بر روی دیسک اضافه می‌شود، بنابراین پس از راه‌اندازی مجدد باقی می‌ماند. نام الگو گزینه‌های ناحیه جدید را تعیین می‌کند. برای ناحیه‌های ثانویه، بلافاصله تلاش برای انتقال ناحیه (zone transfer) صورت می‌گیرد. برای ناحیه‌های دارای فایل ناحیه، تلاش می‌شود که فایل ناحیه خوانده شود.
حذف ناحیه از کارساز در حال اجرا. ناحیه از فایل zonelist روی دیسک، از فایل nsd.db و از حافظه حذف می‌شود. اگر فایل ناحیه داشته باشد، فایل باقی می‌ماند (اما ممکن است قدیمی باشد). ناحیه‌های پیکربندی‌شده درون خود nsd.conf را نمی‌توان از این طریق حذف کرد زیرا دیمن روی فایل nsd.conf نمی‌نویسد؛ برای این‌که بتوانید چنین ناحیه‌هایی را با دستور delzone حذف کنید باید آن‌ها را به فایل zonelist اضافه نمایید.
تغییر دادن یک ناحیه برای استفاده از الگوی مشخص‌شده جهت گزینه‌ها. ناحیه در یک عملیات حذف شده و دوباره اضافه می‌شود و بدین ترتیب تغییر می‌یابد تا از الگوی جدید برای گزینه‌های ناحیه استفاده کند. ناحیه‌های پیکربندی‌شده در nsd.conf را نمی‌توان به این صورت تغییر داد، بلکه باید nsd.conf (یا فایل گنجانده‌شده در nsd.conf) را ویرایش کرده و دستور reconfig را اجرا کنید.
افزودن ناحیه‌های خوانده‌شده از ورودی استاندارد (stdin) دستور nsd-control. ورودی خط به خط خوانده می‌شود، با فرمت «نام فاصله نام‌الگو» در هر خط. مناسب برای افزودن‌های دسته‌جمعی.
حذف ناحیه‌های خوانده‌شده از ورودی استاندارد (stdin) دستور nsd-control. ورودی شامل یک نام در هر خط است. مناسب برای حذف‌های دسته‌جمعی.
نوشتن فایل‌های ناحیه بر روی دیسک، یا نوشتن فایل ناحیه مشخص‌شده بر روی دیسک. ناحیه‌هایی که تغییر کرده‌اند (از طریق AXFR یا IXFR) نوشته می‌شوند، یا اگر فایل ناحیه هنوز ایجاد نشده باشد، ایجاد می‌گردد. بخش‌های مربوط به دایرکتوری در مسیر فایل ناحیه در صورت لزوم ایجاد می‌شوند. با مشخص کردن آرگومان، آن ناحیه در صورت تغییر نوشته می‌شود؛ بدون آرگومان، تمامی ناحیه‌های تغییریافته نوشته می‌شوند.
ارسال پیام‌های NOTIFY به کارسازهای ثانویه. پیام‌ها به نشانی‌های IP پیکربندی‌شده در فهرست‌های 'notify:' برای ناحیه‌های اصلی (primary) میزبانی‌شده روی این کارساز ارسال می‌شوند. معمولاً NSD به محض به‌روزرسانی شماره سریال ناحیه اصلی، بلافاصله پیام‌های NOTIFY را ارسال می‌کند. اگر ناحیه‌ای مشخص شود، اعلان‌ها فقط برای آن ناحیه ارسال می‌شوند. این کارسازهای ثانویه قرار است بعداً یک درخواست انتقال ناحیه (به این کارساز یا یک کارساز اصلی دیگر) آغاز کنند؛ این اجازه را می‌توان از طریق پیکربندی فهرست کنترل دسترسی 'provide-xfr:' صادر کرد. با دادن آرگومان، آن ناحیه پردازش می‌شود و بدون آرگومان، تمامی ناحیه‌ها پردازش می‌گردند.
تلاش برای به‌روزرسانی ناحیه‌های ثانویه میزبانی‌شده بر روی این کارساز از طریق برقراری ارتباط با کارسازهای اصلی. کارسازهای اصلی از طریق فهرست‌های 'request-xfr:' پیکربندی می‌شوند. اگر ناحیه‌ای مشخص شود، آن ناحیه به‌روزرسانی می‌شود. معمولاً NSD از کارسازهای اصلی یک NOTIFY دریافت می‌کند (که از طریق فهرست کنترل دسترسی 'allow-notify:' پیکربندی می‌شود) مبنی بر اینکه شماره سریال جدید ناحیه باید منتقل شود. برای ناحیه‌های بدون محتوا، ممکن است NSD به دلیل عدم پاسخگویی کارسازهای اصلی از درخواست مکرر صرف‌نظر کرده باشد (backoff)، اما این دستور زمان انتظار بازگشتی (backoff) را به مهلت اولیه بازنشانی می‌کند تا تلاش‌های مجدد مکرر انجام شود. با دادن آرگومان، آن ناحیه منتقل می‌شود و بدون آرگومان، تمامی ناحیه‌ها منتقل می‌گردند.
به‌روزرسانی اجباری ناحیه‌های ثانویه میزبانی‌شده بر روی این کارساز. حتی اگر کارساز اصلی همان شماره سریال ناحیه را میزبانی کند، یک AXFR کامل برای دریافت آن انجام می‌شود. اگر می‌خواهید از IXFR استفاده کنید و افزایش شماره سریال را بررسی نمایید، از دستور 'transfer' استفاده کنید. با دادن آرگومان، آن ناحیه منتقل می‌شود و بدون آرگومان، تمامی ناحیه‌ها منتقل می‌گردند.
چاپ وضعیت ناحیه، شماره‌های سریال و زمان دریافت آن‌ها. همچنین عملیات اطلاع‌رسانی notify (به کدام کارساز) و انتقال ناحیه (و از کدام کارساز اصلی) را در صورت وجود فعالیت در حال حاضر چاپ می‌کند. وضعیت ناحیه به این صورت چاپ می‌شود: 'primary' (ناحیه‌های اصلی)، 'ok' (ناحیه ثانویه به‌روز است)، 'expired' (ناحیه ثانویه منقضی شده است)، 'refreshing' (انتقال‌های ناحیه ثانویه فعال هستند). شماره‌های سریال چاپ‌شده عبارتند از: 'served-serial' (در حال حاضر فعال)، 'commit-serial' (در حال بارگذاری مجدد)، 'notified-serial' (پیام اعلان دریافت شده و مشغول دریافت داده‌ها است). شماره‌های سریال تنها در صورتی چاپ می‌شوند که در دسترس باشند. با دادن آرگومان، وضعیت آن ناحیه چاپ می‌شود و بدون آرگومان، وضعیت تمام ناحیه‌ها چاپ می‌گردد.
چاپ شناسه فرایند (PID) مربوط به فرایند کارساز. این برای آمار استفاده می‌شود (و فقط زمانی کار می‌کند که NSD با فعال بودن آمار کامپایل شده باشد). این pid برای ارسال سیگنال‌های یونیکس نیست؛ برای این کار از pid موجود در nsd.pid استفاده کنید که پایدار نیز هست.
تغییر سطح پرگویی (verbosity) ثبت گزارش‌ها.
چاپ کلید مخفی و الگوریتم برای کلید TSIG با آن نام، یا فهرست کردن تمامی کلیدهای TSIG به همراه نام، کلید مخفی و الگوریتم آن‌ها.
تغییر دادن کلید TSIG موجود با نام مشخص‌شده به کلید مخفی جدید. کلید مخفی یک رشته کدگذاری‌شده با base64 است. تغییرات فقط در حافظه اعمال می‌شوند و در راه‌اندازی مجدد بعدی از بین می‌روند؛ برای تغییرات دائمی، فایل nsd.conf یا فایل گنجانده‌شده در آن را ویرایش کنید.
افزودن یک کلید TSIG جدید با نام، کلید مخفی و الگوریتم داده‌شده. بدون الگوریتم، الگوریتم پیش‌فرض (hmac-sha256) استفاده می‌شود. کلید مخفی یک رشته کدگذاری‌شده با base64 است. تغییرات فقط در حافظه اعمال می‌شوند و در راه‌اندازی مجدد بعدی از بین می‌روند؛ برای تغییرات دائمی، فایل nsd.conf یا فایل گنجانده‌شده در آن را ویرایش کنید.
مرتبط ساختن ناحیه با کلید tsig داده‌شده. فهرست‌های کنترل دسترسی برای notify، allow-notify، provide-xfr و request-xfr برای استفاده از کلید داده‌شده تنظیم می‌شوند.
حذف کلید TSIG با نام داده‌شده. اگر کلید هنوز توسط ناحیه‌ای در حال استفاده باشد، خطا چاپ می‌کند. تغییرات فقط در حافظه اعمال می‌شوند و در راه‌اندازی مجدد بعدی از بین می‌روند؛ برای تغییرات دائمی، فایل nsd.conf یا فایل گنجانده‌شده در آن را ویرایش کنید.
افزودن یا جایگزینی دائمی یک رمز کوکی (cookie secret). پارامتر <secret> باید یک رشته هگزادسیمال ۱۲۸ بیتی باشد.

رمزهای کوکی می‌توانند active (فعال) یا staging (آماده‌سازی) باشند. رمزهای کوکی active برای ایجاد کوکی‌های DNS استفاده می‌شوند، اما اعتبارسنجی یک کوکی DNS با هر یک از رمزهای کوکی active یا staging موفقیت‌آمیز خواهد بود. وضعیت رمزهای کوکی فعلی را می‌توان با دستور print_cookie_secrets چاپ کرد.

هنگامی که هنوز هیچ رمز کوکی پیکربندی نشده است، <secret> به عنوان active اضافه می‌شود. اگر از قبل یک رمز کوکی active وجود داشته باشد، <secret> به صورت staging اضافه شده یا جایگزین رمز staging موجود می‌گردد.

برای چرخش («roll») یک رمز کوکی استفاده‌شده در یک مجموعه anycast: رمز جدید باید به عنوان رمز آماده‌سازی (staging) به تمامی گره‌های مجموعه anycast اضافه شود. هنگامی که تمامی گره‌ها بتوانند کوکی‌های DNS را با رمز جدید اعتبارسنجی کنند، رمز جدید را می‌توان با دستور activate_cookie_secret فعال کرد. پس از اینکه تمامی گره‌ها رمز جدید را حداقل به مدت یک ساعت در وضعیت active داشتند، می‌توان رمز قبلی را با دستور drop_cookie_secret حذف کرد.

ماندگاری اطلاعات با نوشتن در فایلی انجام می‌شود که از طریق گزینه cookie-secret-file در بخش server فایل پیکربندی تنظیم شده باشد. مقدار پیش‌فرض آن عبارت است از: //var/db/nsd/cookiesecrets.txt .

حذف رمز کوکی staging.
تغییر وضعیت رمز کوکی staging فعلی به active، و تغییر وضعیت رمز کوکی active فعلی به staging.
نمایش رمزهای کوکی پیکربندی‌شده فعلی به همراه وضعیت آن‌ها.

برنامه nsd-control در صورت بروز خطا با کد وضعیت 1، و در صورت موفقیت با کد 0 خارج می‌شود.

راه‌اندازی نیازمند یک گواهی خودامضا (self-signed) و کلیدهای خصوصی برای هر دو طرف کارساز و کلاینت است. اسکریپت nsd-control-setup این موارد را در دایرکتوری پیش‌فرض اجرا، یا با گزینه -d در دایرکتوری دیگری تولید می‌کند. اگر مجوزهای کنترل دسترسی روی فایل‌های کلید را تغییر دهید، می‌توانید مشخص کنید چه کسی مجاز به استفاده از nsd-control است؛ به طور پیش‌فرض مالک و گروه دسترسی دارند اما همه کاربران خیر. این اسکریپت کلیدهای خصوصی موجود در دایرکتوری را حفظ می‌کند. پس از اجرای اسکریپت به عنوان کاربر ریشه (root)، گزینه control-enable را در nsd.conf فعال کنید.

دستور stats تعدادی از شمارنده‌های آماری را نمایش می‌دهد.

تعداد پرس‌وجوهای دریافت‌شده (مجموع پرس‌وجوهای tls، tcp و udp).
تعداد پرس‌وجوهای رسیدگی‌شده توسط فرایند کارساز. تعداد فرایندهای کارساز با عبارت پیکربندی server-count تعیین می‌شود.
مدت زمان کارکرد (uptime) بر حسب ثانیه از زمان راه‌اندازی کارساز، همراه با کسری از ثانیه.
زمان سپری‌شده از آخرین گزارش آمار، بر حسب ثانیه، همراه با کسری از ثانیه. در صورتی که پرسش آماری به سرعت انجام شود و دستور قبلی stats شمارنده‌ها را صفر کرده باشد، می‌تواند صفر باشد؛ به‌طوری که گزارش بعدی مقادیر کاملاً صفر و زمان سپری‌شده صفر دریافت کند.
اندازه فایل nsd.db بر روی دیسک، به بایت.
اندازه پایگاه‌داده DNS در حافظه، به بایت.
اندازه حافظه برای انتقال‌های ناحیه و اعلان‌ها در فرایند xfrd، بدون احتساب داده‌های TSIG، به بایت.
اندازه فایل zonelist روی دیسک، بدون احتساب اندازه nsd.conf، به بایت.
اندازه داده‌های پیکربندی در حافظه که دو بار در فرایند کارساز و فرایند xfrd نگهداری می‌شود، به بایت.
تعداد پرس‌وجوها با این نوع پرس‌وجو (query type).
تعداد پرس‌وجوها با این کد عملیات (opcode).
تعداد پرس‌وجوها با این کلاس پرس‌وجو (query class).
تعداد پاسخ‌هایی که حاوی این کد بازگشتی (rcode) بودند.
تعداد پرس‌وجوها با EDNS OPT.
تعداد پرس‌وجوهایی که تجزیه (parse) رکورد EDNS آن‌ها با شکست مواجه شد.
تعداد پرس‌وجوها بر روی پروتکل UDP در IPv4.
تعداد پرس‌وجوها بر روی پروتکل UDP در IPv6.
تعداد اتصالات بر روی پروتکل TCP در IPv4.
تعداد اتصالات بر روی پروتکل TCP در IPv6.
تعداد اتصالات بر روی پروتکل TLS در IPv4. پرس‌وجوهای TLS بخشی از num.tcp به شمار نمی‌آیند.
تعداد اتصالات بر روی پروتکل TLS در IPv6. پرس‌وجوهای TLS بخشی از num.tcp6 به شمار نمی‌آیند.
تعداد پاسخ‌های دارای کد پاسخ NOERROR و بدون فلگ AA؛ این شامل ارجاعات (referrals) نیز می‌شود.
تعداد پرس‌وجوهایی که دریافت آن‌ها ناموفق بوده است.
تعداد پاسخ‌هایی که ارسال آن‌ها ناموفق بوده است.
تعداد درخواست‌های AXFR از سوی کلاینت‌ها (که با ارسال پاسخ سرویس‌دهی شدند).
تعداد درخواست‌های IXFR از سوی کلاینت‌ها (که با ارسال پاسخ سرویس‌دهی شدند).
تعداد پاسخ‌هایی که فلگ TC روی آن‌ها تنظیم شده است.
تعداد پرس‌وجوهایی که به دلیل رد شدن در بررسی صحت (sanity check) نادیده گرفته و دور انداخته شدند.
تعداد ناحیه‌های اصلی (primary) ارائه‌شده. این‌ها ناحیه‌هایی بدون مدخل‌های 'request-xfr:' هستند. همچنین برای سازگاری با نسخه‌های پیشین با عنوان 'zone.master' نیز خروجی داده می‌شود.
تعداد ناحیه‌های ثانویه (secondary) ارائه‌شده. این‌ها ناحیه‌هایی دارای مدخل‌های 'request-xfr' هستند. همچنین برای سازگاری با نسخه‌های پیشین با عنوان 'zone.slave' نیز خروجی داده می‌شود.

//etc/nsd/nsd.conf
فایل پیکربندی nsd.
//etc/nsd
دایرکتوری حاوی کلیدهای خصوصی (nsd_server.key و nsd_control.key) و گواهی‌های خودامضا (nsd_server.pem و nsd_control.pem).

nsd.conf(5), nsd(8), nsd-checkconf(8)

July 19, 26 NLnet Labs