| resolver(5) | File Formats Manual | resolver(5) |
نام (NAME)
resolver - فایل پیکربندی تفکیککننده نام دامنه DNS
خلاصه دستور (SYNOPSIS)
/etc/resolv.conf
توضیحات (DESCRIPTION)
تفکیککننده (resolver) مجموعهای از روالها و توابع در کتابخانه C است که دسترسی به سامانه نام دامنه (DNS) اینترنت را فراهم میسازد. فایل پیکربندی تفکیککننده حاوی اطلاعاتی است که در نخستین باری که این روالها توسط یک فرایند فراخوانی میشوند، خوانده میشود. این فایل بهگونهای طراحی شده است که برای انسان خوانا باشد و شامل فهرستی از کلیدواژهها به همراه مقادیر آنهاست که انواع مختلفی از اطلاعات تفکیککننده را مهیا میسازند. این فایل پیکربندی یک منبع مورد اعتماد از اطلاعات DNS به شمار میرود؛ برای جزئیات به گزینه trust-ad در زیر مراجعه کنید.
اگر این فایل وجود نداشته باشد، فقط از کارگزار نام روی ماشین محلی پرسوجو میشود و فهرست جستجو شامل نام دامنه محلی خواهد بود که از روی نام میزبان (hostname) تعیین میگردد.
گزینههای مختلف پیکربندی عبارتند از:
- nameserver نشانی آیپی کارگزار نام
- نشانی اینترنتی کارگزار نامی که تفکیککننده باید از آن پرسوجو کند؛ یا یک نشانی IPv4 (با نشانهگذاری نقطهای) یا یک نشانی IPv6 با نشانهگذاری دونقطه (و احتمالاً نقطه) مطابق با RFC 2373. حداکثر تا MAXNS (در حال حاضر ۳، فایل <resolv.h> را ببینید) کارگزار نام میتواند فهرست شود، هر کدام در یک سطر با کلیدواژه مجزا. اگر چندین سرور وجود داشته باشد، کتابخانه تفکیککننده به همان ترتیبی که نوشته شدهاند از آنها پرسوجو میکند. اگر هیچ مدخل nameserver وجود نداشته باشد، حالت پیشفرض استفاده از کارگزار نام بر روی ماشین محلی است. (الگوریتم مورد استفاده به این صورت است که ابتدا یک کارگزار نام را امتحان میکند و اگر مهلت زمانی پرسوجو به پایان رسید، به سراغ بعدی میرود تا تمام کارگزاران تمام شوند؛ سپس این فرایند برای تمام کارگزاران نام تکرار میشود تا حداکثر تعداد تلاشهای مجدد انجام پذیرد.)
- search فهرست جستجو برای یافتن نام میزبان
- بهطور پیشفرض، فهرست جستجو شامل یک مدخل است: نام دامنه محلی. این نام از نام میزبان محلی که توسط gethostname(2) بازگردانده میشود، تعیین میگردد؛ نام دامنه محلی برابر با هر آنچه پس از اولین '.' بیاید در نظر گرفته میشود. در نهایت، اگر نام میزبان شامل کاراکتر '.' نباشد، دامنه ریشه به عنوان نام دامنه محلی در نظر گرفته میشود.
- این رفتار را میتوان با نوشتن مسیر جستجوی دامنه دلخواه در ادامه کلیدواژه search، با جدا کردن نامها توسط فاصلهها یا تبها تغییر داد. پرسوجوهای تفکیککنندهای که تعداد نقطههای آنها کمتر از ndots باشد (پیشفرض ۱ است)، با استفاده از هر یک از بخشهای مسیر جستجو به نوبت امتحان خواهند شد تا یک تطابق پیدا شود. برای محیطهایی با چندین زیردامنه لطفاً بخش options ndots:n در زیر را بخوانید تا از حملات مرد میانی (Man-in-the-middle) و ترافیک غیرضروری به سرورهای ریشه DNS جلوگیری شود. توجه داشته باشید که اگر سرورهای دامنههای فهرستشده محلی نباشند، این فرایند ممکن است کند باشد و ترافیک شبکه زیادی ایجاد کند، و اگر هیچ سروری برای یکی از دامنهها در دسترس نباشد، زمان پرسوجو به پایان خواهد رسید (Timeout).
- اگر چندین دستورالعمل search وجود داشته باشد، فقط فهرست جستجوی آخرین مورد اعمال میشود.
- در glibc نسخه 2.25 و قدیمیتر، فهرست جستجو محدود به شش دامنه با مجموع ۲۵۶ کاراکتر بود. از glibc نسخه 2.26 به بعد، فهرست جستجو نامحدود است.
- دستورالعمل domain یک نام منسوخشده برای دستورالعمل search است که تنها از یک مدخل در فهرست جستجو پشتیبانی میکند.
- sortlist
- این گزینه امکان مرتبسازی نشانیهای بازگرداندهشده توسط gethostbyname(3) را فراهم میکند. یک sortlist با جفتهای نشانی آیپی و ماسک شبکه (netmask) مشخص میشود. ماسک شبکه اختیاری است و پیشفرض آن ماسک طبیعی شبکه است. نشانی آیپی و جفت شبکه اختیاری با اسلش از یکدیگر جدا میشوند. حداکثر ۱۰ جفت میتوان مشخص کرد. در اینجا یک نمونه آورده شده است:
-
sortlist 130.155.160.0/255.255.240.0 130.155.0.0
- options
- گزینه options امکان تغییر برخی متغیرهای داخلی تفکیککننده را فراهم میکند. ساختار دستوری به صورت زیر است:
- options option ...
که در آن option یکی از موارد زیر است:
- debug
- تنظیم پرچم RES_DEBUG در _res.options (تنها در صورتی مؤثر است که glibc با پشتیبانی از اشکالزدایی کامپایل شده باشد؛ به resolver(3) مراجعه کنید).
- ndots:n
- آستانهای برای تعداد نقطههایی تعیین میکند که باید در نام دادهشده به res_query(3) (به resolver(3) مراجعه کنید) ظاهر شوند قبل از اینکه یک پرسوجوی مطلق اولیه انجام شود. مقدار پیشفرض برای n برابر با ۱ است؛ به این معنی که اگر نقطهای در نام وجود داشته باشد، قبل از اینکه هر یک از عناصر فهرست جستجو به آن ضمیمه شوند، ابتدا به عنوان یک نام مطلق امتحان میشود. مقدار این گزینه حداکثر تا ۱۵ پذیرفته میشود (مقادیر بالاتر بدون هشدار به ۱۵ محدود میشوند).
- timeout:n
- میزان زمانی را تعیین میکند که تفکیککننده منتظر پاسخ از یک کارگزار نام راه دور میماند قبل از اینکه پرسوجو را از طریق یک کارگزار نام دیگر مجدداً تلاش کند. این مقدار ممکن است نه زمان کل صرفشده توسط هر فراخوانی API تفکیککننده باشد و هیچ تضمینی وجود ندارد که یک فراخوانی API تفکیککننده منفرد دقیقاً با یک مهلت زمانی تطابق داشته باشد. این مقدار بر حسب ثانیه اندازهگیری میشود و مقدار پیشفرض آن RES_TIMEOUT است (در حال حاضر ۵، فایل <resolv.h> را ببینید). مقدار این گزینه به حداکثر ۳۰ محدود میشود.
- attempts:n
- تعداد دفعاتی را تعیین میکند که تفکیککننده پیش از تسلیم شدن و بازگرداندن خطا به برنامه فراخواننده، یک پرسوجو را به سرورهای نام ارسال میکند. مقدار پیشفرض آن RES_DFLRETRY است (در حال حاضر ۲، فایل <resolv.h> را ببینید). مقدار این گزینه به حداکثر ۵ محدود میشود.
- rotate
- تنظیم پرچم RES_ROTATE در _res.options، که موجب انتخاب نوبتی و گردشی (Round-robin) کارگزاران نام از میان فهرست ارائهشده میشود. این کار بار پرسوجوها را میان تمامی سرورهای فهرستشده توزیع میکند، به جای اینکه همه کلاینتها هر بار ابتدا اولین سرور فهرست را امتحان کنند.
- no-aaaa (از glibc نسخه 2.36)
- تنظیم پرچم RES_NOAAAA در _res.options، که پرسوجوهای AAAA انجامشده توسط تفکیککننده استاب را متوقف میکند؛ از جمله جستجوهای AAAA فعالشده توسط رابطهای مبتنی بر NSS مانند getaddrinfo(3). تنها جستجوهای DNS تحت تأثیر قرار میگیرند: دادههای IPv6 در hosts(5) همچنان استفاده میشوند، getaddrinfo(3) با پرچم AI_PASSIVE همچنان نشانیهای IPv6 تولید میکند، و کارگزاران نام IPv6 پیکربندیشده همچنان استفاده میشوند. برای تولید نتایج صحیح خطای نام (NXDOMAIN)، پرسوجوهای AAAA به پرسوجوهای A ترجمه میشوند. این گزینه در درجه اول برای اهداف عیبیابی و تشخیصی در نظر گرفته شده است تا مشخص شود آیا پرسوجوهای AAAA در DNS اثر نامطلوبی دارند یا خیر. این گزینه با استفاده از EDNS0 و اعتبارسنجی DNSSEC توسط برنامهها ناسازگار است.
- no-check-names
- تنظیم پرچم RES_NOCHECKNAME در _res.options، که بررسی نوین BIND را برای کاراکترهای نامعتبر در نامهای میزبان ورودی و نامهای پستی مانند زیرخط (_)، کاراکترهای غیر اسکی (non-ASCII) یا کاراکترهای کنترلی غیرفعال میکند.
- inet6
- تنظیم پرچم RES_USE_INET6 در _res.options. این گزینه باعث میشود که درون تابع gethostbyname(3) ابتدا یک پرسوجوی AAAA پیش از پرسوجوی A امتحان شود و در صورتی که هیچ رکورد AAAA یافت نشود اما مجموعه رکوردهای A وجود داشته باشد، پاسخهای IPv4 در قالب «تونلشده» به IPv6 نگاشت شوند. از glibc نسخه 2.25 به بعد، این گزینه منسوخ شده است؛ برنامهها به جای gethostbyname(3) باید از getaddrinfo(3) استفاده کنند.
برخی برنامهها زمانی که این گزینه فعال است رفتارهای عجیبی نشان میدهند.
- ip6-bytestring (از glibc 2.3.4 تا glibc 2.24)
- تنظیم پرچم RES_USEBSTRING در _res.options. این گزینه موجب میشود که جستجوهای معکوس IPv6 با استفاده از قالب برچسب بیتی (Bit-label) شرح دادهشده در RFC 2673 انجام شوند؛ اگر این گزینه تنظیم نشود (که حالت پیشفرض است)، از قالب nibble استفاده میشود. این گزینه در glibc نسخه 2.25 حذف شد، زیرا به یک افزونه DNS ناسازگار با گذشته وابسته بود که هرگز در سطح اینترنت فراگیر نشد.
- ip6-dotint/no-ip6-dotint (از glibc 2.3.4 تا glibc 2.24)
- پاک کردن/تنظیم پرچم RES_NOIP6DOTINT در _res.options. هنگامی که این گزینه پاک باشد (ip6-dotint)، جستجوهای معکوس IPv6 در پهنه (zone) منسوخشده ip6.int انجام میشوند؛ زمانی که این گزینه تنظیم شود (no-ip6-dotint)، جستجوهای معکوس IPv6 بهطور پیشفرض در پهنه ip6.arpa صورت میگیرند. این گزینهها تا glibc نسخه 2.24 در دسترس بودند که در آن no-ip6-dotint حالت پیشفرض بود. از آنجا که پشتیبانی از ip6-dotint مدتها پیش در اینترنت متوقف شد، این گزینهها در glibc نسخه 2.25 حذف گردیدند.
- edns0 (از glibc نسخه 2.6)
- تنظیم پرچم RES_USE_EDNS0 در _res.options. این گزینه پشتیبانی از افزونههای DNS شرحدادهشده در RFC 2671 را فعال میکند.
- single-request (از glibc نسخه 2.10)
- تنظیم پرچم RES_SNGLKUP در _res.options. بهطور پیشفرض از glibc نسخه 2.9 به بعد، جستجوهای IPv4 و IPv6 به صورت موازی انجام میشوند. برخی از تجهیزات کارگزار DNS توانایی پردازش صحیح این درخواستها را ندارند و موجب پایان مهلت زمانی (Timeout) میشوند. این گزینه رفتار مذکور را غیرفعال کرده و باعث میشود glibc درخواستهای IPv6 و IPv4 را به صورت متوالی و پشتسرهم اجرا کند (به بهای مقداری کندی در فرایند تفکیک نام).
- single-request-reopen (از glibc نسخه 2.9)
- تنظیم پرچم RES_SNGLKUPREOP در _res.options. تفکیککننده از یک سوکت مشترک برای هر دو درخواست A و AAAA استفاده میکند. برخی سختافزارها به اشتباه فقط یک پاسخ ارسال میکنند. در چنین حالتی، سامانه کلاینت منتظر پاسخ دوم معطل میماند. فعال کردن این گزینه این رفتار را تغییر میدهد به گونهای که اگر دو درخواست از همان درگاه (پورت) به درستی رسیدگی نشوند، سوکت بسته شده و قبل از ارسال درخواست دوم یک سوکت جدید باز میشود.
- no-tld-query (از glibc نسخه 2.14)
- تنظیم پرچم RES_NOTLDQUERY در _res.options. این گزینه موجب میشود res_nsearch() تلاش نکند یک نام واجد شرایط نشده (unqualified) را به گونهای حل کند که گویی یک دامنه سطحبالا (TLD) است. این گزینه در صورتی که سایت به جای داشتن localhost در یک یا چند عنصر فهرست جستجو، عبارت «localhost» را به عنوان TLD داشته باشد میتواند مشکلاتی ایجاد کند. این گزینه در صورتی که هیچیک از پرچمهای RES_DEFNAMES یا RES_DNSRCH تنظیم نشده باشند هیچ اثری ندارد.
- use-vc (از glibc نسخه 2.14)
- تنظیم پرچم RES_USEVC در _res.options. این گزینه استفاده از پروتکل TCP را برای تفکیک نامهای DNS اجباری میکند.
- no-reload (از glibc نسخه 2.26)
- تنظیم پرچم RES_NORELOAD در _res.options. این گزینه بارگذاری مجدد خودکار فایل پیکربندی تغییر یافته را غیرفعال میکند.
- trust-ad (از glibc نسخه 2.31)
- تنظیم پرچم RES_TRUSTAD در _res.options. این گزینه رفتار بیت AD (دادههای احراز هویت شده) تفکیککننده استاب را کنترل میکند. اگر یک تفکیککننده اعتبارسنجی بیت AD را در یک پاسخ تنظیم کند، نشاندهنده آن است که دادههای موجود در پاسخ مطابق با پروتکل DNSSEC تایید و اعتبارسنجی شدهاند. به منظور اتکا به بیت AD، سیستم محلی باید هم به تفکیککننده اعتبارسنج DNSSEC و هم به مسیر شبکه تا آن اعتماد داشته باشد؛ به همین دلیل است که تایید صریح نیاز است. اگر گزینه trust-ad فعال باشد، تفکیککننده استاب بیت AD را در پرسوجوهای DNS خروجی تنظیم میکند (برای فعالسازی پشتیبانی از بیت AD) و بیت AD را در پاسخها حفظ مینماید. بدون این گزینه، بیت AD در پرسوجوها تنظیم نمیشود و پیش از بازگرداندن پاسخ به برنامه، همیشه از پاسخها حذف میگردد. این بدان معناست که اگر گزینه trust-ad به درستی تنظیم شده باشد، برنامهها میتوانند به بیت AD در پاسخها اعتماد کنند.
- در glibc نسخه 2.30 و قبلتر، بیت AD به صورت خودکار در پرسوجوها تنظیم نمیشد و در پاسخها بدون تغییر به برنامهها تحویل داده میشد.
کلیدواژه search در فایل resolv.conf سیستم میتواند برای هر فرایند بهطور مجزا با تنظیم متغیر محیطی LOCALDOMAIN روی فهرستی از دامنههای جستجو که با فاصله از هم جدا شدهاند بازنویسی شود.
کلیدواژه options در فایل resolv.conf سیستم میتواند برای هر فرایند با تنظیم متغیر محیطی RES_OPTIONS روی فهرستی از گزینههای تفکیککننده (همانطور که در بالا تحت عنوان options توضیح داده شد) اصلاح شود.
کلیدواژه و مقدار باید در یک سطر قرار گیرند و کلیدواژه (مانند nameserver) باید در ابتدای سطر باشد. مقدار بعد از کلیدواژه با فاصله خالی (White space) میآید.
سطرهایی که در ستون اول دارای نقطه-ویرگول (;) یا علامت هش (#) باشند به عنوان توضیح (کامنت) در نظر گرفته میشوند.
فایلها (FILES)
/etc/resolv.conf, <resolv.h>
همچنین ببینید (SEE ALSO)
gethostbyname(3), resolver(3), host.conf(5), hosts(5), nsswitch.conf(5), hostname(7), named(8)
راهنمای عملیات سرور نام برای BIND (Name Server Operations Guide for BIND)
| 2024-05-02 | 4th Berkeley Distribution |