'\" t .TH "ORG\&.FREEDESKTOP\&.RESOLVE1" "5" "" "systemd 257.13" "org.freedesktop.resolve1" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" org.freedesktop.resolve1 \- رابط‌های گذرگاه D-Bus سرویس تحلیل نام systemd-resolved .SH "توضیحات (DESCRIPTION)" .PP \fBsystemd-resolved.service\fR(8) یک سرویس سیستمی است که تحلیل و کش‌سازی نام میزبان را با استفاده از DNS، LLMNR و mDNS فراهم می‌کند\&. این سرویس همچنین اعتبارسنجی DNSSEC را انجام می‌دهد\&. این صفحه معانی تحلیل و رابط D\-Bus را شرح می‌دهد\&. .PP این صفحه فقط شامل یک مرجع API است\&. اگر به دنبال توضیح جامع‌تری درباره چگونگی استفاده از این API هستید، لطفاً به \m[blue]\fBنوشتن مدیران پیکربندی شبکه (Writing Network Configuration Managers)\fR\m[]\&\s-2\u[1]\d\s+2 و \m[blue]\fBنوشتن کلاینت‌های تحلیل‌گر نام (Writing Resolver Clients)\fR\m[]\&\s-2\u[2]\d\s+2 مراجعه کنید\&. .SH "شیء مدیر (THE MANAGER OBJECT)" .PP این سرویس رابط‌های زیر را روی شیء Manager در گذرگاه ارائه می‌دهد: .sp .if n \{\ .RS 4 .\} .nf node /org/freedesktop/resolve1 { interface org\&.freedesktop\&.resolve1\&.Manager { methods: ResolveHostname(in i ifindex, in s name, in i family, in t flags, out a(iiay) addresses, out s canonical, out t flags); ResolveAddress(in i ifindex, in i family, in ay address, in t flags, out a(is) names, out t flags); ResolveRecord(in i ifindex, in s name, in q class, in q type, in t flags, out a(iqqay) records, out t flags); ResolveService(in i ifindex, in s name, in s type, in s domain, in i family, in t flags, out a(qqqsa(iiay)s) srv_data, out aay txt_data, out s canonical_name, out s canonical_type, out s canonical_domain, out t flags); GetLink(in i ifindex, out o path); SetLinkDNS(in i ifindex, in a(iay) addresses); SetLinkDNSEx(in i ifindex, in a(iayqs) addresses); SetLinkDomains(in i ifindex, in a(sb) domains); SetLinkDefaultRoute(in i ifindex, in b enable); SetLinkLLMNR(in i ifindex, in s mode); SetLinkMulticastDNS(in i ifindex, in s mode); SetLinkDNSOverTLS(in i ifindex, in s mode); SetLinkDNSSEC(in i ifindex, in s mode); SetLinkDNSSECNegativeTrustAnchors(in i ifindex, in as names); RevertLink(in i ifindex); RegisterService(in s id, in s name_template, in s type, in q service_port, in q service_priority, in q service_weight, in aa{say} txt_datas, out o service_path); UnregisterService(in o service_path); ResetStatistics(); FlushCaches(); ResetServerFeatures(); properties: readonly s LLMNRHostname = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s LLMNR = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s MulticastDNS = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s DNSOverTLS = \*(Aq\&.\&.\&.\*(Aq; readonly a(iiay) DNS = [\&.\&.\&.]; readonly a(iiayqs) DNSEx = [\&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly a(iiay) FallbackDNS = [\&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly a(iiayqs) FallbackDNSEx = [\&.\&.\&.]; readonly (iiay) CurrentDNSServer = \&.\&.\&.; readonly (iiayqs) CurrentDNSServerEx = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly a(isb) Domains = [\&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly (tt) TransactionStatistics = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly (ttt) CacheStatistics = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s DNSSEC = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly (tttt) DNSSECStatistics = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly b DNSSECSupported = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly as DNSSECNegativeTrustAnchors = [\*(Aq\&.\&.\&.\*(Aq, \&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s DNSStubListener = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s ResolvConfMode = \*(Aq\&.\&.\&.\*(Aq; }; interface org\&.freedesktop\&.DBus\&.Peer { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Introspectable { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Properties { \&.\&.\&. }; }; .fi .if n \{\ .RE .\} .SS "متدها (Methods)" .PP متد \fBResolveHostname()\fR یک نام میزبان را دریافت کرده و آن را به یک یا چند آدرس IP تحلیل می‌کند\&. به عنوان پارامتر، این متد نمایهٔ رابط شبکهٔ لینوکس (interface index) را برای اجرای پرس‌وجو دریافت می‌کند، یا در صورتی که اجرای آن روی هر رابط مناسبی مجاز باشد، مقدار 0 را می‌پذیرد\&. پارامتر \fIname\fR نام میزبان را برای تحلیل مشخص می‌کند\&. توجه داشته باشید که در صورت نیاز، تبدیل IDNA روی این نام اعمال می‌شود، مگر اینکه نام از طریق LLMNR یا MulticastDNS تحلیل شود\&. پارامتر \fIfamily\fR نتایج را به یک خانوادهٔ آدرس خاص محدود می‌کند\&. این پارامتر می‌تواند \fBAF_INET\fR، \fBAF_INET6\fR یا \fBAF_UNSPEC\fR باشد\&. در صورتی که \fBAF_UNSPEC\fR مشخص شود (توصیه‌شده)، هر دو نوع آدرس، با توجه به پیکربندی شبکهٔ محلی دریافت می‌شوند (به‌عنوان مثال، اگر هیچ آدرس محلی و قابل مسیریابی IPv6 یافت نشود، هیچ آدرس IPv6 دریافت نمی‌شود؛ و به‌طور مشابه برای IPv4)\&. یک فیلد ۶۴ بیتی \fIflags\fR می‌تواند برای تغییر رفتار عملیات تحلیل‌گر استفاده شود (به زیر مراجعه کنید)\&. این متد آرایه‌ای از رکوردهای آدرس را برمی‌گرداند\&. هر رکورد آدرس شامل نمایهٔ رابطی است که آدرس به آن تعلق دارد، یک خانوادهٔ آدرس، و همچنین یک آرایهٔ بایت با داده‌های واقعی آدرس IP (که بسته به خانوادهٔ آدرس دارای ۴ یا ۱۶ عنصر است)\&. خانوادهٔ آدرس بازگردانده‌شده یکی از موارد \fBAF_INET\fR یا \fBAF_INET6\fR خواهد بود\&. برای IPv6، نمایهٔ رابط آدرس بازگردانده‌شده باید برای مقداردهی اولیهٔ فیلد \&.sin6_scope_id در یک نمونه از struct\ \&sockaddr_in6 جهت پشتیبانی از تحلیل به آدرس‌های IP پیوند\-محلی (link\-local) استفاده شود\&. به دنبال آرایهٔ آدرس، نام متعارف (canonical name) میزبان می‌آید که ممکن است با نام میزبان تحلیل‌شده یکسان باشد یا نباشد\&. در نهایت، یک فیلد ۶۴ بیتی \fIflags\fR بازگردانده می‌شود که مشابه فیلد \fIflags\fR ورودی تعریف شده است، اما حاوی اطلاعاتی درباره داده‌های تحلیل‌شده می‌باشد (به زیر مراجعه کنید)\&. اگر نام میزبان ارائه‌شده یک آدرس IPv4 یا IPv6 با قالب رشته‌ای باشد، تجزیه شده و نتیجه بازگردانده می‌شود\&. در این حالت، هیچ ارتباط شبکه‌ای انجام نمی‌شود\&. .PP متد \fBResolveAddress()\fR عملیات معکوس را اجرا می‌کند: یک آدرس IP را دریافت کرده و یک یا چند نام میزبان را برای آن به دست می‌آورد\&. به عنوان پارامتر، نمایهٔ رابط شبکه را برای اجرای پرس‌وجو می‌گیرد، یا اگر تمام رابط‌های مناسب قابل قبول باشند، مقدار \fB0\fR را می‌پذیرد\&. پارامتر \fIfamily\fR خانوادهٔ آدرس IP مورد نظر برای تحلیل را نشان می‌دهد\&. این پارامتر می‌تواند \fBAF_INET\fR یا \fBAF_INET6\fR باشد\&. پارامتر \fIaddress\fR داده‌های خام آدرس IP را (به عنوان یک آرایهٔ بایتی ۴ یا ۱۶ بایتی) دریافت می‌کند\&. پارامتر ورودی \fIflags\fR می‌تواند برای تغییر رفتار عملیات تحلیل‌گر استفاده شود (به زیر مراجعه کنید)\&. این متد آرایه‌ای از رکوردهای نام را بازمی‌گرداند که هر کدام شامل یک نمایهٔ رابط و یک نام میزبان است\&. فیلد خروجی \fIflags\fR شامل اطلاعات تکمیلی درباره عملیات تحلیل‌گر است (به زیر مراجعه کنید)\&. .PP متد \fBResolveRecord()\fR نوع، کلاس و نام رکورد منبع DNS (به اختصار RR) را دریافت کرده و مجموعهٔ کامل رکوردهای منبع (RRset)، شامل RDATA را برای آن بازیابی می‌کند\&. به عنوان پارامتر، نمایهٔ رابط شبکهٔ لینوکس را برای اجرای پرس‌وجو می‌گیرد، یا اگر اجرای آن روی هر رابط مناسبی مجاز باشد، مقدار \fB0\fR را می‌پذیرد\&. پارامتر \fIname\fR نام دامنهٔ RR را برای جستجو مشخص می‌کند (هیچ تبدیل IDNA اعمال نمی‌شود)، که پس از آن فیلدهای ۱۶ بیتی کلاس و نوع می‌آیند (که می‌توانند ANY باشند)\&. در نهایت، یک فیلد \fIflags\fR می‌تواند برای تغییر رفتار جستجو ارسال شود (به زیر مراجعه کنید)\&. پس از تکمیل، آرایه‌ای از آیتم‌های RR بازگردانده می‌شود\&. هر ورودی آرایه شامل نمایهٔ رابط شبکه‌ای است که RR روی آن کشف شده، فیلد کلاس و نوع RR یافت‌شده، و یک آرایهٔ بایت از داده‌های خام RR کشف‌شده است\&. داده‌های خام RR با نام دامنهٔ رکورد، با همان بزرگی و کوچکی حروف اصلی شروع می‌شود، و سپس نوع RR، کلاس، TTL و RDATA در قالب باینری مستندشده در \m[blue]\fBRFC\ \&1035\fR\m[]\&\s-2\u[3]\d\s+2 قرار می‌گیرد\&. برای رکوردهایی که از فشرده‌سازی نام در بار داده پشتیبانی می‌کنند (مانند MX یا PTR)، فشرده‌سازی در داده‌های بازگردانده‌شده باز (expand) می‌شود\&. .PP توجه داشته باشید که در حال حاضر، فیلد کلاس باید به عنوان IN یا ANY مشخص شود\&. تعیین یک کلاس دیگر خطایی بازمی‌گرداند که نشان می‌دهد جستجوهایی از این نوع پشتیبانی نمی‌شوند\&. به طور مشابه، برخی از انواع خاص نیز پشتیبانی نمی‌شوند (AXFR، OPT، و غیره)\&. گرچه systemd\-resolved رکوردهای منبع از انواع مختلف را تجزیه و اعتبارسنجی می‌کند، اما بسیار مهم است که کلاینت‌های استفاده‌کننده از این API درک کنند که داده‌های RR از شبکه سرچشمه می‌گیرند و باید پیش از استفاده به‌طور کامل اعتبارسنجی شوند\&. .PP متد \fBResolveService()\fR می‌تواند برای تحلیل یک رکورد سرویس DNS از نوع \fBSRV\fR، و همچنین نام‌های میزبان ارجاع‌شده در آن، و احتمالاً یک رکورد همراه DNS\-SD از نوع \fBTXT\fR حاوی فراداده‌های اضافی سرویس استفاده شود\&. مزیت اصلی استفاده از این متد نسبت به \fBResolveRecord()\fR با مشخص کردن نوع \fBSRV\fR این است که رکوردهای \fBSRV\fR و \fBTXT\fR و همچنین نام‌های میزبان ارجاع‌شده در SRV را در یک عملیات واحد تحلیل می‌کند\&. این متد به عنوان پارامتر یک نمایهٔ رابط شبکهٔ لینوکس، یک نام سرویس، یک نوع سرویس و یک دامنهٔ سرویس را دریافت می‌کند\&. این متد می‌تواند در سه حالت مختلف فراخوانی شود: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} برای تحلیل یک سرویس DNS\-SD، نام سرویس (مانند "Lennart\*(Aqs Files")، نوع سرویس (مانند "_webdav\&._tcp") و دامنه‌ای که باید در آن جستجو شود (مانند "local") را به عنوان سه پارامتر سرویس مشخص کنید\&. نام سرویس باید در قالب UTF\-8 باشد، و هیچ تبدیل IDNA در این حالت روی آن اعمال نمی‌شود (همان‌طور که مشخصات DNS\-SD الزامی کرده است)\&. با این حال، در صورت لزوم، تبدیل IDNA روی پارامتر دامنه اعمال می‌شود\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} برای تحلیل یک رکورد سادهٔ \fBSRV\fR، پارامتر نام سرویس را روی یک رشتهٔ خالی قرار دهید و نوع سرویس و دامنه را به درستی تنظیم کنید\&. (در صورت لزوم، تبدیل IDNA روی دامنه اعمال می‌شود\&.) .RE .sp .RS 4 .ie n \{\ \h'-04' 3.\h'+01'\c .\} .el \{\ .sp -1 .IP " 3." 4.2 .\} در روش دیگر، هر دو پارامتر نام و نوع سرویس را خالی بگذارید و نام کامل دامنهٔ رکورد \fBSRV\fR (یعنی با پیشوند نوع سرویس) را در پارامتر دامنه مشخص کنید\&. (در این حالت هیچ تبدیل IDNA اعمال نمی‌شود\&.) .RE .PP پارامتر \fIfamily\fR در متد \fBResolveService()\fR خانوادهٔ آدرس‌های مورد نظر برای تحلیل را کدگذاری می‌کند (از \fBAF_INET\fR، \fBAF_INET6\fR، یا \fBAF_UNSPEC\fR استفاده کنید)\&. در صورتی که این مورد فعال باشد (برای خاموش کردن تحلیل آدرس، از پرچم \fBNO_ADDRESS\fR استفاده کنید، به زیر مراجعه شود)\&. پارامتر \fIflags\fR چندین پرچم را می‌پذیرد که می‌توانند برای تغییر عملکرد عملیات تحلیل‌گر استفاده شوند\&. .PP پس از تکمیل، \fBResolveService()\fR آرایه‌ای از ساختارهای رکورد \fBSRV\fR را بازمی‌گرداند\&. هر آیتم شامل فیلدهای اولویت، وزن و درگاه و همچنین نام میزبان برای اتصال است، همان‌طور که در رکورد \fBSRV\fR کدگذاری شده است\&. بلافاصله پس از آن، آرایه‌ای از آدرس‌های این نام میزبان قرار دارد، که هر آیتم شامل نمایهٔ رابط، خانوادهٔ آدرس و داده‌های آدرس در یک آرایهٔ بایت است\&. به دنبال این آرایهٔ آدرس، نام میزبان متعارف‌شده می‌آید\&. پس از این آرایه از ساختارهای رکورد \fBSRV\fR، آرایه‌ای از آرایه‌های بایت می‌آید که رشته‌های RR از نوع TXT را کدگذاری می‌کند، در صورتی که جستجوهای DNS\-SD فعال باشند\&. پارامترهای بعدی نام، نوع و دامنهٔ متعارف سرویس هستند\&. این مقادیر ممکن است با پارامترهای ارسالی یکسان باشند یا نباشند\&. در نهایت، یک فیلد \fIflags\fR بازگردانده می‌شود که حاوی اطلاعاتی درباره عملیات تحلیل‌گر انجام‌شده است\&. .PP متد \fBResetStatistics()\fR شمارنده‌های آماری گوناگونی را که systemd\-resolved نگهداری می‌کند به صفر بازنشانی می‌نماید\&. (برای جزئیات، به ویژگی‌های آماری در زیر مراجعه کنید\&.) .PP متد \fBGetLink()\fR یک نمایهٔ رابط شبکه را می‌گیرد و مسیر شیء مربوط به شیء org\&.freedesktop\&.resolve1\&.Link متناظر با آن را برمی‌گرداند\&. .PP متد \fBSetLinkDNS()\fR سرورهای DNS را برای استفاده در یک رابط خاص تنظیم می‌کند\&. این متد (و متدهای بعدی) می‌توانند توسط نرم‌افزارهای مدیریت شبکه برای پیکربندی تنظیمات DNS به ازای هر رابط استفاده شوند\&. این متد یک نمایهٔ رابط شبکه و همچنین آرایه‌ای از رکوردهای آدرس IP سرورهای DNS را دریافت می‌کند\&. هر آیتم آرایه شامل یک خانوادهٔ آدرس (یا \fBAF_INET\fR یا \fBAF_INET6\fR) و به دنبال آن یک آرایهٔ ۴ بایتی یا ۱۶ بایتی با داده‌های خام آدرس است\&. این متد یک میان‌بر تک‌مرحله‌ای برای بازیابی شیء Link برای یک رابط شبکه با استفاده از \fBGetLink()\fR (به بالا مراجعه کنید) و سپس فراخوانی متد \fBSetDNS()\fR (به زیر مراجعه کنید) روی آن است\&. .PP متد \fBSetLinkDNSEx()\fR مشابه \fBSetLinkDNS()\fR است، اما اجازه می‌دهد یک درگاه IP (به جای درگاه پیش‌فرض ۵۳) و نام DNS برای هر سرور DNS مشخص شود\&. نام سرور برای نشان‌گذاری نام سرور (SNI) استفاده می‌شود که هنگام استفاده از DNS\-over\-TLS مفید است\&. مقایسه کنید با \fIDNS=\fR در \fBresolved.conf\fR(5)\&. .PP متد \fBSetLinkDefaultRoute()\fR مشخص می‌کند که آیا این پیوند باید به عنوان مسیر پیش‌فرض برای پرس‌وجوهای نام استفاده شود یا خیر\&. برای جزئیات، توضیحات مسیریابی نام را در \fBsystemd-resolved.service\fR(8) ببینید\&. .PP متد \fBSetLinkDomains()\fR دامنه‌های جستجو و مسیریابی را برای استفاده در یک رابط شبکهٔ خاص جهت جستجوهای DNS تنظیم می‌کند\&. این متد نمایهٔ رابط شبکه و آرایه‌ای از دامنه‌ها را دریافت می‌کند، که هر کدام دارای یک پارامتر بولی هستند که نشان می‌دهد آیا دامنهٔ مشخص‌شده باید به عنوان دامنهٔ جستجو استفاده شود (false)، یا فقط به عنوان دامنهٔ مسیریابی (true)\&. دامنه‌های جستجو برای تکمیل نام‌های تک‌بخشی به FQDN هنگام جستجوی نام‌های میزبان، و همچنین برای تصمیم‌گیری‌های مسیریابی در مورد اینکه پرس‌وجوهای ختم‌شده به آن دامنه به کدام رابط ارسال شوند، استفاده می‌شوند\&. دامنه‌های مسیریابی فقط برای تصمیم‌گیری‌های مسیریابی استفاده می‌شوند و برای صلاحیت‌سنجی نام‌های تک‌بخشی به کار نمی‌روند\&. دامنه‌های جستجو را به ترتیبی که باید استفاده شوند ارسال کنید\&. .PP متد \fBSetLinkLLMNR()\fR پشتیبانی از LLMNR را روی یک رابط شبکهٔ خاص فعال یا غیرفعال می‌کند\&. این متد یک نمایهٔ رابط شبکه و همچنین یک رشته را دریافت می‌کند که می‌تواند خالی یا یکی از مقادیر "yes"، "no" یا "resolve" باشد\&. در صورت خالی بودن، از تنظیم پیش‌فرض سراسری systemd برای LLMNR استفاده می‌شود\&. در صورت انتخاب "yes"، از LLMNR برای تحلیل نام‌های تک‌بخشی استفاده می‌شود و نام میزبان محلی در تمام LANهای محلی برای تحلیل LLMNR توسط همتایان ثبت می‌گردد\&. در صورت انتخاب "no"، پروتکل LLMNR به طور کامل روی این رابط خاموش می‌شود\&. در صورت انتخاب "resolve"، پروتکل LLMNR تنها برای تحلیل نام‌ها فعال می‌شود، اما نام میزبان محلی برای استفاده توسط سایر همتایان ثبت نخواهد شد\&. .PP به طور مشابه، متد \fBSetLinkMulticastDNS()\fR پشتیبانی از MulticastDNS را روی یک رابط خاص فعال یا غیرفعال می‌کند\&. این متد همان پارامترهای \fBSetLinkLLMNR()\fR توصیف‌شده در بالا را می‌پذیرد\&. .PP متد \fBSetLinkDNSSEC()\fR اعتبارسنجی DNSSEC را روی یک رابط شبکهٔ خاص فعال یا غیرفعال می‌کند\&. این متد یک نمایهٔ رابط شبکه و همچنین یک رشته را دریافت می‌کند که می‌تواند خالی یا یکی از مقادیر "yes"، "no" یا "allow\-downgrade" باشد\&. در صورت خالی بودن، از تنظیم پیش‌فرض سراسری سیستم برای DNSSEC استفاده می‌شود\&. در صورت انتخاب "yes"، اعتبارسنجی کامل DNSSEC برای تمام جستجوها انجام می‌شود\&. اگر سرور DNS انتخاب‌شده از DNSSEC پشتیبانی نکند، جستجوها در صورت استفاده از این حالت با شکست مواجه خواهند شد\&. در صورت انتخاب "no"، اعتبارسنجی DNSSEC به‌طور کامل غیرفعال می‌شود\&. در صورت انتخاب "allow\-downgrade"، اعتبارسنجی DNSSEC فعال می‌شود، اما اگر سرور انتخاب‌شده از آن پشتیبانی نکند به طور خودکار خاموش می‌گردد (که رفتار را در معرض حملات کاهش سطح یا downgrade قرار می‌دهد)\&. توجه داشته باشید که DNSSEC فقط برای DNS سنتی اعمال می‌شود، نه برای LLMNR یا MulticastDNS\&. .PP متد \fBSetLinkDNSSECNegativeTrustAnchors()\fR می‌تواند برای پیکربندی لنگرهای اعتماد منفی DNSSEC (یا NTAs) برای یک رابط شبکهٔ خاص استفاده شود\&. این متد یک نمایهٔ رابط شبکه و فهرستی از دامنه‌ها را به عنوان آرگومان دریافت می‌کند\&. .PP متد \fBSetLinkDNSOverTLS()\fR قابلیت DNS\-over\-TLS را فعال یا غیرفعال می‌کند\&. برای جزئیات، مقایسه کنید با \fIDNSOverTLS=\fR در \fBsystemd-resolved.service\fR(8)\&. .PP نرم‌افزارهای مدیریت شبکه که با systemd\-resolved یکپارچه می‌شوند باید \fBSetLinkDNS()\fR یا \fBSetLinkDNSEx()\fR، \fBSetLinkDefaultRoute()\fR، \fBSetLinkDomains()\fR و سایر متدها را پس از ظاهر شدن رابط در هسته (و در نتیجه پس از تخصیص نمایهٔ رابط شبکه)، اما قبل از فعال شدن رابط شبکه (تنظیم شدن \fBIFF_UP\fR) فراخوانی کنند تا تمام تنظیمات در تمام مدتی که رابط شبکه بالا (up) است اعمال شوند\&. با این حال، تغییر تنظیمات در زمان فعال بودن رابط نیز ایمن است\&. از \fBRevertLink()\fR (شرح داده شده در زیر) برای بازنشانی تمام تنظیمات مربوط به هر رابط استفاده کنید\&. .PP متد \fBRevertLink()\fR می‌تواند برای بازگرداندن تمام تنظیمات مربوط به هر پیوند که در بالا شرح داده شد به مقادیر پیش‌فرض استفاده شود\&. .PP متد \fBFlushCaches()\fR تمام کش‌های رکورد منبع نگهداری‌شده توسط تحلیل‌گر را پاکسازی می‌کند و تضمین می‌نماید که هرگونه جستجوی بعدی مجدداً پاسخ‌های خود را از منابع مربوطه‌شان درخواست کند\&. .PP متد \fBResetServerFeatures()\fR هرگونه اطلاعات ویژگی‌های آموخته‌شده درباره سرورهای دوردست DNS را پاکسازی می‌کند\&. این امر اطمینان می‌دهد که جستجوهای بعدی در ابتدا دوباره در بالاترین سطح ویژگی پروتکل DNS تلاش شوند، که احتمالاً نیاز به یک چرخهٔ کاهش سطح (که بالقوه کند است) برای تشخیص مجدد سطح ویژگی پشتیبانی‌شده دارد\&. .PP متد \fBRegisterService()\fR می‌تواند برای ثبت یک سرویس DNS\-SD روی میزبان استفاده شود\&. این قابلیت ارتباط نزدیکی با قابلیت ارائه‌شده توسط فایل‌های \fBsystemd.dnssd\fR(5) دارد\&. این متد یک رشتهٔ شناسهٔ سرور را به عنوان اولین پارامتر دریافت می‌کند (این فقط یک شناسهٔ محلی است، و باید طوری انتخاب شود که نه با نام پایهٔ فایل‌های *\&.dnssd و نه با نام‌های انتخاب‌شده توسط سایر کلاینت‌های IPC تداخل داشته باشد)\&. همچنین یک رشتهٔ الگوی نام برای نام سرویس DNS\-SD قابل مشاهده در شبکه دریافت می‌کند\&. این رشته تحت تأثیر بسط مشخص‌کننده‌ها (specifier expansion) قرار می‌گیرد، همان‌طور که برای تنظیم \fIName=\fR در فایل‌های *\&.dnssd مستند شده است\&. این متد همچنین یک رشتهٔ نوع سرویس حاوی نوع سرویس DNS\-SD و همچنین یک درگاه IP، و یک جفت اولویت/وزن برای رکورد DNS\-SD SRV دریافت می‌کند\&. در نهایت، آرایه‌ای از داده‌های رکورد TXT را می‌گیرد\&. این متد یک مسیر شیء را برمی‌گرداند که می‌تواند به عنوان دستگیره برای سرویس ثبت‌شده استفاده شود\&. .PP متد \fBUnregisterService()\fR اثر \fBRegisterService()\fR را خنثی کرده و یک سرویس DNS\-SD را که قبلاً از طریق IPC ایجاد شده بود، دوباره حذف می‌کند\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBپارامتر پرچم‌ها (The Flags Parameter)\fR .RS 4 .PP چهار متد بالا یک مقدار پرچم ۶۴ بیتی را می‌پذیرند و بازمی‌گردانند\&. در بیشتر موارد ارسال مقدار 0 کافی و توصیه‌شده است\&. با این حال، پرچم‌های زیر برای تغییر رفتار جستجو تعریف شده‌اند: .sp .if n \{\ .RS 4 .\} .nf /* ورودی+خروجی: پروتکل/دامنه */ #define SD_RESOLVED_DNS (UINT64_C(1) << 0) #define SD_RESOLVED_LLMNR_IPV4 (UINT64_C(1) << 1) #define SD_RESOLVED_LLMNR_IPV6 (UINT64_C(1) << 2) #define SD_RESOLVED_MDNS_IPV4 (UINT64_C(1) << 3) #define SD_RESOLVED_MDNS_IPV6 (UINT64_C(1) << 4) /* ورودی: محدودیت‌ها */ #define SD_RESOLVED_NO_CNAME (UINT64_C(1) << 5) #define SD_RESOLVED_NO_TXT (UINT64_C(1) << 6) #define SD_RESOLVED_NO_ADDRESS (UINT64_C(1) << 7) #define SD_RESOLVED_NO_SEARCH (UINT64_C(1) << 8) #define SD_RESOLVED_NO_VALIDATE (UINT64_C(1) << 10) #define SD_RESOLVED_NO_SYNTHESIZE (UINT64_C(1) << 11) #define SD_RESOLVED_NO_CACHE (UINT64_C(1) << 12) #define SD_RESOLVED_NO_ZONE (UINT64_C(1) << 13) #define SD_RESOLVED_NO_TRUST_ANCHOR (UINT64_C(1) << 14) #define SD_RESOLVED_NO_NETWORK (UINT64_C(1) << 15) #define SD_RESOLVED_NO_STALE (UINT64_C(1) << 24) #define SD_RESOLVED_RELAX_SINGLE_LABEL (UINT64_C(1) << 25) /* خروجی: امنیت */ #define SD_RESOLVED_AUTHENTICATED (UINT64_C(1) << 9) #define SD_RESOLVED_CONFIDENTIAL (UINT64_C(1) << 18) /* خروجی: مبدأ */ #define SD_RESOLVED_SYNTHETIC (UINT64_C(1) << 19) #define SD_RESOLVED_FROM_CACHE (UINT64_C(1) << 20) #define SD_RESOLVED_FROM_ZONE (UINT64_C(1) << 21) #define SD_RESOLVED_FROM_TRUST_ANCHOR (UINT64_C(1) << 22) #define SD_RESOLVED_FROM_NETWORK (UINT64_C(1) << 23) .fi .if n \{\ .RE .\} .PP در ورودی، پنج پرچم نخست پروتکل‌های مورد استفاده برای جستجو را کنترل می‌کنند\&. این پرچم‌ها به ترتیب به DNS تک‌پخشی (unicast) کلاسیک، LLMNR از طریق IPv4/UDP و IPv6/UDP، و همچنین MulticastDNS از طریق IPv4/UDP و IPv6/UDP اشاره دارند\&. اگر تمام این پنج بیت در ورودی خاموش (off) باشند (که اکیداً توصیه می‌شود)، جستجو از طریق تمام پروتکل‌های مناسب برای آن جستجوی خاص انجام خواهد شد\&. توجه داشته باشید که این پرچم‌ها فقط به عنوان فیلتر عمل می‌کنند و نمی‌توانند انجام یک جستجو را از طریق یک پروتکل اجبار کنند\&. به‌طور مشخص، systemd\-resolved فقط پرس‌وجوهای درون دامنهٔ سطح‌بالای (TLD) \&.local را به MulticastDNS هدایت می‌کند (به علاوه برخی دامنه‌های آدرس جستجوی معکوس)، و نام‌های تک‌بخشی را به LLMNR (به علاوه برخی دامنه‌های جستجوی معکوس آدرس) هدایت می‌نماید\&. هیچ‌یک از این موارد را به سرورهای DNS تک‌پخشی هدایت نخواهد کرد\&. همچنین، LLMNR و Multicast DNS را تنها روی رابط‌هایی انجام می‌دهد که برای چندپخشی (multicast) مناسب باشند\&. .PP در خروجی، این پنج پرچم نشان می‌دهند که کدام پروتکل برای اجرای عملیات استفاده شده است، و در نتیجه داده‌ها از کجا یافت شده‌اند\&. .PP کاربرد اصلی این پنج پرچم برای جستجوهای تکمیلی بر اساس داده‌های DNS دریافت‌شده در مراحل قبلی است\&. در این حالت، اغلب ایدهٔ خوبی است که جستجوی تکمیلی را به پروتکلی محدود کنید که برای کشف اولین نتیجهٔ DNS استفاده شده بود\&. .PP پرچم NO_CNAME کنترل می‌کند که آیا رکوردهای منبع CNAME/DNAME در حین جستجو باید دنبال شوند یا خیر\&. این پرچم فقط در ورودی در دسترس است، و هیچ‌یک از توابع آن را در خروجی بازنمی‌گردانند\&. اگر در حین تحلیل یک نام میزبان یک رکورد CNAME/DNAME کشف شود، به جای آن یک خطا برگردانده می‌شود\&. به طور پیش‌فرض، زمانی که این پرچم خاموش است، رکوردهای CNAME/DNAME دنبال می‌شوند\&. .PP پرچم‌های NO_TXT و NO_ADDRESS تنها بر عملکرد متد \fBResolveService()\fR تأثیر می‌گذارند\&. این پرچم‌ها فقط برای ورودی تعریف شده‌اند، نه خروجی\&. اگر NO_TXT تنظیم شده باشد، جستجوی رکورد DNS\-SD TXT RR در همان عملیات انجام نمی‌شود\&. اگر NO_ADDRESS تنظیم شده باشد، نام‌های میزبان کشف‌شده به‌طور ضمنی به آدرس‌های خود ترجمه نمی‌شوند\&. .PP پرچم NO_SEARCH منطق دامنهٔ جستجو (search domain) را غیرفعال می‌کند\&. این پرچم تنها برای ورودی در \fBResolveHostname()\fR تعریف شده است\&. هنگام تعیین این پرچم، نام‌های میزبان تک‌بخشی با استفاده از دامنه‌های جستجوی تعریف‌شده (در صورت وجود) صلاحیت‌سنجی نمی‌شوند\&. توجه داشته باشید که \fBResolveRecord()\fR هرگز نام‌های دامنهٔ تک‌بخشی را با استفاده از دامنه‌های جستجو تکمیل نمی‌کند\&. همچنین توجه داشته باشید که نام‌های میزبان چندبخشی هرگز مشمول بسط لیست جستجو نمی‌شوند\&. .PP پرچم NO_VALIDATE می‌تواند برای غیرفعال کردن اعتبارسنجی از طریق DNSSEC تنظیم شود، حتی اگر در حالت عادی از آن استفاده می‌شد\&. .PP شش پرچم بعدی امکان غیرفعال کردن منابع خاصی را در طول فرایند تحلیل فراهم می‌کنند\&. پرچم NO_SYNTHESIZE رکوردهای مصنوعی (مانند نام میزبان محلی) را غیرفعال می‌کند؛ برای اطلاعات بیشتر بخش SYNTHETIC RECORDS را در \fBsystemd-resolved.service\fR(8) ببینید\&. پرچم NO_CACHE استفاده از کش رکوردهای تحلیل‌شدهٔ قبلی را غیرفعال می‌کند\&. پرچم NO_ZONE پاسخ‌ها با استفاده از رکوردهای منبع عمومی LLMNR/mDNS ثبت‌شده به‌صورت محلی را غیرفعال می‌نماید\&. پرچم NO_TRUST_ANCHOR پاسخ‌ها با استفاده از لنگرهای اعتماد پیکربندی‌شده به‌صورت محلی را غیرفعال می‌کند\&. پرچم NO_NETWORK الزامی می‌کند که تمام پاسخ‌ها بدون استفاده از شبکه، یعنی یا از منابع محلی یا از کش ارائه شوند\&. پرچم NO_STALE می‌تواند برای جلوگیری از پاسخ دادن به درخواست با رکوردهای منقضی‌شده تنظیم شود\&. .PP بیت AUTHENTICATED تنها در پرچم‌های خروجی این چهار تابع تعریف شده است\&. اگر تنظیم شده باشد، داده‌های بازگردانده‌شده کاملاً احراز هویت و اعتبارسنجی شده‌اند\&. به‌طور مشخص، این بیت برای تمام داده‌های محافظت‌شده با DNSSEC تنظیم می‌شود که یک زنجیرهٔ اعتماد کامل برای آن‌ها به یک لنگر دامنهٔ مورد اعتماد ایجاد شده باشد\&. همچنین برای داده‌های سنتز‌شده به‌صورت محلی، مانند "localhost" یا داده‌های برگرفته از /etc/hosts تنظیم می‌گردد\&. علاوه بر این، برای تمام رکوردهای LLMNR یا mDNS که از میزبان محلی سرچشمه می‌گیرند نیز تنظیم می‌شود\&. برنامه‌هایی که برای عملکرد خود به داده‌های معتبر و احرازشدهٔ RR نیاز دارند، باید این پرچم را قبل از اعتماد به داده‌ها بررسی کنند\&. توجه داشته باشید که systemd\-resolved هرگز داده‌های بی‌اعتبارشده را بازنمی‌گرداند، بنابراین این پرچم صرفاً به فرد امکان می‌دهد مواردی را که داده‌ها معتبر و قابل اعتماد شناخته می‌شوند، از مواردی که شواهدی مبنی بر احراز نشدن «به‌حق» داده‌ها وجود دارد (که شامل مواردی است که پروتکل یا سرور زیربنایی از احراز هویت داده‌ها پشتیبانی نمی‌کند) تشخیص دهد\&. .PP پرچم CONFIDENTIAL به این معنی است که پرس‌وجو از طریق کانال‌های رمزگذاری‌شده تحلیل شده یا هرگز از این سیستم خارج نشده است\&. .PP پنج پرچم بیتی بعدی در خروجی استفاده می‌شوند و اطلاعاتی درباره منشأ و مبدأ پاسخ ارائه می‌دهند\&. مقدار FROM_SYNTHETIC به این معنی است که پرس‌وجو (حداقل به‌طور جزئی) به‌صورت محلی سنتز شده است\&. مقدار FROM_CACHE به این معنی است که به پرس‌وجو (حداقل به‌طور جزئی) با استفاده از حافظهٔ کش پاسخ داده شده است\&. مقدار FROM_ZONE به این معنی است که به پرس‌وجو (حداقل به‌طور جزئی) بر اساس رکوردهای عمومی ثبت‌شدهٔ محلی پاسخ داده شده است\&. مقدار FROM_TRUST_ANCHOR به این معنی است که به پرس‌وجو (حداقل به‌طور جزئی) با استفاده از لنگرهای اعتماد محلی پاسخ داده شده است\&. مقدار FROM_NETWORK به این معنی است که به پرس‌وجو (حداقل به‌طور جزئی) با استفاده از شبکه پاسخ داده شده است\&. .RE .SS "ویژگی‌ها (Properties)" .PP ویژگی‌های \fILLMNR\fR و \fIMulticastDNS\fR گزارش می‌دهند که آیا LLMNR و MulticastDNS (به‌صورت سراسری) فعال هستند یا خیر\&. هر کدام می‌توانند یکی از مقادیر "yes"، "no" و "resolve" باشند\&. به \fBSetLinkLLMNR()\fR و \fBSetLinkMulticastDNS()\fR در بالا مراجعه کنید\&. .PP ویژگی \fILLMNRHostname\fR شامل نام میزبانی است که در حال حاضر از طریق LLMNR در شبکه در معرض دید قرار دارد\&. این مقدار معمولاً از نام میزبان سیستم پیروی می‌کند همان‌طور که ممکن است از طریق \fBgethostname\fR(3) پرس‌وجو شود، اما اگر تداخلی در شبکه شناسایی شود ممکن است تفاوت داشته باشد\&. .PP ویژگی‌های \fIDNS\fR و \fIDNSEx\fR شامل آرایه‌هایی از تمام سرورهای DNS هستند که در حال حاضر توسط systemd\-resolved استفاده می‌شوند\&. \fIDNS\fR حاوی اطلاعاتی مشابه داده‌های سرور DNS در /run/systemd/resolve/resolv\&.conf است\&. هر ساختار در این آرایه شامل یک نمایهٔ عددی رابط شبکه، یک خانوادهٔ آدرس، و یک آرایهٔ بایت حاوی آدرس سرور DNS است (با طول ۴ بایت برای IPv4 یا ۱۶ بایت برای IPv6)\&. \fIDNSEx\fR مشابه است، اما علاوه بر این شامل درگاه IP و نام سرور (مورد استفاده برای نشان‌گذاری نام سرور، SNI) می‌باشد\&. هر دو آرایه حاوی سرورهای DNS پیکربندی‌شده در سطح سیستم هستند، از جمله مواردی که احتمالاً از یک /etc/resolv\&.conf خارجی خوانده شده‌اند یا در تنظیم \fIDNS=\fR در /etc/systemd/resolved\&.conf تعیین شده‌اند، و همچنین شامل اطلاعات سرور DNS به ازای هر رابط که از \fBsystemd-networkd\fR(8) دریافت شده یا توسط نرم‌افزار خارجی از طریق \fBSetLinkDNS()\fR یا \fBSetLinkDNSEx()\fR (به بالا مراجعه کنید) پیکربندی شده است\&. نمایهٔ رابط شبکه برای سرویس‌های پیکربندی‌شده در سطح سیستم مقدار 0 و برای سرورهای به ازای هر پیوند غیر صفر خواهد بود\&. .PP ویژگی‌های \fIFallbackDNS\fR و \fIFallbackDNSEx\fR شامل آرایه‌هایی از تمام سرورهای DNS هستند که در صورت وجود به عنوان سرورهای پشتیبان پیکربندی شده‌اند، با استفاده از همان ساختاری که برای \fIDNS\fR و \fIDNSEx\fR در بالا شرح داده شد\&. برای آگاهی از زمان استفاده از این سرورها، توضیحات \fIFallbackDNS=\fR را در \fBresolved.conf\fR(5) ببینید\&. .PP ویژگی‌های \fICurrentDNSServer\fR و \fICurrentDNSServerEx\fR سروری را مشخص می‌کنند که در حال حاضر برای تحلیل پرس‌وجو استفاده می‌شود، با همان ساختاری که برای یک ورودی منفرد در آرایه‌های \fIDNS\fR و \fIDNSEx\fR در بالا توصیف شد\&. .PP به طور مشابه، ویژگی \fIDomains\fR شامل آرایه‌ای از تمام دامنه‌های جستجو و مسیریابی است که در حال حاضر توسط systemd\-resolved استفاده می‌شوند\&. هر ورودی شامل یک نمایهٔ رابط شبکه (باز هم مقدار 0 ورودی‌های سراسری سیستم را کدگذاری می‌کند)، نام واقعی دامنه، و اینکه آیا ورودی فقط برای مسیریابی استفاده می‌شود (true) یا هم برای مسیریابی و هم برای جستجو (false) می‌باشد\&. .PP ویژگی \fITransactionStatistics\fR شامل اطلاعاتی درباره تعداد تراکنش‌هایی است که systemd\-resolved پردازش کرده است\&. این ویژگی شامل یک جفت شمارندهٔ ۶۴ بیتی بدون علامت است که اولی شامل تعداد تراکنش‌های جاری و در حال اجرا، و دومی تعداد کل تراکنش‌هایی است که systemd\-resolved در حال پردازش آن‌هاست یا پردازش کرده است\&. مقدار دوم می‌تواند با استفاده از متد \fBResetStatistics()\fR که در بالا شرح داده شد، بازنشانی شود\&. توجه داشته باشید که تعداد تراکنش‌ها مستقیماً با تعداد فراخوانی‌های متد گذرگاه تحلیل‌گر صادرشده تطابق ندارد\&. در حالی که جستجوهای ساده معمولاً فقط به یک تراکنش منفرد نیاز دارند، جستجوهای پیچیده‌تر ممکن است به موارد بیشتری منجر شوند، برای مثال هنگامی که CNAMEها یا DNSSEC در حال استفاده هستند\&. .PP ویژگی \fICacheStatistics\fR حاوی اطلاعاتی درباره عملیات کش اجراشده تا این لحظه است\&. این ویژگی سه شمارندهٔ ۶۴ بیتی را ارائه می‌دهد: اولی تعداد کل ورودی‌های فعلی کش (اعم از مثبت و منفی)، دومی تعداد دفعات اصابت کش (cache hits)، و سومی تعداد دفعات عدم اصابت کش (cache misses)\&. دو شمارندهٔ آخر می‌توانند با استفاده از \fBResetStatistics()\fR (به بالا مراجعه کنید) بازنشانی شوند\&. .PP ویژگی \fIDNSSEC\fR وضعیت فعلی اعتبارسنجی DNSSEC را مشخص می‌کند\&. این مقدار یکی از موارد "yes" (اعتبارسنجی اجباری است)، "no" (هیچ اعتبارسنجی انجام نمی‌شود)، "allow\-downgrade" (در صورتی که سرور DNS فعلی از آن پشتیبانی کند اعتبارسنجی انجام می‌شود) است\&. توضیحات \fIDNSSEC=\fR در \fBresolved.conf\fR(5) را ببینید\&. .PP ویژگی \fIDNSSECStatistics\fR حاوی اطلاعاتی درباره اعتبارسنجی‌های DNSSEC اجراشده تا کنون است\&. این ویژگی شامل چهار شمارندهٔ ۶۴ بیتی است: تعداد اعتبارسنجی‌های امن (secure)، ناامن (insecure)، جعلی (bogus)، و نامعین (indeterminate) در DNSSEC تا این لحظه\&. این شمارنده‌ها برای هر RRset اعتبارسنجی‌شده، و هر اثبات عدم وجود افزایش می‌یابند\&. شمارندهٔ secure برای هر عملیاتی که با موفقیت یک پاسخ امضاشده را تأیید کند افزایش می‌یابد؛ شمارندهٔ insecure برای هر عملیاتی که با موفقیت تأیید کند که یک پاسخ بدون امضا به‌حق بدون امضا است افزایش می‌یابد؛ شمارندهٔ bogus برای هر عملیاتی افزایش می‌یابد که اعتبارسنجی در آن تطابق نیافته و احتمالاً داده‌ها دستکاری شده‌اند\&. در نهایت، شمارندهٔ indeterminate برای هر عملیاتی افزایش می‌یابد که به دلیل در دسترس نبودن کلیدهای لازم یا ناشناخته بودن الگوریتم‌های رمزنگاری کامل نشده است\&. .PP ویژگی بولی \fIDNSSECSupported\fR گزارش می‌دهد که آیا DNSSEC فعال است و آیا سرورهای DNS انتخاب‌شده از آن پشتیبانی می‌کنند یا خیر\&. این ویژگی اطلاعات مربوط به تنظیمات DNS سراسری سیستم و به ازای هر پیوند (به زیر مراجعه کنید) را ترکیب می‌کند، و تنها در صورتی true را گزارش می‌دهد که DNSSEC در هر رابطی که DNS برای آن پیکربندی شده و برای تنظیمات سراسری سیستم (در صورت وجود) فعال بوده و پشتیبانی شود\&. توجه داشته باشید که systemd\-resolved فرض می‌کند DNSSEC توسط سرورهای DNS پشتیبانی می‌شود مگر اینکه تأیید کند چنین نیست\&. بنابراین، مقدار گزارش‌شده ممکن است در ابتدا true باشد تا زمانی که اولین تراکنش‌ها اجرا شوند\&. .PP ویژگی بولی \fIDNSOverTLS\fR گزارش می‌دهد که آیا DNS\-over\-TLS فعال است یا خیر\&. .PP ویژگی \fIResolvConfMode\fR نحوهٔ مدیریت /etc/resolv\&.conf روی میزبان را نشان می‌دهد\&. در حال حاضر، مقادیر ممکن عبارتند از "uplink"، "stub"، "static" (این سه مورد با سه فایل مختلف ارائه‌شده توسط systemd\-resolved\&.service مطابقت دارند)، "foreign" (فایل توسط مدیر سیستم یا سرویس دیگری مدیریت می‌شود، و systemd\-resolved\&.service تنها آن را مصرف می‌کند)، "missing" (فایل /etc/resolv\&.conf وجود ندارد)\&. .PP ویژگی \fIDNSStubListener\fR گزارش می‌دهد که آیا شنوندهٔ خرد (stub listener) روی درگاه ۵۳ فعال است یا خیر\&. مقادیر ممکن عبارتند از "yes" (فعال)، "no" (غیرفعال)، "udp" (تنها شنوندهٔ UDP فعال است)، و "tcp" (تنها شنوندهٔ TCP فعال است)\&. .PP ویژگی \fIDNSSECNegativeTrustAnchors\fR حاوی فهرستی از لنگرهای اعتماد منفی DNSSEC شناخته‌شده است و فهرستی از دامنه‌ها را در بر دارد\&. .SH "شیء پیوند (LINK OBJECT)" .sp .if n \{\ .RS 4 .\} .nf node /org/freedesktop/resolve1/link/_1 { interface org\&.freedesktop\&.resolve1\&.Link { methods: SetDNS(in a(iay) addresses); SetDNSEx(in a(iayqs) addresses); SetDomains(in a(sb) domains); SetDefaultRoute(in b enable); SetLLMNR(in s mode); SetMulticastDNS(in s mode); SetDNSOverTLS(in s mode); SetDNSSEC(in s mode); SetDNSSECNegativeTrustAnchors(in as names); Revert(); properties: @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly t ScopesMask = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly a(iay) DNS = [\&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly a(iayqs) DNSEx = [\&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly (iay) CurrentDNSServer = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly (iayqs) CurrentDNSServerEx = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly a(sb) Domains = [\&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly b DefaultRoute = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s LLMNR = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s MulticastDNS = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s DNSOverTLS = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s DNSSEC = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly as DNSSECNegativeTrustAnchors = [\*(Aq\&.\&.\&.\*(Aq, \&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly b DNSSECSupported = \&.\&.\&.; }; interface org\&.freedesktop\&.DBus\&.Peer { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Introspectable { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Properties { \&.\&.\&. }; }; .fi .if n \{\ .RE .\} .sp .PP برای هر رابط شبکهٔ لینوکس یک شیء «Link» ایجاد می‌شود که پیکربندی و وضعیت DNS مربوط به آن پیوند را ارائه می‌دهد\&. از \fBGetLink()\fR روی رابط Manager برای بازیابی مسیر شیء مربوط به یک شیء پیوند با داشتن نمایهٔ رابط شبکه (به بالا مراجعه کنید) استفاده نمایید\&. .SS "متدها (Methods)" .PP متدهای مختلف ارائه‌شده توسط رابط Link معادل همتایان هم‌نام خود در رابط Manager هستند؛ برای مثال \fBSetDNS()\fR روی شیء Link به \fBSetLinkDNS()\fR روی شیء Manager نگاشت می‌شود، با این تفاوت اصلی که دومی انتظار دارد یک نمایهٔ رابط مشخص شود\&. فراخوانی متدها روی رابط Manager این مزیت را دارد که رفت‌وبرگشت‌ها (roundtrips) را کاهش می‌دهد، زیرا نیازی به درخواست اولیهٔ مسیر شیء Link از طریق \fBGetLink()\fR پیش از فراخوانی متدها نیست\&. همین رابطه برای \fBSetDNSEx()\fR، \fBSetDomains()\fR، \fBSetDefaultRoute()\fR، \fBSetLLMNR()\fR، \fBSetMulticastDNS()\fR، \fBSetDNSOverTLS()\fR، \fBSetDNSSEC()\fR، \fBSetDNSSECNegativeTrustAnchors()\fR، و \fBRevert()\fR نیز برقرار است\&. برای جزئیات بیشتر درباره این متدها، مستندات Manager در بالا را ببینید\&. .SS "ویژگی‌ها (Properties)" .PP ویژگی \fIScopesMask\fR تعریف می‌کند که کدام حوزه‌های تحلیل‌گر در حال حاضر روی این رابط فعال هستند\&. این فیلد عددی ۶۴ بیتی بدون علامت، یک ماسک بیتی متشکل از زیرمجموعه‌ای از بیت‌های پارامتر flags توصیف‌شده در بالا است\&. به‌طور مشخص، ممکن است بیت‌های DNS، LLMNR و MDNS (اولی در دو حالت IPv4 و IPv6) در آن تنظیم شده باشند\&. هر بیت منفرد زمانی تنظیم می‌شود که پروتکل برای یک رابط خاص اعمال شود و برای آن فعال باشد؛ در غیر این صورت تنظیم نشده است\&. به‌طور مشخص، یک رابط با قابلیت چندپخشی (multicast) در وضعیت "UP" همراه با یک آدرس IP برای LLMNR یا MulticastDNS مناسب است، و هر رابطی که UP باشد و آدرس IP داشته باشد برای DNS مناسب است\&. به رابطهٔ بین بیت‌های ارائه‌شده در اینجا با ویژگی‌های LLMNR و MulticastDNS که در رابط Link نیز ارائه شده‌اند توجه کنید؛ ویژگی‌های بعدی نشان می‌دهند چه چیزی برای استفاده در رابط *پیکربندی* شده است، در حالی که فیلد اول نشان می‌دهد با در نظر گرفتن توانایی‌های رابط، در عمل چه چیزی روی رابط استفاده می‌شود\&. .PP ویژگی \fIDNSSECSupported\fR یک فیلد بولی را ارائه می‌دهد که نشان می‌دهد آیا DNSSEC در حال حاضر روی رابط پیکربندی شده و مورد استفاده است یا خیر\&. توجه داشته باشید که اگر DNSSEC روی یک رابط فعال باشد، در دسترس فرض می‌شود تا زمانی که شناسایی شود سرور پیکربندی‌شده در واقع از آن پشتیبانی نمی‌کند\&. بنابراین، این ویژگی ممکن است در ابتدا گزارش دهد که DNSSEC روی رابط پشتیبانی می‌شود\&. .PP ویژگی \fIDefaultRoute\fR یک فیلد بولی را ارائه می‌دهد که نشان می‌دهد آیا از این رابط به عنوان مسیر پیش‌فرض برای پرس‌وجوهای نام استفاده خواهد شد یا خیر\&. به \fBSetLinkDefaultRoute()\fR در بالا مراجعه کنید\&. .PP سایر ویژگی‌ها وضعیت تنظیمات پیکربندی مختلف برای پیوند را منعکس می‌کنند که می‌توانند با فراخوانی متدهای مختلف مانند \fBSetDNS()\fR یا \fBSetLLMNR()\fR تنظیم شوند\&. .SH "خطاهای متداول (COMMON ERRORS)" .PP بسیاری از متدهای گذرگاه که systemd\-resolved ارائه می‌دهد (به‌ویژه متدهای تحلیل‌گر مانند \fBResolveHostname()\fR روی رابط Manager) ممکن است برخی از خطاهای زیر را بازگردانند: .PP \fBorg\&.freedesktop\&.resolve1\&.NoNameServers\fR .RS 4 هیچ سرور DNS مناسبی برای تحلیل یک درخواست پیدا نشد\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.InvalidReply\fR .RS 4 پاسخی از سرور DNS انتخاب‌شده دریافت شد که مفهوم نبود\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.NoSuchRR\fR .RS 4 نام درخواستی وجود دارد، اما هیچ رکورد منبعی از نوع درخواست‌شده برای آن وجود ندارد\&. (این همان حالت NODATA در DNS است)\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.CNameLoop\fR .RS 4 جستجو به دلیل شناسایی یک حلقهٔ CNAME یا DNAME با شکست مواجه شد\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.Aborted\fR .RS 4 جستجو لغو شد زیرا پروتکل انتخاب‌شده در حین انجام عملیات از دسترس خارج شد\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.NoSuchService\fR .RS 4 جستجوی سرویس موفقیت‌آمیز بود، اما رکورد \fBSRV\fR گزارش داد که این سرویس در دسترس نیست\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.DnssecFailed\fR .RS 4 پاسخ دریافتی از اعتبارسنجی DNSSEC عبور نکرد\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.NoTrustAnchor\fR .RS 4 هیچ زنجیرهٔ اعتمادی برای پاسخ به یک لنگر اعتماد DNSSEC پیکربندی‌شده برقرار نشد\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.ResourceRecordTypeUnsupported\fR .RS 4 نوع رکورد منبع درخواستی روی سرورهای DNS انتخاب‌شده پشتیبانی نمی‌شود\&. این خطا برای مثال زمانی ایجاد می‌شود که یک رکورد RRSIG از یک سرور DNS که از DNSSEC پشتیبانی نمی‌کند، درخواست شود\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.NoSuchLink\fR .RS 4 هیچ رابط شبکه‌ای با نمایهٔ رابط شبکهٔ مشخص‌شده وجود ندارد\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.LinkBusy\fR .RS 4 تغییر پیکربندی درخواستی انجام نشد زیرا \fBsystemd-networkd\fR(8) قبلاً کنترل رابط را به دست گرفته و داده‌های پیکربندی را برای آن فراهم کرده است\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.NetworkDown\fR .RS 4 جستجوی درخواستی با شکست مواجه شد زیرا سیستم در حال حاضر به هیچ شبکهٔ مناسبی متصل نیست\&. .sp افزوده‌شده در نسخه 246\&. .RE .PP \fBorg\&.freedesktop\&.resolve1\&.DnsError\&.NXDOMAIN\fR، \fBorg\&.freedesktop\&.resolve1\&.DnsError\&.REFUSED\fR، \&.\&.\&. .RS 4 جستجو با یک کد بازگشتی DNS که حاکی از شکست است، با خطا مواجه شد\&. نام‌های خطای استفاده‌شده به عنوان پسوند در اینجا توسط IANA در \m[blue]\fBکدهای بازگشتی DNS (DNS RCODEs)\fR\m[]\&\s-2\u[4]\d\s+2 تعریف شده‌اند\&. .sp افزوده‌شده در نسخه 246\&. .RE .SH "مثال‌ها (EXAMPLES)" .PP \fBمثال\ \&۱.\ \&درون‌نگری org\&.freedesktop\&.resolve1\&.Manager روی گذرگاه\fR .sp .if n \{\ .RS 4 .\} .nf $ gdbus introspect \-\-system \e \-\-dest org\&.freedesktop\&.resolve1 \e \-\-object\-path /org/freedesktop/resolve1 .fi .if n \{\ .RE .\} .PP \fBمثال\ \&۲.\ \&درون‌نگری org\&.freedesktop\&.resolve1\&.Link روی گذرگاه\fR .sp .if n \{\ .RS 4 .\} .nf $ gdbus introspect \-\-system \e \-\-dest org\&.freedesktop\&.resolve1 \e \-\-object\-path /org/freedesktop/resolve1/link/_11 .fi .if n \{\ .RE .\} .SH "نسخه‌بندی (VERSIONING)" .PP این رابط‌های D\-Bus از \m[blue]\fBدستورالعمل‌های معمول نسخه‌بندی رابط\fR\m[]\&\s-2\u[5]\d\s+2 پیروی می‌کنند\&. .SH "همچنین ببینید (SEE ALSO)" .PP \fBsystemd\fR(1), \fBsystemd-resolved.service\fR(8), \fBresolvectl\fR(1) .SH "نکات (NOTES)" .IP " 1." 4 نوشتن مدیران پیکربندی شبکه (Writing Network Configuration Managers) .RS 4 \%https://wiki.freedesktop.org/www/Software/systemd/writing-network-configuration-managers .RE .IP " 2." 4 نوشتن کلاینت‌های تحلیل‌گر نام (Writing Resolver Clients) .RS 4 \%https://wiki.freedesktop.org/www/Software/systemd/writing-resolver-clients .RE .IP " 3." 4 RFC\ \&1035 .RS 4 \%https://www.ietf.org/rfc/rfc1035.txt .RE .IP " 4." 4 کدهای بازگشتی DNS (DNS RCODEs) .RS 4 \%https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6 .RE .IP " 5." 4 دستورالعمل‌های معمول نسخه‌بندی رابط .RS 4 \%https://0pointer.de/blog/projects/versioning-dbus.html .RE