NAMED-RRCHECKER(1) BIND 9 NAMED-RRCHECKER(1)

named-rrchecker - بررسی صحت ساختار رکوردهای منبع DNS (Resource Records)

named-rrchecker [-h] [-o origin] [-p] [-u] [-C] [-T] [-P]

دستور named-rrchecker یک رکورد منبع DNS (به اختصار RR) منفرد را از ورودی استاندارد می‌خواند و درستی ساختار نحوی آن را بررسی می‌کند.

قالب ورودی زیرمجموعه کوچکی از قالب پرونده منطقه (Zone File) در DNS است. کل ورودی باید به صورت زیر باشد:
CLASS TYPE RDATA
  • ورودی نباید با نام مالک (دامنه) آغاز شود.
  • فیلد CLASS اجباری است (معمولاً IN).
  • فیلد TTL نباید وجود داشته باشد.
  • قالب RDATA برای هر نوع رکورد (RRTYPE) منحصر‌به‌فرد است.
  • فاصله‌های خالی ابتدایی و انتهایی در هر فیلد نادیده گرفته می‌شوند.

جزئیات قالب را می‌توان در RFC 1035 بخش 5.1 https://datatracker.ietf.org/doc/html/rfc1035.html#section-5.1 ذیل مشخصات <rr> یافت. قالب RFC 3597 https://datatracker.ietf.org/doc/html/rfc3597.html نیز در هر یک از فیلدهای ورودی پذیرفته می‌شود. بخش مثال‌ها را ببینید.

این گزینه مبدأ (origin) مورد استفاده هنگام تفسیر نام‌ها در رکورد را مشخص می‌کند: مقدار پیش‌فرض آن ریشه (.) است. مبدأ مشخص‌شده همیشه به عنوان یک نام مطلق در نظر گرفته می‌شود.
این گزینه رکورد حاصل را به شکل متعارف (canonical) چاپ می‌کند. اگر شکل متعارفی تعریف نشده باشد، رکورد در قالب رکورد ناشناخته RFC 3597 https://datatracker.ietf.org/doc/html/rfc3597.html چاپ می‌شود.
این گزینه رکورد حاصل را در قالب رکورد ناشناخته RFC 3597 https://datatracker.ietf.org/doc/html/rfc3597.html چاپ می‌کند.
این گزینه‌ها ورودی را نمی‌خوانند. آن‌ها کلاس‌های شناخته‌شده، نوع‌های استاندارد و نام‌های اختصاری نوع‌های خصوصی را چاپ می‌کنند. هر مورد در یک خط جداگانه چاپ می‌شود. فهرست نوع‌های خصوصی حاصل ممکن است خالی باشد.
این گزینه منوی راهنما را چاپ می‌کند.

به گزینه‌های خط فرمان -e و -n در دستور echo دقت ویژه داشته باشید، زیرا این گزینه‌ها بر فاصله‌های خالی در ورودی داده‌شده به named-rrchecker تأثیر می‌گذارند.

  • ورودی معتبر به همراه فاصله‌های خالی در ابتدا و انتها.
  • خروجی: IN A 192.0.2.1
  • فاصله‌های خالی ابتدایی و انتهایی بخشی از خروجی نخواهند بود.

  • ورودی معتبر با یک نام نسبی به عنوان مقصد CNAME.
  • خروجی: IN CNAME target.
  • نام نسبی target از ورودی، با استفاده از مبدأ پیش‌فرض . (ریشه) به یک نام مطلق تبدیل می‌شود.
  • ورودی معتبر با یک نام نسبی به عنوان مقصد CNAME.
  • خروجی: IN CNAME target.origin.test.
  • نام نسبی target از ورودی، با استفاده از مبدأ مشخص‌شده origin.test به یک نام مطلق تبدیل می‌شود.
  • ورودی معتبر با یک نام مطلق به عنوان مقصد CNAME.
  • خروجی: IN CNAME target.
  • اگر target در ورودی از قبل مطلق باشد، مبدأ مشخص‌شده هیچ اثری نخواهد داشت.

نویسه‌های ویژه‌ای که طبق RFC 1035 بخش 5.1 https://datatracker.ietf.org/doc/html/rfc1035.html#section-5.1 در پرونده‌های منطقه مجاز هستند، پذیرفته می‌شوند.

  • ورودی معتبر به همراه گریز با بک‌اسلش (backslash escapes).
  • خروجی: IN CNAME target\..origin.test.
  • مقدار \097 نشان‌دهنده یک مقدار ده‌دهی اسکی (ASCII) است که در این مثال، نویسه a می‌باشد.
  • مقدار \g به یک g ساده تبدیل می‌شود زیرا نویسه g معنای خاصی ندارد و بنابراین پیشوند \ در این حالت کاری انجام نمی‌دهد.
  • مقدار \. نشان‌دهنده یک نقطه لفظی اسکی است (در اینجا به عنوان بخشی از نام مقصد CNAME). معنای ویژه . به عنوان جداکننده برچسب DNS توسط پیشوند \ قبل از آن غیرفعال شده است.
  • ورودی معتبر با استفاده از @ به عنوان ارجاع به مبدأ مشخص‌شده.
  • خروجی: IN CNAME origin.test.
  • ورودی معتبر با یک نویسه @ لفظی (گریز داده‌شده).
  • خروجی: IN CNAME \@.origin.test.
  • ورودی معتبر با استفاده از @ به عنوان ارجاع به مبدأ مشخص‌شده.
  • خروجی: IN CNAME prefix.\@.origin.test.
  • نویسه @ تنها در صورتی معنای خاصی دارد که به صورت مستقل (free-standing) باشد.
  • ورودی معتبر به همراه یک توضیح انتهایی. به نبود فاصله قبل از شروع توضیح توجه کنید.
  • خروجی: IN A 192.0.2.1

