صحنهٔ آموزشی DNSSEC؛ کارشناسی با لپ‌تاپ در کنار نمودار عمودی ریشه، والد و ناحیهٔ DNS.

WIUNIX ACADEMY

عیب‌یابی DNSSEC و خطای SERVFAIL

بدون خاموش‌کردن اعتبارسنجی، مشخص کنید خرابی از DS والد، DNSKEY، امضا، resolver یا انتقال پاسخ DNS است.

پیشرفته40 دقیقه مطالعهبه‌روزرسانی
محیطت را انتخاب کن

آموزش متناسب با محیط تو

کجا اجرا می‌کنی؟

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

Rocky Linux 10بررسی‌شده با مستندات رسمی ·

آموزش متناسب با مقادیر تو

تنظیمات این آموزش

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

آی‌پی، دامنه یا پورت مثال‌ها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای به‌روز‌شده را کپی کن.

تنظیم مقادیر برای محیط من5 مقدار قابل‌تغییر

از اینجا شروع کن

در پایان چه چیزی خواهی داشت؟

اولین حلقهٔ خراب اعتماد یا انتقال را پیدا کنید و بعد از اصلاح، پاسخ عادی و معتبر بگیرید؛ پاسخ بدون اعتبارسنجی را بازیابی محسوب نکنید.

سیستم‌عامل‌ها و نسخه‌های پوشش‌داده‌شده

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

قبل از شروع

  • ابزارهای dig و delv روی کلاینت لینوکس موجودند و مجاز به بررسی زون و resolver انتخابی هستید.
  • نام مشکل‌دار، زون شامل آن و authoritative واقعی زون و والدش مشخص‌اند؛ IPهای نمونه باید جایگزین شوند.
  • برای تغییر کلید یا DS، روند بومی signer و ثبت‌کننده و زمان‌های TTL لازم است؛ این آموزش آن داده‌ها را تغییر نمی‌دهد.

هر SERVFAIL از DNSSEC نیست

سرور پاسخ‌گوی اصلی زون (authoritative) رکوردهای همان زون را از دادهٔ تحت اختیارش پاسخ می‌دهد. نرسیدن به سرور اصلی زون، delegation خراب، مشکل انتقال و شکست اعتبارسنجی همگی می‌توانند SERVFAIL بدهند. بیت AD فقط وقتی معنا دارد که resolver و مسیر دریافت پاسخ قابل اعتماد باشند. درخواست رکوردهای DNSSEC با DO هم خودش اعتبارسنجی انجام نمی‌دهد.

این راهنما یک زون امضاشدهٔ موجود را بررسی می‌کند. DS ثبت‌کننده تغییر نمی‌کند و validator مشترک خاموش نمی‌شود. هدف این است که لایهٔ خراب را بشناسید، نه اینکه خطا را پنهان کنید.

01

قدم بعدی

پیش از شروع، ابزار و تفاوت‌های توزیع را بررسی کنید

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

در RHEL، مخزن‌های مجاز همان اشتراک و در Rocky Linux و AlmaLinux، مخزن‌های رسمی همان نسخه لازم‌اند. نسخهٔ فرعیِ تحت پشتیبانی را به‌روز نگه دارید؛ انتخاب نسخهٔ اصلی به معنی سازگاری تمام بسته‌های قدیمی یا سفارشی نیست. SELinux و سیاست رمزنگاری سیستم بخشی از محیط‌اند و برای عبور از خطا خاموش نمی‌شوند.

این میزبان فقط ابزار کلاینت لازم دارد؛ bind9-dnsutils در Debian/Ubuntu و bind-utils در RPM باید dig و delv را فراهم کنند. وجود هر دو را از پنل تأیید کنید. سرویس named یا bind9 راه‌اندازی نمی‌شود و نیازی به بازکردن ورودی پورت 53 در firewalld یا UFW نیست. شبکه باید درخواست و پاسخ خروجی DNS را روی UDP و TCP مجاز کند؛ اگر مسیر خروجی محدود است، با مسئول شبکه هماهنگ کنید.

bash

ترمینال میزبان مجاز معرفی‌شده در همین بخش

cat /etc/os-release
rpm -q bind-utils
command -v dig delv
از کجا بدانم درست انجام شد؟

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

02

قدم بعدی

resolver و پرس‌وجوی مشخص را ثبت کنید

از یک کلاینت مجاز، مستقیماً 127.0.0.1 را دربارهٔ www.example.com بپرسید. برنامهٔ دیگری ممکن است resolver متفاوتی استفاده کند؛ نتیجه‌ها را بدون تطبیق مقصد مقایسه نکنید. زمان UTC هم برای اعتبار امضا و cache خطا مهم است.

نسخهٔ dig و delv، status، flagها و متن احتمالی Extended DNS Error را نگه دارید. IPهای سرورهای اصلی زون این آموزش نمونه‌اند؛ آن‌ها را با سرور واقعی زون و والد عوض کنید.

bash

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

date -u +'%Y-%m-%dT%H:%M:%SZ'
dig -v
delv -v
dig @127.0.0.1 'www.example.com' A +dnssec +time=3 +tries=1
از کجا بدانم درست انجام شد؟

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

03

قدم بعدی

همان درخواست را فقط برای تشخیص با CD مقایسه کنید

اگر درخواست عادی SERVFAIL است ولی همان درخواست با CD داده می‌دهد، بررسی اعتبارسنجی اولویت پیدا می‌کند. CD عمداً اجازهٔ دریافت دادهٔ تأییدنشده را می‌خواهد؛ این پاسخ اصالت داده را ثابت نمی‌کند.

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

bash

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

dig @127.0.0.1 'www.example.com' A +dnssec +cdflag +time=3 +tries=1
از کجا بدانم درست انجام شد؟

تفاوت درخواست عادی و CD روشن شده؛ هیچ سیاست دائمی resolver یا اپلیکیشن تغییر نکرده است.

04

قدم بعدی

با delv زنجیره را مستقل بررسی کنید

delv فقط به AD پاسخ upstream اعتماد نمی‌کند و از trust anchor محلی برای اعتبارسنجی استفاده می‌کند. در این بررسی، CD اجازه می‌دهد داده‌ای را که resolver رد می‌کند دریافت کنید، اما اعتبارسنجی داخلی delv همچنان انجام می‌شود.

trace را محلی نگه دارید و اولین حلقهٔ خراب را پیدا کنید. آخرین عبارت SERVFAIL علت نیست. ساعت یا trust anchor قدیمی همین کلاینت هم می‌تواند مقایسه را خراب کند.

bash

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

delv @127.0.0.1 'www.example.com' A +cdflag +vtrace
از کجا بدانم درست انجام شد؟

trace یا اعتبار زنجیره را تأیید می‌کند یا مشکل مشخص کلید، امضا یا anchor را نشان می‌دهد.

05

قدم بعدی

ببینید مسئول پاسخ در هر مرحله کیست

مسیر delegation را بخوانید و سرور اصلی زون زون example.com را از سرور اصلی زون والد آن جدا کنید. trace ابزار کشف مسیر است و به‌تنهایی حکم اعتبار رمزنگاری نمی‌دهد.

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

bash

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

dig 'www.example.com' A +trace +dnssec
از کجا بدانم درست انجام شد؟

مسیر واگذاری و مقصد زنجیرهٔ CNAME معلوم‌اند و سرورهای اصلی زون و والد به‌درستی انتخاب شده‌اند.

همهٔ آموزش‌های آکادمی ↗