STUBBY(1) General Commands Manual STUBBY(1)

stubby - یک تحلیل‌گر محلی خرد (stub resolver) برای حریم خصوصی DNS

stubby [-C file] [-ghilV] [-v loglevel]

stubby به عنوان یک تحلیل‌گر محلی خرد برای حریم خصوصی DNS عمل می‌کند که از DNS-over-TLS بهره می‌برد. Stubby پرس‌وجوهای DNS ارسال‌شده از ماشین محلی به یک تحلیل‌گر حریم خصوصی DNS را رمزگذاری کرده و بدین ترتیب حریم خصوصی کاربر نهایی را افزایش می‌دهد.

stubby در مراحل اولیه توسعه قرار دارد اما برای کاربران فنی و پیشرفته مناسب است.

stubby با اجرا شدن به صورت یک دیمن (daemon) که روی آدرس لوپ‌بک (loopback) به پرس‌وجوهای DNS گوش می‌دهد و آن‌ها را از طریق TLS به بیرون فوروارد می‌کند، حریم خصوصی DNS را فراهم می‌سازد. پیکربندی پیش‌فرض «حریم خصوصی سخت‌گیرانه» (Strict Privacy) را ارائه می‌دهد و از زیرمجموعه‌ای از سرورهای حریم خصوصی DNS موجود استفاده می‌کند. ببینید: https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Test+Servers

تنظیمات را از فایل پیکربندی file می‌خواند. اگر این گزینه داده نشود، stubby به دنبال یک فایل پیکربندی در ~/.stubby.yml می‌گردد. اگر این فایل وجود نداشته باشد، stubby به فایل پیکربندی سراسری /etc/stubby/stubby.yml رجوع می‌کند.
اجرای stubby به صورت یک دیمن.
نمایش پیام راهنمای نحوه استفاده و خروج.
خواندن پیکربندی، اعتبارسنجی محتوا، چاپ زیباسازی‌شدهٔ (pretty-print) آن در خروجی استاندارد و خروج.
فعال‌سازی تمام گزارش‌گیری‌ها. معادل با -v 7.
فعال‌سازی گزارش‌گیری. تمام پیام‌های گزارش‌گیری در سطح loglevel یا پایین‌تر در خروجی خطای استاندارد چاپ می‌شوند:
0: EMERG
سیستم غیرقابل استفاده است
1: ALERT
اقدام فوری باید صورت گیرد
2: CRIT
شرایط بحرانی
3: ERROR
شرایط خطا
4: WARN
شرایط هشدار
5: NOTICE
شرایط عادی، اما حائز اهمیت
6: INFO
پیام‌های اطلاعاتی
7: DEBUG
پیام‌های سطح اشکال‌زدایی
نمایش نسخهٔ stubby و خروج.

فایل پیکربندی در قالب YAML است. یک نمونه پیکربندی عبارت است از:

resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
  - GETDNS_TRANSPORT_TLS
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
tls_query_padding_blocksize: 256
edns_client_subnet_private : 1
idle_timeout: 10000
listen_addresses:
  - 127.0.0.1
  -  0::1
round_robin_upstreams: 1
upstream_recursive_servers:
  - address_data: 145.100.185.15
    tls_auth_name: "dnsovertls.sinodun.com"
    tls_pubkey_pinset:
      - digest: "sha256"
        value: 62lKu9HsDVbyiPenApnc4sfmSYTHOVfFgL3pyB+cBL4=
  - address_data: 145.100.185.16
    tls_auth_name: "dnsovertls1.sinodun.com"
    tls_pubkey_pinset:
      - digest: "sha256"
        value: cE2ecALeE5B+urJhDrJlVFmf38cJLAvqekONvjvpqUA=
  - address_data: 185.49.141.37
    tls_auth_name: "getdnsapi.net"
    tls_pubkey_pinset:
      - digest: "sha256"
        value: foxZRnIh9gZpWnl+zEiKa0EJ2rdCGroMWm02gaxSc9Q=
  - address_data: 2001:610:1:40ba:145:100:185:15
    tls_auth_name: "dnsovertls.sinodun.com"
    tls_pubkey_pinset:
      - digest: "sha256"
        value: 62lKu9HsDVbyiPenApnc4sfmSYTHOVfFgL3pyB+cBL4=
  - address_data: 2001:610:1:40ba:145:100:185:16
    tls_auth_name: "dnsovertls1.sinodun.com"
    tls_pubkey_pinset:
      - digest: "sha256"
        value: cE2ecALeE5B+urJhDrJlVFmf38cJLAvqekONvjvpqUA=
  - address_data: 2a04:b900:0:100::38
    tls_auth_name: "getdnsapi.net"
    tls_pubkey_pinset:
      - digest: "sha256"
        value: foxZRnIh9gZpWnl+zEiKa0EJ2rdCGroMWm02gaxSc9Q=

