وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

چرا نام دامنه روی سرور حل نمی‌شود؟ بررسی DNS resolver لینوکس

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

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

مشکل را با یک نام عمومی شروع کنید

در همان محیطی که برنامه اجرا می‌شود این دستور را با نام واقعی اجرا کنید:
کد / دستورgetent ahosts example.com
اگر نتیجه آدرس نمایش دهد، مسیر معمول تبدیل نام در سیستم برای آن لحظه پاسخ داده است. اگر برنامه در کانتینر است، این آزمایش را در همان کانتینر نیز انجام دهید؛ فایل hosts و resolver آن ممکن است با میزبان فرق کند. یک پاسخ موفق هم سلامت اتصال به پورت مقصد یا TLS را ثابت نمی‌کند.

resolver فعال را ببینید

کد / دستورcat /etc/resolv.conf ls -l /etc/resolv.conf
اگر فایل به یک سرویس محلی اشاره می‌کند یا پیوند نمادین است، ممکن است تنظیم واقعی توسط systemd-resolved، NetworkManager یا ابزار دیگر مدیریت شود. تغییر دستی فایل تولیدشده ممکن است پس از ری‌استارت از بین برود. در سیستم‌هایی که systemd-resolved دارند می‌توانید ببینید چه تنظیمی فعال است:
کد / دستورresolvectl status resolvectl query example.com
اگر این دستور نصب نیست یا سرویس مربوط اجرا نمی‌شود، آن را به معنی خراب بودن کل DNS ندانید؛ ابزار مدیر شبکه در توزیع شما ممکن است متفاوت باشد. برای یک دامنه داخلی، وجود DNS خصوصی سازمان و مسیر VPN را نیز بررسی کنید. تعویض آن با DNS عمومی ممکن است نام‌های داخلی را از دسترس خارج کند.

پاسخ‌ها را به‌درستی مقایسه کنید

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

اگر فقط یک نام پاسخ نمی‌دهد

یک نام عمومی دیگر را هم با getent ahosts امتحان کنید. اگر نام دوم پاسخ دارد اما نام سرویس شما نه، ابتدا املای نام، نوع پاسخ و DNS مسئول همان دامنه را با مدیر دامنه تطبیق دهید؛ تغییر تنظیم کل سرور ممکن است مسئله را حل نکند. اگر هر دو نام شکست می‌خورند، نشانی resolver را از resolvectl status یا تنظیم شبکه مدیر سرور پیدا کنید و با روش همان سیستم اصلاح کنید. بعد هم نام عمومی و هم نام داخلی موردنیاز برنامه را دوباره آزمایش کنید.

نتیجه کاربردی را بررسی کنید

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

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام