RESOLVCONF.CONF(5) File Formats Manual RESOLVCONF.CONF(5)
resolvconf.conf - پرونده پیکربندی resolvconf

پرونده پیکربندی برای resolvconf(8) است. پرونده یک اسکریپت شل است که توسط resolvconf(8) منبع‌دهی (source) می‌شود، به این معنی که باید حاوی دستورات معتبر شل باشد. در زیر متغیرهای استاندارد که می‌توانند مقداردهی شوند فهرست شده‌اند. اگر مقادیر حاوی فاصله، نویسه‌های عام (wildcards) یا سایر نویسه‌های ویژه شل هستند، اطمینان حاصل کنید که به درستی درون نقل‌قول قرار گرفته و گریز داده شده‌اند (escaped). برای مشاهده مثالی از نقل‌قول به متغیر replace مراجعه کنید.

پس از به‌روزرسانی این پرونده، ممکن است بخواهید resolvconf -u را برای اعمال پیکربندی جدید اجرا کنید.

هنگامی که به یک فهرست تولیدشده به صورت پویا مقداری افزوده (append) یا پیش‌افزوده (prepend) می‌شود، کل فهرست به گونه‌ای یکتا می‌شود که اولویت با سمت‌چپ‌ترین ورودی است.

برای غیرفعال کردن اجرای هرگونه مشترک توسط resolvconf روی NO تنظیم کنید. پیش‌فرض YES است.
در صورت تنظیم، تنها این کلیدها پردازش خواهند شد.
در صورت تنظیم، این کلیدها پردازش نخواهند شد.
فهرستی از جفت‌های کلید/مقدار جدا شده با فاصله برای تطابق است. اگر تمام جفت‌های کلید/مقدار در یک عنصر درون پرونده یافت شوند، کل پرونده از پردازش حذف خواهد شد. نحو به این صورت است: $keyword/$match[/$keyword/$match]

برای نمونه با فرض این پیکربندی:

exclude="search/foo*/nameserver/1.2.3.4 search/bar.org"

هر resolv.conf که هم دارای گزینه search شروع‌شونده با foo به همراه nameserver برابر با 1.2.3.4 باشد یا گزینه search برابر با bar.org داشته باشد، از پردازش کنار گذاشته می‌شود.

این کلیدها همیشه در ابتدا پردازش خواهند شد. در صورت عدم تنظیم، به طور پیش‌فرض مقادیر زیر است:
lo lo[0-9]*
این کلیدها در مرحله بعد پردازش خواهند شد، مگر اینکه دارای یک متریک (metric) باشند. در صورت عدم تنظیم، به طور پیش‌فرض مقادیر زیر است:
tap[0-9]* tun[0-9]* vpn vpn[0-9]* wg[0-9]* ppp[0-9]* ippp[0-9]*
هرگونه علامت‌گذاری انحصاری (exclusive) برای این کلیدها نادیده گرفته می‌شود. این گزینه زمانی کاربرد دارد که ابزارهای یکپارچه‌سازی شخص ثالث گزینه resolvconf -x را تحمیل می‌کنند و شما می‌خواهید آن را به آسانی غیرفعال کنید.
در صورت عدم تنظیم، به طور پیش‌فرض مقادیر زیر است:
127.* 0.0.0.0 255.255.255.255 ::1
دامنه‌های جستجو را به ابتدای فهرست پویای تولیدشده اضافه می‌کند (prepend).
دامنه‌های جستجو را به انتهای فهرست پویای تولیدشده اضافه می‌کند (append).
فهرستی از دامنه‌ها که باید از محاسبات حذف شوند. برای حذف یک دامنه، می‌توانید از foo.* استفاده کنید. برای حذف یک زیردامنه، می‌توانید از *.bar استفاده کنید.
سرورهای نام (name servers) را به ابتدای فهرست پویای تولیدشده اضافه می‌کند (prepend). اگر از سرور نام محلی غیر از libc استفاده می‌کنید، باید این متغیر را روی 127.0.0.1 تنظیم کنید.
سرورهای نام را به انتهای فهرست پویای تولیدشده اضافه می‌کند (append).
فهرستی از سرورهای نام که باید از محاسبات حذف شوند. مقدار پیش‌فرض 0.0.0.0 است، زیرا برخی روترهای معیوب آن را از طریق DHCP ارسال می‌کنند. برای حذف یک بلوک، می‌توانید از 192.168.* استفاده کنید.
از سرورهای نام مربوط به این کلیدها فقط برای دامنه‌های فهرست‌شده در resolv.conf خودشان پرس‌وجو می‌شود. برای دامنه‌های VPN مفید است. تنظیم private_keys="*" هدایت ناحیه ریشه (root zone forwarding) را متوقف می‌کند و به تحلیل‌گر محلی اجازه می‌دهد مستقیماً و به صورت بازگشتی (recursively) از سرورهای ریشه پرس‌وجو کند. نیازمند یک سرور نام محلی به جز libc است. این متغیر معادل گزینه resolvconf -p است.
دامنه‌ها/جستجوی این کلیدها به فهرست جستجوی سراسری در /etc/resolv.conf اضافه نخواهد شد.
این کلیدها را مجبور به عمومی بودن می‌کند و علامت‌گذاری‌های private و nosearch را نادیده می‌گیرد. این گزینه زمانی مفید است که یکپارچه‌سازی‌های شخص ثالث گزینه resolvconf -p را تحمیل می‌کنند و شما می‌خواهید آن را به راحتی غیرفعال کنید.
فهرستی از کلمات کلیدی جایگزینی جدا شده با فاصله است. نحو به این صورت است: $keyword/$match/$replacement

