dog(1) dog(1)

dog - ابزار خط فرمان برای پرس‌وجوی سامانه‌ی نام دامنه (DNS)

dog [options] [domains...]

دستور dog یک ابزار خط فرمانی برای پرس‌وجوی سامانه نام دامنه (DNS) است. این ابزار خروجی رنگی ارائه می‌دهد، از پروتکل‌های DNS-over-TLS و DNS-over-HTTPS پشتیبانی می‌کند و می‌تواند خروجی با ساختار JSON تولید نماید.

dog example.net
پرس‌وجوی رکورد A یک دامنه با استفاده از تنظیمات پیش‌فرض
dog example.net MX
جستجوی رکوردهای MX به جای آن
dog example.net MX @1.1.1.1
استفاده از یک کارساز نام (nameserver) مشخص به جای حالت پیش‌فرض
dog example.net MX @1.1.1.1 -T
استفاده از پروتکل TCP به جای UDP
dog -q example.net -t MX -n 1.1.1.1 -T
مشابه موارد بالا، اما با استفاده از آرگومان‌های صریح

-q, --query=HOST
نام میزبان یا نام دامنه مورد پرس‌وجو.
-t, --type=TYPE
نوع رکورد DNS مورد پرس‌وجو (A، MX، NS و غیره).
-n, --nameserver=ADDR
نشانی کارساز نام برای ارسال بسته‌ها به آن.
--class=CLASS
کلاس شبکه رکورد DNS مورد پرس‌وجو (IN، CH، HS).

به‌طور پیش‌فرض، dog رکوردهای A را با استفاده از تحلیل‌گر پیش‌فرض سیستم درخواست می‌کند. حداقل یک نام دامنه باید ارسال شود — برنامه dog به‌طور خودکار کارسازهای نام ریشه را پرس‌وجو نمی‌کند.

گزینه‌های پرس‌وجو را می‌توان با یک گزینه خط فرمان مانند `--query lookup.dog' یا `--type MX'، یا به صورت آرگومان‌های ساده مانند `lookup.dog' یا `MX' ارسال کرد. برنامه dog حدس هوشمندانه‌ای خواهد زد که منظور از آرگومان‌های ساده چیست (MX کاملاً مشخص است که یک نوع رکورد است)، که نوشتن سریع پرس‌وجوهای موردی را آسان‌تر می‌کند. اگر دقت و صراحت بیشتری مد نظر است، از گزینه‌های بلند استفاده کنید.

اگر بیش از یک دامنه، نوع، کارساز نام یا کلاس مشخص شود، dog برای هر ترکیب یک پرس‌وجو انجام داده و نتایج ترکیبی را در یک جدول نمایش می‌دهد. برای مثال، ارسال سه آرگومان نوع و دو آرگومان نام دامنه، شش درخواست ارسال خواهد کرد.

سامانه DNS به‌طور سنتی از درگاه ۵۳ برای هر دو پروتکل TCP و UDP استفاده می‌کند. برای استفاده از یک تحلیل‌گر با درگاهی متفاوت، شماره درگاه را پس از دو نقطه (:) در نشانی کارساز نام درج کنید.

--edns=SETTING
تعیین تمایل به استفاده از EDNS. این گزینه می‌تواند `disable'، `hide' یا `show' باشد.
--txid=NUMBER
تنظیم شناسه تراکنش روی یک مقدار مشخص.
-Z=TWEAKS
تنظیم دستکاری‌های غیرمعمول در سطح پروتکل.

-U, --udp
استفاده از پروتکل DNS روی UDP.
-T, --tcp
استفاده از پروتکل DNS روی TCP.
-S, --tls
استفاده از پروتکل DNS-over-TLS.
-H, --https
استفاده از پروتکل DNS-over-HTTPS.

به‌طور پیش‌فرض، dog از پروتکل UDP استفاده می‌کند و در صورتی که پاسخ نشان دهد پیام برای UDP بیش از حد بزرگ است، به‌طور خودکار درخواست را با استفاده از TCP مجدداً ارسال می‌کند. ارسال --udp تنها از UDP استفاده کرده و در این حالت با شکست مواجه می‌شود؛ ارسال --tcp به‌طور پیش‌فرض از TCP استفاده خواهد کرد.

پروتکل‌های DNS-over-TLS (DoT) و DNS-over-HTTPS (DoH) با گزینه‌های --tls و --https در دسترس هستند. به یاد داشته باشید که بعید است تحلیل‌گر پیش‌فرض سیستم به درخواست‌هایی با استفاده از این پروتکل‌ها پاسخ دهد.

توجه داشته باشید که اگر یک نام میزبان یا نام دامنه به جای نشانی IP به عنوان کارساز نام داده شود، وضوح‌یابی آن میزبان توسط سیستم‌عامل انجام می‌شود، نه توسط dog.

برخلاف سایر روش‌ها، نوع انتقال HTTPS نیازمند یک نشانی وب (URL) کامل، شامل پروتکل، نام دامنه و مسیر است.

-1, --short
حالت کوتاه: تنها نتیجه اول را نمایش می‌دهد.
-J, --json
نمایش خروجی در قالب JSON.
--color, --colour=WHEN
زمان رنگی کردن خروجی. می‌تواند یکی از مقادیر `always'، `automatic' یا `never' باشد.
--seconds
مدت زمان‌ها را بر حسب ساعت و دقیقه قالب‌بندی نمی‌کند؛ در عوض آن‌ها را بر حسب ثانیه نمایش می‌دهد.
--time
مدت زمانی که طول کشید تا پاسخ دریافت شود را چاپ می‌کند.

--help
مروری بر گزینه‌های خط فرمان را نمایش می‌دهد.
--version
نسخه در حال اجرای dog را نمایش می‌دهد.

برنامه dog به متغیرهای محیطی زیر پاسخ می‌دهد:

این متغیر را روی هر مقدار غیرخالی تنظیم کنید تا dog اطلاعات اشکال‌زدایی را به خروجی خطای استاندارد ارسال کند. برای دریافت خروجی عمیق‌تر و دقیق‌تر، آن را روی رشته دقیق `trace' تنظیم کنید.