برای مثال‌های چندخطی، بخش بعدی را ببینید.

  • رکورد منبع TXT معتبر با دو کلمه بدون نقل‌قول و فاصله در انتها.
  • خروجی: IN TXT "two" "words"
  • دو کلمه بدون نقل‌قول در ورودی طبق RFC 1035 بخش 3.3.14 https://datatracker.ietf.org/doc/html/rfc1035.html#section-3.3.14 به عنوان دو <character-string> در نظر گرفته می‌شوند.
  • فاصله‌های خالی انتهایی از آخرین <character-string> حذف می‌شوند.
  • رکورد منبع TXT معتبر با یک character-string و فاصله در انتهای آن.
  • خروجی: IN TXT "two words"
•
ورودی نامعتبر - علامت نقل‌قول پایانی " قبل از پایان خط تشخیص داده نشده است.
  • ورودی معتبر به همراه یک نویسه خط جدید گریز داده‌شده داخل character-string.
  • خروجی: IN TXT "with newline\010"
  • ورودی چندخطی معتبر با ادامه‌یافتن خط مجاز در داخل پرانتزهای اختیاری در فیلد RDATA.
  • خروجی: IN TXT "two" "words"
•
ورودی نامعتبر - توضیحات (که با ";" آغاز می‌شوند) توسط تجزیه‌کننده نادیده گرفته می‌شوند، بنابراین پرانتز بسته باید قبل از نقطه‌ویرگول قرار گیرد.
  • ورودی معتبر - توضیح با یک خط جدید پایان یافته است.
  • خروجی: IN TXT "two" "words"
  • رکورد HTTPS معتبر.
  • خروجی: IN HTTPS 1 . alpn="h2,h3"
  • رکورد HTTPS معتبر با زیرفیلدهای مجزا که با استفاده از نحو پرانتز RFC 1035 بخش 5.1 https://datatracker.ietf.org/doc/html/rfc1035.html#section-5.1 در چند خط تقسیم شده‌اند تا داده‌هایی که از مرز یک خط عبور می‌کنند را گروه‌بندی کند.
  • به نبود فاصله خالی بین پرانتز بسته و توکن‌های مجاور توجه کنید.
  • خروجی: IN HTTPS 1 . alpn="dot" port=853

  • ورودی معتبر با نحو RFC 9460 https://datatracker.ietf.org/doc/html/rfc9460.html برای فیلد ناشناخته key3. نحو \001\000 دو بایت (اکتت) به ترتیب با مقادیر 1 و 0 ایجاد می‌کند.
  • خروجی: IN HTTPS 1 . port=256
  • فیلد key3 با نام کلید استاندارد port مطابقت دارد.
  • بایت‌های 1 و 0 به عنوان مقادیر عدد صحیح با ترتیب بایت بزرگ‌انتها (big-endian) رمزگشایی شدند.
•
ورودی نامعتبر - طول مقدار برای key3 (یعنی port) با قالب استاندارد شناخته‌شده برای آن پارامتر در نوع رکورد منبع SVCB مطابقت ندارد.
•
ورودی نامعتبر - کلید port، زمانی که با استفاده از نام اختصاری استاندارد خود مشخص می‌شود، باید از نحو استاندارد و مختص آن کلید استفاده کند.

•
ورودی نامعتبر - مقدار AXFR یک نوع متا (meta type) است، نه یک نوع رکورد منبع (RRTYPE) واقعی.
•
ورودی نامعتبر - مقدار ANY یک کلاس متا (meta class) است، نه یک کلاس واقعی.
•
ورودی نامعتبر - فیلد کلاس وجود ندارد، بنابراین تجزیه‌کننده تلاش می‌کند نوع رکورد منبع A را به عنوان کلاس تفسیر کند و با شکست مواجه می‌شود.

0
کل ورودی به عنوان یک رکورد منبع با ساختار نحوی معتبر تجزیه شد.
1
ورودی یک رکورد منبع با ساختار نحوی معتبر نیست، یا نوع داده‌شده پشتیبانی نمی‌شود، یا یکی از کلاس یا نوع (یا هر دو) مقادیر متا هستند که نباید در پرونده‌های منطقه ظاهر شوند.

RFC 1034 https://datatracker.ietf.org/doc/html/rfc1034.html, RFC 1035 https://datatracker.ietf.org/doc/html/rfc1035.html, RFC 3957 https://datatracker.ietf.org/doc/html/rfc3957.html, named(8) <#std-iscman-named>.

Internet Systems Consortium

2026, Internet Systems Consortium

2026-08-19 9.20.27