برای نمونه، با فرض این resolv.conf:

domain foo.org
search foo.org dead.beef
nameserver 1.2.3.4
nameserver 2.3.4.5

و این پیکربندی:

replace="search/foo*/bar.com"
replace="$replace nameserver/1.2.3.4/5.6.7.8"
replace="$replace nameserver/2.3.4.5/"

در عوض چنین resolv.conf دریافت خواهید کرد:

domain foo.org
search bar.com
nameserver 5.6.7.8
همانند replace عمل می‌کند با این تفاوت که به جای کل خط، روی هر مقدار جدا شده با فاصله اعمال می‌شود، بنابراین برای جایگزینی یک تک‌دامنه در دستورالعمل search مفید است. با استفاده از همان resolv.conf نمونه و تغییر replace به replace_sub ، در عوض چنین resolv.conf دریافت خواهید کرد:
domain foo.org
search bar.com dead.beef
nameserver 5.6.7.8
پوشه وضعیت پیش‌فرض /run/resolvconf را بازنویسی می‌کند. پس از این‌که resolvconf مورد استفاده قرار گرفت، نباید تغییر داده شود مگر اینکه پوشه قدیمی به پوشه جدید کپی شود.

متغیرهای زیر مستقیماً بر resolv.conf(5) اثر می‌گذارند:

در صورت عدم تنظیم، به طور پیش‌فرض /etc/resolv.conf است. تنظیم آن روی /dev/null از تغییر آن توسط resolvconf(8) جلوگیری می‌کند.
فهرستی از گزینه‌های تحلیل‌گر libc، مطابق با آنچه در resolv.conf(5) مشخص شده است.
هنگامی که روی YES تنظیم شود، آخرین resolv.conf بدون هیچ‌گونه تغییری در resolv_conf نوشته می‌شود. هنگامی که روی /dev/null یا NULL تنظیم شود، مقدار پیش‌فرض resolv_conf_local_only برابر با NO می‌شود، local_nameservers تنظیم‌نشده باقی می‌ماند مگر بازنویسی شود و تنها اطلاعات تنظیم‌شده در resolvconf -u در resolv_conf نوشته می‌شود.
هنگامی که روی YES تنظیم شود و قرار باشد یک resolv.conf خالی نوشته شود، در صورتی که resolv.conf.bak وجود داشته باشد، به جای آن بازیابی می‌شود. در صورت عدم تنظیم، به طور پیش‌فرض YES است.
یک sortlist تحلیل‌گر libc، مطابق با آنچه در resolv.conf(5) مشخص شده است.
اگر یک سرور نام محلی پیکربندی شده باشد، رفتار پیش‌فرض این است که تنها همان سرور نام مشخص شود و تمام ورودی‌های دیگر نادیده گرفته شوند، چرا که برای سرور نام محلی پیکربندی خواهند شد. برای فهرست کردن سرورهای نام غیرمحلی نیز این متغیر را روی NO تنظیم کنید. این کار در صورت از کار افتادن سرور نام محلی به بهای تکرار پرس‌وجوهای سرور، یک DNS فعال در اختیار شما قرار می‌دهد.
سرورهای نام را به انتهای فهرست تولیدشده به صورت پویا اضافه می‌کند (append).
سرورهای نام را به ابتدای فهرست تولیدشده به صورت پویا اضافه می‌کند (prepend).
دامنه‌های جستجو را به انتهای فهرست تولیدشده به صورت پویا اضافه می‌کند (append).
دامنه‌های جستجو را به ابتدای فهرست تولیدشده به صورت پویا اضافه می‌کند (prepend).
پیش‌فرض NO است. مشخص می‌کند که آیا /etc/resolv.conf با نوشتن در یک پرونده موقت و سپس انتقال آن به‌روزرسانی شود، یا اینکه مستقیماً در آن نوشته شود.