برنامه dog انواع رکوردهای زیر را می‌شناسد و می‌تواند تفسیر کند:

A
نشانی‌های IPv4
AAAA
نشانی‌های IPv6
CAA
مراجع صدور گواهی مجاز (CA)
CNAME
نام‌های مستعار رسمی دامنه
HINFO
اطلاعات سیستم و در برخی مواقع توضیحات درخواست‌های غیرمجاز
LOC
اطلاعات موقعیت مکانی
MX
نشانی‌های کارساز ایمیل
NAPTR
قوانین DDDS
NS
کارسازهای نام دامنه
OPT
افزونه‌های پروتکل DNS
PTR
اشاره‌گرها به نام‌های رسمی، معمولاً برای وضوح‌یابی معکوس
SOA
اطلاعات مدیریتی درباره منطقه‌ها (zones)
SRV
نشانی‌های IP همراه با شماره درگاه
SSHFP
اثر انگشت کلید SSH
TLSA
گواهی‌های TLS، کلیدهای عمومی و هش‌ها
TXT
اطلاعات متنی دلخواه

هنگامی که یک بسته پاسخ DNS حاوی رکوردی از یکی از این انواع شناخته‌شده باشد، dog آن را در جدولی شامل نام نوع و خلاصه‌ای خوانا برای انسان از محتوای آن نمایش می‌دهد.

رکوردهایی با شماره نوعی که به هیچ نوع رکورد شناخته‌شده‌ای نگاشت نمی‌شود همچنان نمایش داده خواهند شد. از آنجا که این رکوردها قابل تفسیر نیستند، محتوای آن‌ها به صورت یک سری اعداد نمایش داده می‌شود.

برنامه dog همچنین شامل فهرستی از نام‌های انواع رکورد است که شماره نوع آن‌ها را می‌داند، اما قادر به تفسیر آن‌ها نیست، مانند IXFR یا ANY یا AFSDB. این موارد به عنوان آرگومان‌های خط فرمان قابل قبول هستند، به این معنی که می‌توانید با `dog AFSDB' یک درخواست AFSDB ارسال کنید. با این حال، محتوای پاسخ آن‌ها همچنان به صورت عدد نمایش داده می‌شود. ممکن است این موارد در نسخه‌های بعدی dog پشتیبانی شوند.

آرگومان خط فرمان -Z می‌تواند یک یا چند بار برای تنظیم برخی گزینه‌ها در سطح پروتکل در پرس‌وجوهای DNS ارسال‌شده استفاده شود. این گزینه مقادیر زیر را می‌پذیرد:

aa
بیت AA (پاسخ‌های معتبر - Authoritative Answers) را در پرس‌وجو تنظیم می‌کند.
ad
بیت AD (داده‌های معتبر - Authentic Data) را در پرس‌وجو تنظیم می‌کند.
bufsize=NUM
اندازه بار مفید UDP را در فیلد OPT در پرس‌وجو تنظیم می‌کند. اگر EDNS غیرفعال باشد، این گزینه تأثیری ندارد.
cd
بیت CD (بررسی غیرفعال - Checking Disabled) را در پرس‌وجو تنظیم می‌کند.

0
اگر همه چیز بدون خطا انجام شود.
1
در صورت بروز خطای شبکه، ورودی/خروجی یا TLS در حین عملیات.
2
اگر در صورت اجرا در حالت کوتاه، نتیجه‌ای از سرور دریافت نشود. این می‌تواند هر خطای دریافتی از سرور باشد، نه فقط NXDOMAIN.
3
در صورت بروز مشکل در آرگومان‌های خط فرمان.

برنامه dog توسط Benjamin `ogham' Sago توسعه یافته و نگهداری می‌شود.

وب‌سایت: https://dns.lookup.dog

کد منبع: https://github.com/ogham/dog

v0.1.0