| RESOLVED.CONF(5) | resolved.conf | RESOLVED.CONF(5) |
نام (NAME)
resolved.conf - فایلهای پیکربندی سرویس حل نام شبکه (systemd-resolved)
خلاصه دستور (SYNOPSIS)
توضیحات (DESCRIPTION)
این فایلهای پیکربندی حل نام محلی DNS و LLMNR را کنترل میکنند.
دایرکتوریهای پیکربندی و اولویت (CONFIGURATION DIRECTORIES AND PRECEDENCE)
پیکربندی پیشفرض در زمان کامپایل تعیین میشود، بنابراین پیکربندی تنها زمانی مورد نیاز است که انحراف از آن مقادیر پیشفرض لازم باشد. فایل پیکربندی اصلی از یکی از دایرکتوریهای فهرستشده به ترتیب اولویت بارگذاری میشود و تنها اولین فایل یافتشده استفاده میگردد: /etc/systemd/، /run/systemd/، /usr/local/lib/systemd/ [1]، /usr/lib/systemd/. نسخه ارائهشده توسط توزیعکننده (vendor) شامل ورودیهای کامنتشدهای است که مقادیر پیشفرض را به عنوان راهنمای مدیر سیستم نشان میدهد. بازنویسیهای محلی را نیز میتوان با ایجاد قطعات تکمیلی (drop-in) مطابق توضیحات زیر انجام داد. فایل پیکربندی اصلی را نیز میتوان برای این منظور ویرایش کرد (یا یک رونوشت در /etc/ اگر در /usr/ عرضه شده باشد)، با این حال استفاده از قطعات تکمیلی (drop-in) برای پیکربندی محلی نسبت به تغییر دادن فایل پیکربندی اصلی توصیه میشود.
علاوه بر فایل پیکربندی اصلی، قطعههای پیکربندی تکمیلی (drop-in) از دایرکتوریهای /usr/lib/systemd/*.conf.d/، /usr/local/lib/systemd/*.conf.d/، و /etc/systemd/*.conf.d/ خوانده میشوند. این قطعات تکمیلی اولویت بالاتری دارند و فایل پیکربندی اصلی را بازنویسی (override) میکنند. فایلها در زیردایرکتوریهای پیکربندی *.conf.d/ صرفنظر از اینکه در کدام زیردایرکتوری قرار دارند، بر اساس نام فایل خود به ترتیب واژهنگاری (lexicographic) مرتب میشوند. هنگامی که چندین فایل یک گزینه یکسان را تعیین میکنند، برای گزینههایی که فقط یک مقدار واحد را میپذیرند، ورودی موجود در فایلی که نام آن در آخرین جایگاه قرار میگیرد اولویت دارد، و برای گزینههایی که فهرستی از مقادیر را میپذیرند، ورودیها به همان ترتیبی که در فایلهای مرتبشده ظاهر میشوند جمعآوری میگردند.
هنگامی که بستهها نیاز به سفارشیسازی پیکربندی دارند، میتوانند قطعات تکمیلی (drop-in) را در /usr/ نصب کنند. فایلهای موجود در /etc/ برای مدیر سیستم محلی رزرو شدهاند، که میتواند از این منطق برای بازنویسی فایلهای پیکربندی نصبشده توسط بستههای توزیعکننده استفاده کند. برای بازنویسی قطعات تکمیلی بسته، باید از قطعات تکمیلی استفاده شود، زیرا فایل پیکربندی اصلی اولویت پایینتری دارد. توصیه میشود نام تمام فایلها در این زیردایرکتوریها با یک عدد دو رقمی و یک خط تیره پیشوندگذاری شود تا ترتیب آنها سادهتر شود. این کار همچنین مفهوم اولویتهای قطعات تکمیلی را تعریف میکند تا به توزیعکنندگان سیستمعامل اجازه دهد قطعات تکمیلی را در محدوده خاصی پایینتر از محدوده مورد استفاده کاربران عرضه کنند. این امر خطر بازنویسی تصادفی قطعات تکمیلی تعریفشده توسط کاربران را توسط قطعات تکمیلی بستهها کاهش میدهد. توصیه میشود از محدوده 10-40 برای قطعات تکمیلی در /usr/ و از محدوده 60-90 برای قطعات تکمیلی در /etc/ و /run/ استفاده شود، تا اطمینان حاصل گردد که قطعات تکمیلی محلی و گذرا بر قطعات تکمیلی عرضهشده توسط توزیعکننده سیستمعامل اولویت دارند.
برای غیرفعال کردن یک فایل پیکربندی ارائهشده توسط توزیعکننده، روش توصیهشده قرار دادن یک پیوند نمادین (symlink) به /dev/null در دایرکتوری پیکربندی در /etc/ با همان نام فایل پیکربندی توزیعکننده است.
گزینهها (OPTIONS)
گزینههای زیر در بخش [Resolve] در دسترس هستند:
DNS=
افزودهشده در نسخه 213.
FallbackDNS=
افزودهشده در نسخه 216.
Domains=
هر دامنهای که با "~" پیشوندگذاری نشده باشد، به عنوان پسوندهای جستجو هنگام حل نامهای میزبان تکبخشی (نامهای دامنهای که فاقد نقطه هستند) استفاده میشود تا آنها را به نامهای دامنه کاملاً واجد شرایط (FQDN) تبدیل کند. این «دامنههای جستجو» دقیقاً به همان ترتیبی که مشخص شدهاند پردازش میشوند تا زمانی که نام همراه با پسوند افزوده پیدا شود. به دلایل سازگاری، اگر این تنظیم مشخص نشده باشد، دامنههای جستجوی فهرستشده در /etc/resolv.conf با کلمه کلیدی search در صورت وجود این فایل و پیکربندی هر دامنهای در آن، استفاده میشوند.
دامنههایی که با "~" پیشوندگذاری شدهاند «دامنههای فقط-مسیریابی» (route-only domains) نامیده میشوند. تمامی دامنههای فهرستشده در اینجا (هم دامنههای جستجو و هم دامنههای فقط-مسیریابی پس از حذف پیشوند "~") یک مسیر جستجو تعریف میکنند که ترجیحاً پرسوجوهای DNS را به این رابط هدایت میکند. این مسیر جستجو تنها زمانی اثرگذار است که سرورهای DNS مناسب به ازای هر پیوند شناخته شده باشند. چنین سرورهایی ممکن است از طریق تنظیم DNS= (به بالا مراجعه کنید) و به صورت پویا در زمان اجرا، برای مثال از اجارههای DHCP تعریف شوند. اگر هیچ سرور DNS به ازای هر پیوند شناخته نشده باشد، دامنههای فقط-مسیریابی هیچ اثری نخواهند داشت.
از ساختار "~." (که از "~" برای نشان دادن دامنه فقط-مسیریابی و "." برای نشان دادن دامنه ریشه DNS که پسوند ضمنی تمامی دامنههای DNS است، تشکیل شده) استفاده کنید تا سرورهای DNS تعریفشده برای این پیوند ترجیحاً برای تمامی دامنهها به کار روند.
برای جزئیات نحوه استفاده از دامنههای جستجو و فقط-مسیریابی، به بخش "Protocols and Routing" در systemd-resolved.service(8) مراجعه کنید.
توجه داشته باشید که پیکربندی دامنه MulticastDNS با نام "local" به عنوان دامنه جستجو یا مسیریابی، این اثر را دارد که جستجوهای این دامنه را به DNS تکپخشی (unicast) کلاسیک هدایت میکند. این ویژگی ممکن است برای ارائه سازگاری با سیستمهای قدیمی که بر خلاف تخصیص IANA برای اهداف صرفاً MulticastDNS از این دامنه در بستر DNS تکپخشی استفاده میکنند، به کار رود. دامنههای جستجو و مسیریابی مفهومی مربوط به DNS تکپخشی هستند و نمیتوانند برای حل جستجوهای تکبخشی از طریق MulticastDNS استفاده شوند.
افزودهشده در نسخه 229.
LLMNR=
افزودهشده در نسخه 216.
MulticastDNS=
افزودهشده در نسخه 234.
DNSSEC=
در صورت تنظیم روی true، تمام جستجوهای DNS به صورت محلی با DNSSEC اعتبارسنجی میشوند (به استثنای LLMNR و DNS چندپخشی). اگر پاسخی برای درخواست جستجو نامعتبر تشخیص داده شود، یک خطای شکست جستجو به برنامهها برگردانده میشود. توجه داشته باشید که این حالت به سرور DNS که از DNSSEC پشتیبانی کند نیاز دارد. اگر سرور DNS به درستی از DNSSEC پشتیبانی نکند، تمام اعتبارسنجیها با شکست مواجه خواهند شد.
اگر روی "allow-downgrade" تنظیم شود، تلاش برای اعتبارسنجی DNSSEC انجام میشود، اما اگر سرور به درستی از DNSSEC پشتیبانی نکند، حالت DNSSEC به طور خودکار غیرفعال میگردد. توجه داشته باشید که این حالت، اعتبارسنجی DNSSEC را در برابر حملات «تنزل رتبه» (downgrade) آسیبپذیر میکند؛ جایی که یک مهاجم ممکن است بتواند با ساختن یک پاسخ DNS جعلی که نشان میدهد DNSSEC پشتیبانی نمیشود، تنزل به حالت غیر DNSSEC را موجب شود.
در صورت تنظیم روی false، جستجوهای DNS با DNSSEC اعتبارسنجی نمیشوند.
توجه داشته باشید که اعتبارسنجی DNSSEC نیازمند دریافت دادههای DNS اضافی است و بنابراین منجر به جریمه زمانی اندکی در جستجوی DNS میشود.
اعتبارسنجی DNSSEC برای اثبات یکپارچگی دادهها به آگاهی از «لنگرهای اعتماد» (trust anchors) نیاز دارد. لنگر اعتماد برای دامنه ریشه اینترنت در درون حلکننده تعبیه شده است؛ لنگرهای اعتماد اضافی را میتوان با dnssec-trust-anchors.d(5) تعریف کرد. لنگرهای اعتماد ممکن است در فواصل زمانی منظم تغییر کنند و لنگرهای اعتماد قدیمی ابطال شوند. در چنین حالتی، اعتبارسنجی DNSSEC امکانپذیر نخواهد بود تا زمانی که لنگرهای اعتماد جدید به صورت محلی پیکربندی شوند یا بسته نرمافزاری حلکننده با لنگر اعتماد ریشه جدید بهروزرسانی شود. در عمل، هنگامی که لنگر اعتماد تعبیهشده ابطال شود و DNSSEC= روی true تنظیم باشد، تمام جستجوهای بعدی با شکست مواجه خواهند شد، زیرا دیگر نمیتوان اثبات کرد که آیا جستجوها به درستی امضا شدهاند یا به طور معتبر بدون امضا هستند. اگر DNSSEC= روی "allow-downgrade" تنظیم شده باشد، حلکننده در چنین حالتی اعتبارسنجی DNSSEC را به طور خودکار خاموش میکند.
برنامههای کلاینت که دادههای DNS را جستجو میکنند، مطلع خواهند شد که آیا جستجوها با استفاده از DNSSEC تایید شدهاند یا دادههای بازگرداندهشده قابل تایید نبودهاند (خواه به این دلیل که دادهها بدون امضا در DNS یافت شدهاند، یا سرور DNS از DNSSEC پشتیبانی نمیکرده، یا لنگرهای اعتماد مناسبی شناخته نشده بودند). در حالت دوم، فرض بر این است که برنامههای کلاینت در صورت لزوم از یک روش ثانویه برای اعتبارسنجی دادههای بازگرداندهشده DNS استفاده میکنند.
توصیه میشود در سیستمهایی که مشخص است سرور DNS به درستی از DNSSEC پشتیبانی میکند و بهروزرسانیهای نرمافزار یا لنگرهای اعتماد به طور منظم اتفاق میافتد، DNSSEC= روی true تنظیم شود. در سیستمهای دیگر توصیه میشود DNSSEC= روی "allow-downgrade" تنظیم گردد.
علاوه بر این تنظیم سراسری DNSSEC، systemd-networkd.service(8) نیز تنظیمات DNSSEC به ازای هر پیوند را نگهداری میکند. برای سرورهای DNS سیستم (به بالا مراجعه کنید)، تنها تنظیم سراسری DNSSEC نافذ است. برای سرورهای DNS به ازای هر پیوند، تنظیم به ازای پیوند نافذ است، مگر اینکه تنظیم نشده باشد که در این صورت تنظیم سراسری استفاده میشود.
زونهای DNS خصوصی-سایت (Site-private DNS zones) به طور کلی با عملکرد DNSSEC تداخل دارند، مگر اینکه یک لنگر اعتماد منفی (اگر زون خصوصی امضا نشده باشد) یا مثبت (اگر زون خصوصی امضا شده باشد) برای آنها پیکربندی شده باشد. اگر حالت "allow-downgrade" انتخاب شده باشد، تلاش میشود تا زونهای DNS خصوصی-سایت با استفاده از دامنههای سطح بالا (TLDs) که توسط سرور ریشه DNS شناخته نشدهاند شناسایی شوند. این منطق در تمامی ساختارهای زونهای خصوصی کار نمیکند.
مقدار پیشفرض "no" است.
افزودهشده در نسخه 229.
DNSOverTLS=
هنگامی که روی "opportunistic" تنظیم شود، تلاش میشود درخواستهای DNS به صورت رمزگذاریشده با DNS-over-TLS ارسال شوند. اگر سرور DNS از TLS پشتیبانی نکند، DNS-over-TLS غیرفعال میشود. توجه داشته باشید که این حالت، DNS-over-TLS را در برابر حملات «تنزل رتبه» (downgrade) آسیبپذیر میکند؛ جایی که یک مهاجم ممکن است بتواند با ساختن پاسخی که نشان میدهد DNS-over-TLS پشتیبانی نمیشود، باعث تنزل به حالت غیررمزگذاریشده گردد. در صورت تنظیم روی false، جستجوهای DNS روی UDP ارسال میشوند.
توجه داشته باشید که DNS-over-TLS نیازمند ارسال دادههای اضافی برای برقراری یک اتصال رمزگذاریشده است و بنابراین منجر به جریمه زمانی اندکی در زمان جستجوی DNS میشود.
توجه داشته باشید که در حالت "opportunistic"، حلکننده قادر به احراز هویت سرور نیست، بنابراین در برابر حملات «مرد میانی» (man-in-the-middle) آسیبپذیر است.
علاوه بر این تنظیم سراسری DNSOverTLS=، systemd-networkd.service(8) نیز تنظیمات DNSOverTLS= به ازای هر پیوند را نگهداری میکند. برای سرورهای DNS سیستم (به بالا مراجعه کنید)، تنها تنظیم سراسری DNSOverTLS= نافذ است. برای سرورهای DNS به ازای هر پیوند، تنظیم به ازای پیوند اعمال میشود، مگر اینکه تنظیم نشده باشد که در این صورت از تنظیم سراسری استفاده میشود.
مقدار پیشفرض "no" است.
افزودهشده در نسخه 239.
Cache=
توجه داشته باشید که حافظه پنهان به طور پیشفرض برای سرورهای DNS محلیِ میزبان (host-local) خاموش است. برای جزئیات به CacheFromLocalhost= مراجعه کنید.
افزودهشده در نسخه 231.
CacheFromLocalhost=
افزودهشده در نسخه 248.
DNSCacheSize=, MulticastDNSCacheSize=, LLMNRCacheSize=
توجه داشته باشید که DNS چندپخشی برای سرکوب درخواستهای تکراری و عملکرد کارآمد، به شدت به حافظه پنهان متکی است. توصیه میشود حتی هنگام کاهش DNSCacheSize=، مقدار MulticastDNSCacheSize= در حد معقولی بالا نگه داشته شود.
توجه داشته باشید که systemd-resolved هنگام فشار روی حافظه سیستم (memory pressure) به طور خودکار تمامی حافظههای پنهان را تخلیه میکند، بنابراین در بیشتر موارد پیکربندی دستی اندازه حافظه پنهان نباید لازم باشد.
توجه داشته باشید که حافظه پنهان به طور پیشفرض برای سرورهای DNS محلیِ میزبان خاموش است. برای جزئیات به CacheFromLocalhost= مراجعه کنید.
افزودهشده در نسخه 261.
DNSStubListener=
حلکننده واسط DNS روی 127.0.0.53 مجموعه کامل ویژگیهای حلکننده محلی را ارائه میدهد که شامل ارائه حل نام LLMNR/MulticastDNS نیز میشود. حلکننده واسط DNS روی 127.0.0.54 یک حلکننده محدودتر را ارائه میدهد که فقط در حالت «پروکسی» (proxy) عمل میکند؛ یعنی بیشتر پیامهای DNS را نسبتاً بدون تغییر به سرورهای DNS بالادستی فعلی منتقل کرده و بازمیگرداند، اما تلاشی برای پردازش محلی پیامها نمیکند و بنابراین DNSSEC را اعتبارسنجی نکرده یا حل نام LLMNR/MulticastDNS را ارائه نمیدهد. (با این حال، در صورت نیاز ارتباط را به DNS-over-TLS ترجمه خواهد کرد.)
توجه داشته باشید که در صورتی که آدرس و درگاه شنودِ حلکننده واسط DNS از قبل در حال استفاده باشد، شنونده واسط DNS به طور ضمنی خاموش میشود.
افزودهشده در نسخه 232.
RefuseRecordTypes=
مثالها:
RefuseRecordTypes=AAAA SRV TXT
توجه داشته باشید که برای رد کردن کامل رکوردهای AAAA (برخلاف SRV، TXT و غیره)، لطفاً پشته IPv6 را نیز در هسته با "sysctl -w net.ipv6.conf.all.disable_ipv6=1" غیرفعال کنید.
افزودهشده در نسخه 258.
DNSStubListenerExtra=
مثالها:
DNSStubListenerExtra=192.168.10.10 DNSStubListenerExtra=2001:db8:0:f102::10 DNSStubListenerExtra=192.168.10.11:9953 DNSStubListenerExtra=[2001:db8:0:f102::11]:9953 DNSStubListenerExtra=tcp:192.168.10.12 DNSStubListenerExtra=udp:2001:db8:0:f102::12 DNSStubListenerExtra=tcp:192.168.10.13:9953 DNSStubListenerExtra=udp:[2001:db8:0:f102::13]:9953
افزودهشده در نسخه 247.
ReadEtcHosts=
افزودهشده در نسخه 240.
ReadStaticRecords=
اگر هم این گزینه و هم ReadEtcHosts= فعال باشند، این سازوکار اولویت دارد: هر رکوردی که از طریق رکوردهای منبع ایستا کشف شود، بر رکوردهای همنام از /etc/hosts اولویت خواهد داشت.
افزودهشده در نسخه 261.
ResolveUnicastSingleLabel=
این گزینه برای سازگاری با پیکربندیهایی ارائه شده است که در آنها از سرورهای عمومی DNS استفاده نمیشود. ارسال نامهای تکبخشی به سرورهایی که تحت کنترل شما نیستند، منطبق با استاندارد نیست؛ به بیانیه IAB[4] مراجعه کنید، و ممکن است خطرات امنیتی و حریم خصوصی ایجاد کند.
افزودهشده در نسخه 246.
StaleRetentionSec=SECONDS
این ویژگی زمانی مفید است که خرابی سرور DNS رخ دهد یا سرور غیرقابل دسترس شود. در چنین مواردی، systemd-resolved(8) همچنان به استفاده از رکوردهای کهنه برای پاسخ دادن به پرسوجوهای DNS ادامه میدهد، بهویژه زمانی که هیچ پاسخ معتبری از سرورهای DNS بالادستی دریافت نشود. با این حال، این مورد برای پاسخهای NXDOMAIN صدق نمیکند، زیرا آنها همچنان پاسخهای کاملاً معتبری هستند. این ویژگی تابآوری در برابر خرابیها و قطعیهای زیرساخت DNS را افزایش میدهد.
systemd-resolved همیشه ابتدا تلاش میکند تا به سرورهای بالادستی DNS دسترسی پیدا کند، قبل از اینکه هرگونه داده کهنهای را در اختیار برنامه کلاینت قرار دهد. اگر این قابلیت فعال باشد، حافظه پنهان هنگام تغییر سرورها تخلیه نخواهد شد.
افزودهشده در نسخه 254.
همچنین ببینید (SEE ALSO)
systemd(1)، systemd-resolved.service(8)، systemd-networkd.service(8)، dnssec-trust-anchors.d(5)، systemd.rr(5)، resolv.conf(5)
نکات (NOTES)
- 1.
- 💣💥🧨💥💥💣 لطفاً توجه داشته باشید که این فایلهای پیکربندی باید همیشه در دسترس باشند. اگر /usr/local/ یک پارتیشن جداگانه باشد، ممکن است در مراحل اولیه بوت در دسترس نباشد و نباید برای پیکربندی استفاده شود.
- 2.
- RFC 4795
- 3.
- RFC 6762
- 4.
- بیانیه IAB
| systemd 261.2 |