رفتن به محتوا

راهنماهاپیش‌نمایش

DNS و نام دستگاه‌ها

با نام به دستگاه‌ها وصل شوید، دامنه‌های داخلی را به سرورهای DNS خودتان بفرستید و DNS را با CLI عیب‌یابی کنید.

هر دستگاه در شبکه‌ی شما خودکار یک نام می‌گیرد؛ پس به‌جای 100.83.20.5 کافی است بنویسید hetzner. برای دامنه‌های دیگر هم با split DNS می‌توانید تعیین کنید کدام سرور DNS جواب بدهد.

نام دستگاه‌ها

هر دستگاه یک نام کوتاه و یک نام کامل دارد:

ناممثالکاربرد
کوتاهmypcاستفاده‌ی روزمره، از هر دستگاهی در شبکه
کاملmypc.home.nb.internalوقتی برنامه‌ای نام کامل (FQDN) لازم دارد

در این مثال، home نام شبکه‌ی شماست. هر دو شکل را هر جا که نام میزبان به کار می‌رود می‌توانید استفاده کنید:

ssh mypc
ping hetzner.home.nb.internal

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

پسوند nb.internal طرح نام‌گذاری دوره‌ی پیش‌نمایش است و ممکن است تغییر کند.

split DNS و سرورهای DNS سفارشی

split DNS کوئری‌های دامنه‌هایی را که انتخاب می‌کنید به سرورهای DNS (nameserver) دلخواهتان می‌فرستد. با آن می‌توانید برای دامنه‌های داخلی از سرور DNS خودتان استفاده کنید؛ مثلاً از سرور DNS دفتر که پشت یک subnet route است:

دامنهسرور DNS
corp.example.com10.0.0.53

این تنظیم را در داشبورد انجام دهید: سرور DNS را اضافه کنید و بعد دامنه‌هایی را که این سرور باید جوابشان را بدهد مشخص کنید. برای بقیه‌ی نام‌ها هم می‌توانید سرور DNS انتخاب کنید، و search domainهایی که نام‌های کوتاه با آن‌ها امتحان می‌شوند.

سرور DNS باید از دستگاه‌هایتان در دسترس باشد: یا مثل این مثال از طریق یک subnet route، یا روی یکی از دستگاه‌های شبکه‌تان.

بقیه‌ی نام‌ها کجا می‌روند

نام‌هایی که نه نام دستگاه‌اند و نه زیر یکی از دامنه‌های split DNS، به این ترتیب فرستاده می‌شوند:

  1. سرورهای DNS شبکه، اگر در داشبورد انتخابشان کرده باشید. از طریق تونل به آن‌ها می‌رسیم، و وقتی از نود خروجی استفاده می‌کنید، از طریق نود خروجی.
  2. نود خروجی، وقتی از آن استفاده می‌کنید: resolver خود نود خروجی جواب می‌دهد؛ پس شبکه‌ی محلی و ارائه‌دهنده‌ی اینترنتتان نه کوئری‌هایتان را می‌بینند و نه می‌توانند جوابشان را عوض کنند. اگر نود خروجی در دسترس نباشد، این نام‌ها پیدا نمی‌شوند، همان‌طور که هیچ ترافیک دیگری هم بدون آن بیرون نمی‌رود. نام دستگاه‌ها همچنان کار می‌کند. نود خروجی را ببینید.
  3. سرورهای DNS خود دستگاه در بقیه‌ی حالت‌ها، مثل قبل از نردبون.

دستگاه چطور نام‌ها را پیدا می‌کند

نردبون روی هر دستگاه در آدرس 10.100.100.100 جواب می‌دهد (محدوده‌ی پیش‌فرض شبکه آن را کنار می‌گذارد؛ شبکه‌ای روی محدوده‌ی دیگر، آدرسی از خودش دارد)، و تا وقتی دستگاه وصل است resolver سیستم را به آن می‌سپارد:

  • با systemd-resolved، مثل Ubuntu و Fedora، فقط نام‌های شبکه‌ی شما به نردبون فرستاده می‌شوند، مگر وقتی همه‌ی نام‌ها باید از آن بگذرند (وقتی از نود خروجی یا سرورهای DNS شبکه استفاده می‌کنید). چیز دیگری در سیستم عوض نمی‌شود.
  • بدون آن، نردبون فایل /etc/resolv.conf را می‌نویسد و نسخه‌ی خود سیستم را کنار وضعیتش در /var/lib/nardeboon نگه می‌دارد. وقتی دستگاه قطع می‌شود آن را برمی‌گرداند، و اگر برنامه‌ی دیگری، مثلاً کلاینت DHCP، فایل را دوباره بنویسد، نردبون سرورهای DNS تازه را به‌عنوان سرورهای خود سیستم برمی‌دارد.

اگر برنامه‌ی دیگری روی دستگاه از قبل پورت 53 آن آدرس را گرفته باشد، نردبون DNS سیستم را همان‌طور که هست رها می‌کند، به‌جای اینکه آن را به آدرسی بسپارد که جواب نمی‌دهد، و nardeboon dns status این را می‌گوید؛ تا وقتی دستگاه وصل است دوباره امتحان می‌کند و به محض آزاد شدن پورت، کار را به دست می‌گیرد.

اگر می‌خواهید نردبون به تنظیمات DNS یک دستگاه دست نزند، مثلاً روی سروری که تنظیمات resolver خودش را دارد، این را خاموش کنید:

sudo nardeboon set accept-dns off

up --accept-dns=false هم همین کار را می‌کند. نردبون همچنان در آدرس سرویس خودش جواب می‌دهد و nardeboon dns query هم کار می‌کند.

بررسی و عیب‌یابی

nardeboon dns status نشان می‌دهد این دستگاه از چه تنظیمات DNS استفاده می‌کند:

nardeboon dns status
Network domain:  home.nb.internal
Split DNS:       corp.example.com → 10.0.0.53
Other names:     through the exit node hetzner
System DNS:      set through systemd-resolved

nardeboon dns query یک نام را با همان روشی که این دستگاه به کار می‌برد به آدرس تبدیل می‌کند و نشان می‌دهد جواب از کجا آمده است:

nardeboon dns query hetzner
hetzner.home.nb.internal   A   100.83.20.5
nardeboon dns query intranet.corp.example.com
intranet.corp.example.com   A   10.0.0.80   (split DNS via 10.0.0.53)

اگر به‌جای نام یک آدرس بدهید، نامش را نشان می‌دهد. اگر نامی وجود نداشته باشد، nardeboon dns query با کد 6 (not-found) خارج می‌شود. هر دو دستور --json را هم می‌پذیرند.

وقتی نامی به آدرس تبدیل نمی‌شود:

  • نام یک دستگاه: با nardeboon status بررسی کنید که آن دستگاه در شبکه‌ی شما هست و نام کاملش را هم امتحان کنید.
  • یک دامنه‌ی داخلی: تنظیم split DNS را با nardeboon dns status بررسی کنید و بعد مطمئن شوید سرور DNS در دسترس است. اگر سرور پشت یک subnet route است، آن route باید تأیید شده باشد و این دستگاه هم routeها را بپذیرد.
  • هر نام دیگری، وقتی از نود خروجی استفاده می‌کنید: با nardeboon status بررسی کنید که نود خروجی آنلاین است.

حریم خصوصی

نردبون هیچ‌وقت کوئری‌های DNS شما را جمع‌آوری نمی‌کند؛ همان‌طور که محتوای ترافیکتان را هم جمع‌آوری نمی‌کند. resolver روی هر دستگاه هر کوئری را جواب می‌دهد و چیزی از آن نگه نمی‌دارد.