موارد پیکربندی به شرح زیر است. برخی از آن‌ها مقادیر ثابتی را از کتابخانهٔ getdns که زیربنای stubby است دریافت می‌کنند و توضیحات بیشتر درباره مقادیر آن‌ها را می‌توان در مستندات getdns یا در http://www.getdnsapi.net یافت.

به دلایل تاریخی باید بر روی GETDNS_RESOLUTION_STUB تنظیم شود. در صورت استفاده از هر تنظیم دیگری، stubby با خطا خارج خواهد شد.
فهرست انواع روش‌های انتقال (transport) مورد استفاده را تنظیم می‌کند. برای حریم خصوصی DNS، این مقدار باید بر روی GETDNS_TRANSPORT_TLS تنظیم شود. روش‌های انتقال متن صریح (Clear text) عبارتند از GETDNS_TRANSPORT_TCP و GETDNS_TRANSPORT_UDP
نوع احراز هویت لازم را تعیین می‌کند. برای حریم خصوصی سخت‌گیرانه (Strict Privacy)، این مقدار باید روی GETDNS_AUTHENTICATION_REQUIRED تنظیم شود. برای حالت فرصت‌طلبانه (Opportunistic)، این تنظیم را حذف کرده یا آن را برابر با GETDNS_AUTHENTICATION_NONE قرار دهید. در حالت فرصت‌طلبانه، احراز هویت سرور نام (nameserver) الزامی نیست و در صورتی که روش‌های انتقال متن صریح در dns_transport_list تعریف شده باشند، بازگشت (fallback) به آن‌ها مجاز است.
استفاده از گزینهٔ لایه‌گذاری (padding) در EDNS0 برای لایه‌گذاری پرس‌وجوهای DNS به منظور مخفی کردن اندازهٔ آن‌ها.
اگر 1 باشد، از حریم خصوصی EDNS0 Client Subnet استفاده می‌کند تا زیرشبکهٔ کلاینت به سرورهای معتبر (authoritative) ارسال نشود.
استفاده از مهلت زمانی بی‌کاری EDNS0 Keepalive به میزان timeout میلی‌ثانیه، مگر آنکه توسط سرور بازنویسی شود. این کار اتصالات بی‌کار TLS را باز نگه می‌دارد تا از سربار باز کردن یک اتصال جدید برای هر پرس‌وجو جلوگیری شود.
اگر 1 باشد، پرس‌وجوها به صورت نوبت‌گردشی (round robin) بین تمام سرورهای بالادستی پیکربندی‌شده توزیع می‌شوند. بدون این گزینه، stubby از هر سرور بالادستی به صورت متوالی استفاده می‌کند تا زمانی که از دسترس خارج شود و سپس به سراغ سرور بعدی می‌رود.
مشخص کردن سرورهای بالادستی که stubby باید استفاده کند. هر مورد در این فهرست شامل موارد زیر است:
آدرس IPv4 یا IPv6 سرور.
نام دامنهٔ احراز هویت که در برابر گواهی ارائه‌شده اعتبارسنجی خواهد شد.
مجموعه سنجاق‌شدهٔ (pinset) کلید عمومی sha256 SPKI سرور. این مورد نیز در برابر گواهی ارائه‌شده اعتبارسنجی می‌شود. این بخش شامل دو مورد است:
نوع خلاصه‌ساز (digest) کلید.
مقدار کلید.

~/.stubby.yml
/etc/stubby/stubby.yml

https://getdnsapi.net
https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Daemon+-+Stubby