openresolv به همراه مشترکینی برای سرورهای نام زیر عرضه می‌شود: dnsmasq(8) ، named(8) ، pdnsd(8) ، pdns_recursor(1) و unbound(8). هر مشترک می‌تواند پرونده‌های پیکربندی ایجاد کند که باید در پرونده پیکربندی اصلی آن مشترک گنجانده شوند (include).

برای غیرفعال کردن یک مشترک، کافی است نام آن را روی NO تنظیم کنید. اگر نام مشترک دارای خط پیوند (dash) است، آن را با زیرخط (underscore) جایگزین کنید. برای نمونه، جهت غیرفعال کردن مشترک libc باید تنظیم کنید:

libc=NO
این پرونده به dnsmasq اعلام می‌کند که برای دامنه‌های خاص از کدام سرورهای نام استفاده کند.
این پرونده به dnsmasq اعلام می‌کند که برای جستجوهای سراسری از کدام سرورهای نام استفاده کند.

نمونه resolvconf.conf برای dnsmasq:

name_servers=127.0.0.1
dnsmasq_conf=/etc/dnsmasq-conf.conf
dnsmasq_resolv=/etc/dnsmasq-resolv.conf

نمونه dnsmasq.conf:

listen-address=127.0.0.1
# If dnsmasq is compiled for DBus then we can take
# advantage of not having to restart dnsmasq.
enable-dbus
conf-file=/etc/dnsmasq-conf.conf
resolv-file=/etc/dnsmasq-resolv.conf
این پرونده را در بلوک options برنامه named بگنجانید (include). این پرونده به named اعلام می‌کند که برای جستجوهای سراسری از کدام سرورهای نام استفاده کند.
این پرونده را در دامنه سراسری (global scope) برنامه named، پس از بلوک options بگنجانید. این پرونده به named اعلام می‌کند که برای دامنه‌های خاص از کدام سرورهای نام استفاده کند.

نمونه resolvconf.conf برای named:

name_servers=127.0.0.1
named_options=/etc/named-options.conf
named_zones=/etc/named-zones.conf

نمونه named.conf:

options {
	listen-on { 127.0.0.1; };
	include "/etc/named-options.conf";
};

include "/etc/named-zones.conf";
این پرونده پیکربندی اصلی pdnsd است که ما برای اضافه کردن دامنه‌های هدایتی (forward domains) خود آن را اصلاح می‌کنیم. اگر این متغیر تنظیم نشود، به راه‌اندازی پرونده پیکربندی pdnsd تکیه می‌کنیم تا pdnsd_resolv را همان‌گونه که در زیر شرح داده شده بخواند.
این پرونده سرورهای نام سراسری را به pdnsd معرفی می‌کند. اگر این متغیر تنظیم نشود، در pdnsd_conf نوشته می‌شود.

نمونه resolvconf.conf برای pdnsd:

name_servers=127.0.0.1
pdnsd_conf=/etc/pdnsd.conf
# pdnsd_resolv=/etc/pdnsd-resolv.conf

نمونه pdnsd.conf:

global {
	server_ip = 127.0.0.1;
	status_ctl = on;
}
server {
	# A server definition is required, even if empty.
	label="empty";
	proxy_only=on;
	# file="/etc/pdnsd-resolv.conf";
}
این پرونده سرورهای نام خاص و سراسری را به pdns_recursor معرفی می‌کند.

نمونه resolvconf.conf برای pdns_recursor:

name_servers=127.0.0.1
pdns_zones=/etc/pdns/recursor-zones.conf

نمونه recursor.conf:

allow-from=127.0.0.0/8, ::1/128
forward-zones-file=/etc/pdns/recursor-zones.conf
هنگامی که روی YES تنظیم شود، از resolvectl(1) برای نوشتن ورودی‌های هر رابط از resolvconf(8) در systemd-resolved(8) استفاده خواهد شد. برای هر ورودی که نتوان آن را با یک رابط تطبیق داد، یک هشدار صادر می‌شود.

