| KDIG(1) | Knot DNS | KDIG(1) |
نام (NAME)
kdig - ابزار پیشرفته پرسوجوی DNS
خلاصه دستور (SYNOPSIS)
kdig [تنظیمات-عمومی] [پرسوجو [تنظیمات]]...
kdig -h
توضیحات (DESCRIPTION)
این ابزار یک یا چند پرسوجوی DNS را به یک سرویسدهنده نام ارسال میکند. هر پرسوجو میتواند دارای تنظیمات جداگانه باشد، یا بهصورت سراسری از طریق تنظیمات-عمومی مشخص شود که باید پیش از تعیین پرسوجو قرار گیرد.
پارامترها
- پرسوجو
- name | -q name | -x address | -G tapfile
- تنظیمات-عمومی, تنظیمات
- [query_class] [query_type] [@server]... [گزینهها]
- name
- نام دامنهای است که باید جستجو شود.
- server
- نام دامنه یا یک نشانی IPv4 یا IPv6 از سرویسدهنده نام است که پرسوجو به آن ارسال میشود. یک پورت اضافی را میتوان با استفاده از ساختار address:port (برای نشانی IPv6 بهصورت [address]:port)، address@port یا address#port مشخص کرد. مقداری که با نویسه «/» آغاز شود، بهعنوان یک مسیر مطلق سوکت یونیکس (UNIX socket) در نظر گرفته میشود. اگر هیچ سرویسدهندهای مشخص نشود، از سرویسدهندههای موجود در /etc/resolv.conf استفاده میشود.
اگر هیچ آرگومانی ارائه نشود، kdig یک پرسوجوی NS برای ناحیه ریشه (root zone) ارسال میکند.
کلاسهای پرسوجو
یک query_class میتواند نام کلاس DNS (مانند IN، CH) یا مشخصه کلاس عمومی CLASSXXXXX باشد که در آن XXXXX شماره کلاس دهدهی متناظر است. کلاس پیشفرض پرسوجو IN است.
انواع پرسوجو
یک query_type میتواند نوع رکورد منبع DNS (مانند A، AAAA، NS، SOA، DNSKEY، ANY و غیره) یا یکی از موارد زیر باشد:
- TYPEXXXXX
- مشخصه نوع پرسوجوی عمومی که در آن XXXXX شماره نوع دهدهی متناظر است.
- AXFR
- درخواست انتقال کامل ناحیه (Full zone transfer).
- IXFR=serial
- درخواست انتقال افزایشی ناحیه (Incremental zone transfer) برای شماره سریال SOA مشخصشده (یعنی تمام بهروزرسانیهای ناحیه از نسخه مشخصشده بازگردانده میشوند).
- NOTIFY=serial
- پیام اعلان (Notify) با مشخص بودن راهنمای شماره سریال SOA.
- NOTIFY
- پیام اعلان (Notify) بدون مشخص بودن راهنمای شماره سریال SOA.
نوع پیشفرض پرسوجو A است.
گزینهها
- -4
- فقط از پروتکل IPv4 استفاده میکند.
- -6
- فقط از پروتکل IPv6 استفاده میکند.
- -b address
- نشانی IP مبدأ پرسوجو را روی address تنظیم میکند. نشانی باید یک نشانی معتبر برای رابط محلی یا :: یا 0.0.0.0 باشد. یک پورت اختیاری را میتوان در همان قالب مقدار server مشخص کرد.
- -c class
- مشخص کردن صریح query_class. مقادیر ممکن را در بالا ببینید.
- -d
- فعالسازی پیامهای اشکالزدایی (Debug).
- -dd
- فعالسازی پیامهای اشکالزدایی با جزئیات بیشتر (چاپ Subject Alternative Name).
- -h, --help
- چاپ راهنمای برنامه.
- -k keyfile
- استفاده از کلید TSIG ذخیرهشده در پرونده keyfile برای احراز هویت درخواست. پرونده باید حاوی کلید با همان قالبی باشد که توسط گزینه -y پذیرفته میشود.
- -p port
- تنظیم شماره پورت یا نام سرویس سرویسدهنده نام برای ارسال پرسوجو به آن. پورت پیشفرض 53 است.
- -q name
- تنظیم نام پرسوجو. یک حالت صریح برای تعیین name. اگر هیچ name ارائه نشود، بخش پرسش (question section) خالی تنظیم میشود.
- -t type
- مشخص کردن صریح query_type. مقادیر ممکن را در بالا ببینید.
- -V, --version
- چاپ نسخه برنامه. گزینه -VV باعث میشود برنامه خلاصه پیکربندی زمان کامپایل را چاپ کند.
- -x address
- ارسال یک پرسوجوی معکوس (PTR) برای نشانی IPv4 یا IPv6 address. نام، کلاس و نوع صحیح بهطور خودکار تنظیم میشوند.
- -y [alg:]name:key
- استفاده از کلید TSIG با نام name برای احراز هویت درخواست. بخش alg الگوریتم را مشخص میکند (پیشفرض hmac-sha256 است) و key راز مشترک کدگذاریشده با Base64 را مشخص میکند.
- -E tapfile
- برونبری ردگیری dnstap پیامهای پرسوجو و پاسخ دریافت شده به پرونده tapfile.
- -G tapfile
- تولید خروجی پیام از پرونده dnstap ذخیرهشده قبلی tapfile.
- +[no]multiline
- شکستن رکوردهای طولانی به چندین خط و بهبود خوانایی برای انسان.
- +[no]short
- فقط نمایش دادههای رکورد.
- +[no]generic
- استفاده از قالب نمایش عمومی هنگام چاپ انواع و دادههای رکوردهای منبع.
- +[no]crypto
- نمایش مقادیر کلیدها و امضاهای DNSSEC بهصورت base64 بهجای حذف آنها. (*)
- +[no]aaflag
- تنظیم فلگ AA.
- +[no]tcflag
- تنظیم فلگ TC.
- +[no]rdflag
- تنظیم فلگ RD. (*)
- +[no]recurse
- همانند +[no]rdflag
- +[no]raflag
- تنظیم فلگ RA.
- +[no]zflag
- تنظیم بیت فلگ صفر.
- +[no]adflag
- تنظیم فلگ AD. (*)
- +[no]cdflag
- تنظیم فلگ CD.
- +[no]doflag
- تنظیم فلگ DO.
- +[no]dnssec
- همانند +[no]doflag
- +[no]all
- نمایش تمام بخشهای بسته.
- +[no]qr
- نمایش بسته پرسوجو.
- +[no]header
- نمایش سرآیند بسته. (*)
- +[no]comments
- نمایش نام بخشهای توضیحدار. (*)
- +[no]opt
- نمایش بخش شبهرکورد EDNS. (*)
- +[no]opttext
- تلاش برای نمایش گزینههای ناشناخته EDNS بهصورت متن.
- +[no]optpresent
- نمایش EDNS در قالب نمایشی بر اساس مشخصات نسخه draft-peltan-edns-presentation-format-01 https://www.ietf.org/archive/id/draft-peltan-edns-presentation-format-01.html.
- +[no]question
- نمایش بخش پرسش (Question). (*)
- +[no]answer
- نمایش بخش پاسخ (Answer). (*)
- +[no]authority
- نمایش بخش مرجعیت (Authority). (*)
- +[no]additional
- نمایش بخش اضافی (Additional). (*)
- +[no]tsig
- نمایش بخش شبهرکورد TSIG. (*)
- +[no]stats
- نمایش آمارهای پایانی بسته. (*)
- +[no]class
- نمایش کلاس DNS. (*)
- +[no]ttl
- نمایش مقدار TTL. (*)
- +[no]tcp
- استفاده از پروتکل TCP (پیشفرض برای پرسوجوی استاندارد UDP و برای AXFR/IXFR پروتکل TCP است).
- +[no]fastopen
- استفاده از TCP Fast Open.
- +[no]ignore
- عدم استفاده خودکار از TCP در صورت دریافت پاسخ بریدهشده (Truncated).
- +[no]keepopen
- باز نگه داشتن اتصال TCP برای پرسوجوی بعدی در صورت یکسان بودن پیکربندی اتصال. این مورد برای عملیاتهای +tcp، +tls، +https و +quic اعمال میشود. اتصال فقط در چارچوب یک فراخوانی kdig در نظر گرفته میشود.
- +[no]tls
- استفاده از TLS با نمایه حریم خصوصی فرصتطلبانه (RFC 7858 Section 4.1 https://datatracker.ietf.org/doc/html/rfc7858.html#section-4.1).
- +[no]tls-ca[=FILE]
- استفاده از TLS با اعتبارسنجی گواهی. گواهیهای مرجع صدور گواهی (CA) از پرونده PEM مشخصشده بارگیری میشوند (در صورت عدم ارائه آرگومان، پیشفرض مخزن گواهیهای سیستم است). میتواند چندین بار مشخص شود. اگر گزینه +tls-hostname ارائه نشود، از نام سرویسدهنده مقصد (در صورت تعیین) برای احراز هویت سختگیرانه استفاده میشود.
- +[no]tls-pin=BASE64
- استفاده از TLS با نمایه حریم خصوصی کلید پینشده برونباند (RFC 7858 Section 4.2 https://datatracker.ietf.org/doc/html/rfc7858.html#section-4.2). مقدار PIN باید یک هش SHA-256 کدگذاریشده با Base64 از X.509 SubjectPublicKeyInfo باشد. میتواند چندین بار مشخص شود.
- +[no]tls-hostname=STR
- استفاده از TLS با بررسی نام هاست سرویسدهنده راه دور.
- +[no]tls-sni=STR
- استفاده از TLS با شناسه نام سرور (Server Name Indication).
- +[no]tls-keyfile=FILE
- استفاده از TLS با پرونده کلید کلاینت.
- +[no]tls-certfile=FILE
- استفاده از TLS با پرونده گواهی کلاینت.
- +[no]tls-ocsp-stapling[=H]
- استفاده از TLS با پاسخ منگنهشده معتبر OCSP برای گواهی سرور (%u یا تعیین ساعت). پاسخهای OCSP قدیمیتر از مدت مشخصشده نامعتبر تلقی میشوند.
- +[no]https[=URL]
- استفاده از HTTPS (DNS-over-HTTPS) در قالب سیمی (RFC 1035 Section 4.2.1 https://datatracker.ietf.org/doc/html/rfc1035.html#section-4.2.1). همچنین امکان تعیین URL=[authority][/path] که درخواست به آن ارسال خواهد شد وجود دارد. هرگونه طرح و نشانگر مرجعیت ابتدایی (مانند //) نادیده گرفته میشود. مرجعیت همچنین میتواند بهعنوان server (با استفاده از پارامتر @) مشخص شود. اگر path مشخص شده و authority وجود نداشته باشد، از server بهعنوان مرجعیت به همراه path مشخصشده استفاده میشود. کتابخانه libnghttp2 مورد نیاز است.
- +[no]https-get
- استفاده از HTTPS با متد HTTP/GET بهجای متد پیشفرض HTTP/POST. کتابخانه libnghttp2 مورد نیاز است.
- +[no]quic
- استفاده از QUIC (DNS-over-QUIC).
- +[no]nsid
- درخواست شناسه سرویسدهنده نام (NSID).
- +[no]zoneversion
- درخواست نسخه ناحیه EDNS (EDNS zone version).
- +[no]bufsize=B
- تنظیم اندازه بافر EDNS به بایت (پیشفرض 1232 بایت است).
- +[no]padding[=B]
- استفاده از گزینه لایه پرکننده EDNS(0) برای پر کردن پرسوجوها، بهصورت اختیاری تا اندازهای مشخص. پیشفرض این است که هنگام استفاده از +tls پرسوجوها به میزان معقولی پر شوند، و وقتی پرسوجوها بدون TLS ارسال میشوند اصلاً پر نشوند. بدون آرگومان (یعنی صرفاً +padding) هر پرسوجو بدون در نظر گرفتن استفاده از TLS به میزان معقولی پر میشود. با +nopadding، هرگز پر نمیشود.
- +[no]alignment[=B]
- تراز کردن پرسوجو با پیام بلوک B-بایتی با استفاده از گزینه لایه پرکننده EDNS(0) (پیشفرض no است یا در صورت عدم تعیین آرگومان 128).
- +[no]subnet=SUBN
- تنظیم زیرشبکه کلاینت در EDNS(0) بهصورت SUBN=addr/prefix.
- +[no]edns[=N]
- استفاده از نسخه EDNS (پیشفرض 0 است).
- +[no]msgdelay=T
- صبر کردن به تعداد میلیثانیه مشخص پیش از دریافت هر پیام AXFR/IXFR.
- +[no]timeout=T
- تنظیم بازه زمانی انتظار برای پاسخ به ثانیه (پیشفرض 5 ثانیه است). این مهلت زمانی برای هر تلاش پرسوجو اعمال میشود. مقدار صفر یا notimeout بهصورت نامحدود تفسیر میشود.
- +[no]retry=N
- تنظیم تعداد تکرار مجدد UDP (>=0) (پیشفرض 2 است). این مورد برای AXFR/IXFR اعمال نمیشود.
- +[no]expire
- تنظیم گزینه EXPIRE در EDNS.
- +[no]cookie[=HEX]
- پیوست کردن کوکی EDNS(0) به پرسوجو.
- +[no]badcookie
- تکرار پرسوجو با کوکی صحیح.
- +[no]ednsopt[=CODE[:HEX]]
- ارسال گزینه سفارشی EDNS. مقدار CODE کد گزینه EDNS بهصورت دهدهی است و HEX یک رشته هگزادسیمال اختیاری برای مقدار گزینه EDNS است. این آرگومان میتواند چندین بار استفاده شود. گزینه +noednsopt تمام گزینههای EDNS مشخصشده با +ednsopt را پاک میکند.
- +[no]proxy=SRC_ADDR[#SRC_PORT]-DST_ADDR[#DST_PORT]
- افزودن سرآیند PROXYv2 با نشانیهای مبدأ و مقصد مشخصشده به پرسوجو. پورت مبدأ پیشفرض 0 و پورت مقصد 53 است.
- +[no]json
- استفاده از JSON برای کدگذاری خروجی (RFC 8427).
- +noidn
- غیرفعالسازی تبدیل IDN به ASCII و برعکس. پشتیبانی از IDN به وجود libidn2 هنگام ساخت پروژه بستگی دارد! در صورت استفاده در تنظیمات-عمومی، تمام تبدیلهای IDN غیرفعال میشوند. در صورت استفاده در تنظیمات هر پرسوجو، تبدیل از ASCII در خروجی برای آن پرسوجوی خاص غیرفعال میشود. توجه داشته باشید که تبدیل IDN بزرگی و کوچکی حروف نام دامنه را حفظ نمیکند.
نکات (NOTES)
بهطور پیشفرض، فقط گزینههای مشخصشده با (*) فعال هستند.
گزینههای -k و -y نمیتوانند بهطور همزمان استفاده شوند.
قالب پرونده کلید Dnssec-keygen پشتیبانی نمیشود. بهجای آن از keymgr(8) استفاده کنید.
کدهای خروج (EXIT VALUES)
وضعیت خروج 0 به معنای اجرای موفقیتآمیز است. هر وضعیت خروج دیگر نشاندهنده بروز خطا است.
مثالها (EXAMPLES)
- 1.
- دریافت رکوردهای A برای example.com:
$ kdig example.com A
- 2.
- اجرای AXFR برای ناحیه example.com از سرویسدهنده 192.0.2.1:
$ kdig example.com -t AXFR @192.0.2.1
- 3.
- دریافت رکوردهای A برای example.com از 192.0.2.1 و جستجوی معکوس برای نشانی 2001:DB8::1 از 192.0.2.2. هر دو با استفاده از پروتکل TCP:
$ kdig +tcp example.com -t A @192.0.2.1 -x 2001:DB8::1 @192.0.2.2
- 4.
- دریافت رکورد SOA برای example.com، استفاده از TLS، استفاده از گواهیهای سیستم، بررسی نام هاست مشخصشده، بررسی پین گواهی و چاپ اطلاعات اشکالزدایی بیشتر:
$ kdig -d @185.49.141.38 +tls-ca +tls-host=getdnsapi.net \ +tls-pin=foxZRnIh9gZpWnl+zEiKa0EJ2rdCGroMWm02gaxSc9S= soa example.com
- 5.
- نمونههای DNS بر بستر HTTPS (پیادهسازیهای مختلف DoH):
$ kdig @1.1.1.1 +https example.com. $ kdig @193.17.47.1 +https=/doh example.com. $ kdig @8.8.4.4 +https +https-get example.com. $ kdig @8.8.8.8 +https +tls-hostname=dns.google +fastopen example.com.
- 6.
- اشتراک چند پرسوجو در یک اتصال DoT:
$ kdig @1.1.1.1 +tls +keepopen abc.example.com A mail.example.com AAAA
- 7.
- پرسوجوی شناسه و نسخه سرویسدهنده نام مطابق با RFC 4892 https://datatracker.ietf.org/doc/html/rfc4892.html:
$ kdig @a.iana-servers.net. CH TXT id.server version.server
فایلها (FILES)
/etc/resolv.conf
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
CZ.NIC, z.s.p.o. و مشارکتکنندگان https://www.knot-dns.cz
حق نشر (COPYRIGHT)
Copyright (C) CZ.NIC, z.s.p.o. and contributors
| 2026-06-12 | 3.5.5 |