این مشترک تنها باید زمانی استفاده شود که systemd-resolved شما از DNS delegates پشتیبانی نمی‌کند و به ورودی‌های خصوصی (private) یا غیرقابل‌جستجوی resolvconf(8) نیاز دارید، یا واقعاً متعهد به دیدن تنظیمات DNS به ازای هر رابط از طریق resolvectl(1) هستید. مشترک systemd-resolved که در زیر مستند شده است، گزینه بهتری محسوب می‌شود.

نمونه resolvconf.conf برای resolvectl:

# Keep /etc/resolv.conf as systemd-resolved wants it
libc=NO
resolvectl=YES
هنگامی که روی YES تنظیم شود، DNS سراسری در پرونده پیکربندی systemd_resolved_conf نوشته می‌شود و DNS delegates در پوشه systemd_delegate_dir نوشته خواهد شد.
پیش‌فرض /run/systemd/resolved.conf.d/60-resolvconf.conf است.
پیش‌فرض /run/systemd/dns-delegate.d است.

نمونه resolvconf.conf برای systemd-resolved:

# Keep /etc/resolv.conf as systemd-resolved wants it
libc=NO
systemd_resolved=YES
این پرونده سرورهای نام خاص و سراسری را به unbound معرفی می‌کند.
هنگامی که روی YES تنظیم شود، unbound دامنه‌ها را به عنوان ناامن (insecure) علامت‌گذاری می‌کند و در نتیجه DNSSEC نادیده گرفته می‌شود.
هنگامی که روی YES تنظیم شود، unbound دامنه‌ها را به عنوان خصوصی (private) علامت‌گذاری می‌کند و به آن و زیردامنه‌هایش اجازه می‌دهد حاوی آدرس‌های خصوصی باشند.
گزینه‌هایی که به هر forward zone اضافه می‌شوند. هر گزینه باید با یک خط جدید درج‌شده (newline) جدا شود.

نمونه resolvconf.conf برای unbound:

name_servers=127.0.0.1
unbound_conf=/etc/unbound-resolvconf.conf

نمونه unbound.conf:

include: /etc/unbound-resolvconf.conf

همه توزیع‌ها پرونده‌های مورد نیاز مشترکین را در مکان‌های یکسانی ذخیره نمی‌کنند. برای نمونه، اسکریپت‌های سرویس named با نام‌های named، bind و rc.bind نام‌گذاری شده‌اند و ممکن است در دایرکتوری به نام /etc/rc.d، /etc/init.d یا موارد مشابه قرار داشته باشند. هر مشترک تلاش می‌کند تا خود را به طور خودکار پیکربندی کند، اما همه توزیع‌ها در نظر گرفته نشده‌اند. همچنین، کاربران ممکن است بخواهند از نسخه‌ای متفاوت از نسخه نصب‌شده به طور پیش‌فرض استفاده کنند، مانند bind8 و bind9. برای سازگاری با این شرایط، مشترکین این پرونده‌ها را در متغیرهای قابل‌پیکربندی قرار داده‌اند که در ادامه مستند شده‌اند.

نام سرویس dnsmasq.
دستور راه‌اندازی مجدد سرویس dnsmasq.
محل پرونده pid سرویس dnsmasq.
نام سرویس libc.
دستور راه‌اندازی مجدد سرویس libc.
نام سرویس named.
دستور راه‌اندازی مجدد سرویس named.
دستور راه‌اندازی مجدد سرویس pdnsd.
دستور راه‌اندازی مجدد سرویس pdns_recursor.
دستور راه‌اندازی مجدد سرویس pdns_recursor.
نام سرویس unbound.
دستور راه‌اندازی مجدد سرویس unbound.
محل پرونده pid سرویس unbound.

sh(1), resolv.conf(5), resolvconf(8)

Roy Marples <roy@marples.name>

هر توزیع ویژگی‌های منحصر‌به‌فرد خود را دارد و ترجیح می‌دهد موارد یکسان را به صورت متفاوت نام‌گذاری کند، به ویژه اسکریپت سرویس named.

جابجایی بین مشترکین resolvectl و systemd-resolved در زمان اجرا پشتیبانی نمی‌شود. پرونده‌های ارجاع‌شده توسط systemd_resolved_conf و systemd_delegate_dir باید به صورت دستی حذف شوند. راه‌اندازی مجدد سیستم (reboot) توصیه می‌شود تا داده‌های کهنه پاک شوند. اگرچه می‌توانید هر دوی آن‌ها را به طور همزمان اجرا کنید، اما استفاده از تنها یکی از آن‌ها روش پیشنهادی است.

لطفاً اشکالات را به https://roy.marples.name/projects/openresolv گزارش دهید.

May 15, 2025 Linux 6.12.107+deb13-amd64