DNS چیست و چه کاربردی دارد؟
مقدمه
این راهنمای جامع دربارهٔ سیستم نام دامنه (DNS) است: مفاهیم پایه، معماری و پروتکلها، انواع رکوردها، فرآیند حل نام با مثالهای بستهها، کش و TTL، امنیت (DNSSEC، DoH، DoT)، مانیتورینگ و عیبیابی، پیادهسازیهای محبوب، کاربردهای پیشرفته و در نهایت آموزشهای عملی و گامبهگام برای تغییر/تنظیم DNS در سرور ویندوز و سرور لینوکس (شامل systemd-resolved، NetworkManager، /etc/resolv.conf، dnsmasq، BIND و مثالهای Ubuntu/Debian/CentOS). شامل مثالهای دستوری، پیکربندی نمونه و نکات عیبیابی است.
فهرست مطالب
مفاهیم پایه و تاریخچه
معماری DNS و مؤلفهها
پروتکلها و فرمت پیام DNS
انواع رکوردها و کاربرد هر کدام
فرایند حل نام (Recursive vs Iterative) با مثال بستهها
کش، TTL و رفتار رکوردها
امنیت DNS: DNSSEC، DoH، DoT، و حملات رایج
پیادهسازیهای محبوب سرویس DNS و مقایسهها
کاربردهای پیشرفته DNS (load balancing، anycast، split-horizon، dynamic DNS)
مانیتورینگ، لاگینگ و عیبیابی
راهنمای گامبهگام تغییر/تنظیم DNS در ویندوز (GUI و خطفرمان)
راهنمای گامبهگام تغییر/تنظیم DNS در لینوکس (systemd-resolved، NetworkManager، /etc/resolv.conf، dnsmasq)
نکات عملی، بهترین شیوهها و جمعبندی
مفاهیم پایه و تاریخچه
– تعریف: DNS (Domain Name System) سیستمی توزیعشده است که نامهای قابل خواندن برای انسان (مثلاً example.com) را به آدرسهای IP عددی (مثلاً 93.184.216.34) نگاشت میکند و بالعکس (Reverse DNS).
– نیاز تاریخی: در ابتدا میزبانها نامشان را در فایل hosts. ذخیره میکردند؛ با رشد اینترنت، نیاز به سیستمی مقیاسپذیر بروز کرد که منجر به طراحی DNS در اوایل دههٔ 1980 شد (RFC 882, 883 و بعداً RFC 1034, 1035).
– اهداف: قابلیت مقیاسپذیری، توزیع بار، تحمل خطا، قابلیت مدیریت زونها، و پشتیبانی از انواع اطلاعات غیر از آدرس IP (مثلاً MX برای ایمیل).
– رکورد های DNS در هاست اشتراکی مانند هاست لینوکس ، هاست وردپرس، هاست سی پنل و هاست ایمیل و غیره نیز قابل تغییر و تنظیم است.

معماری DNS و مؤلفهها
– فضای نام سلسلهمراتبی: دامنهها در ساختاری درختی قرار دارند: ریشه (.) در رأس، سپس دامنههای سطحبالا (TLD مثل .com, .org, .ir)، دامنه (مثلاً example.com) و سابدامنهها.
– سرورهای DNS اساسی:
– Root servers: سرورهای ریشه که اطلاعات دربارهٔ TLDها را دارند (فهرست نام سرورهای ریشه؛ anycast رایج است).
– TLD name servers: مسئول دامنههای سطحبالا و نگهداری NS برای دامنههای سطح دوم.
– Authoritative name servers: مسئول اطلاعات دقیق برای یک دامنه خاص (زونها و رکوردهای آن).
– Recursive resolvers (یا recursive DNS servers): سرورهایی که برای کلاینتها درخواستها را به صورت بازگشتی دنبال کرده و پاسخ نهایی را برمیگردانند؛ اینها کش نگه میدارند.
– انواع سرورها بر اساس نقش:
– Primary (Master) و Secondary (Slave) برای زونها: master محل ویرایش و slave نسخهٔ خواندنی و همگامشده است.
– Forwarder: سروری که درخواستهای خود را به سرور DNS دیگر ارسال میکند؛ مفید در شرکتها.
پروتکلها و فرمت پیام DNS
– DNS عمدتاً روی UDP پورت 53 اجرا میشود (کوئریهای معمولی). برای پاسخهای بزرگتر یا انتقال زونها TCP پورت 53 استفاده میشود.
– ساختار پیام DNS (مشترک برای UDP/TCP): Header، Question section، Answer section، Authority section، Additional section.
– Header شامل شناسهٔ درخواست (ID)، بیتهای کنترلی (QR, Opcode, AA, TC, RD, RA, RCODE و پرچمها).
– پرسش (Question): شامل QName (نام پرسیدهشده)، QType (نوع رکورد) و QClass (معمولاً IN برای اینترنت).
– تایمآوت و بازگشت: UDP بدون اتصال است؛ اگر پاسخ بزرگ یا قطع باشد، مشتری ممکن است دوباره کوئری بفرستد یا به TCP برود.
– DNS over TLS (DoT) و DNS over HTTPS (DoH) — رمزنگاری لایهٔ حمل و نقل یا لایهٔ اپلیکیشن برای محافظت از حریم و انسداد.
انواع رکوردها و کاربرد هر کدام
– A: نگاشت نام به آدرس IPv4.
– AAAA: نگاشت نام به آدرس IPv6.
– CNAME: نام مستعار به نام واقعی (canonical); هنگام استفاده، نباید رکوردهای دیگری با همان نام وجود داشته باشد (به جز DNSSEC).
– NS: مشخصکنندهٔ سرورهای نام برای یک زون.
– SOA: Start of Authority؛ شامل اطلاعات مدیریت زون (primary NS، ایمیل مسئول، serial، refresh، retry، expire، minimum/TTL).
– MX: Mail Exchange؛ سرور ایمیل برای دامنه.
– PTR: نگاشت معکوس IP به نام (reverse DNS).
– TXT: متن آزاد؛ استفادهها شامل SPF، DKIM و سایر اطلاعات.
– SRV: سرویس؛ مشخصکنندهٔ میزبان و پورت سرویس (مثلاً برای SIP، XMPP).
– NAPTR: Name Authority Pointer، ترکیبی برای خدمات خاص (مثلاً ENUM).
– DNSKEY, RRSIG, DS: رکوردهای DNSSEC برای امضا و کلیدها.
– LOC: موقعیت جغرافیایی (نادر).
– سایر رکوردها: TLSA (برای DANE)، CAA (Certificate Authority Authorization).
فرآیند حل نام (Recursive vs Iterative) با مثال بستهها
– سناریوی معمول (کلاینت به recursive resolver):
کلاینت از resolver محلی (مثلاً ارائهدهندهٔ اینترنت یا سرور داخل شبکه) سؤال میپرسد.
اگر resolver رکورد را در کش داشته باشد که معتبر است، پاسخ را فوراً بازمیگرداند.
در غیر اینصورت، resolver یک پرسش تکراری/ایتراتیو انجام میدهد: ابتدا از یک root server پرسش میپرسد تا NSهای مربوط به TLD را دریافت کند.
سپس به یکی از TLD servers مراجعه و NSهای دامنهٔ سطح پایینتر را میگیرد.
سپس به authoritative name server دامنه مراجعه و رکورد نهایی را میگیرد.
پاسخ را کش کرده و به کلاینت بازمیگرداند.
– مثال بسته (با dig/tcpdump):
– dig +trace example.com
– نمایش تبادل با root -> TLD -> authoritative.
– Recursive vs Iterative:
– Recursive: resolver مسئول تا انتها پیدا کردن پاسخ است.
– Iterative: هر سرور پاسخهایی مثل “به این NS مراجعه کن” میدهد تا resolver نهایی اتصال را برقرار کند.

کش، TTL و رفتار رکوردها
– TTL (Time To Live): مدت زمانی که رکورد در کش resolver نگه داشته میشود. مقدارها بر حسب ثانیه.
– کش باعث کاهش تأخیر و بار روی سرورهای authoritative میشود؛ اما تغییر رکوردها با TTL طولانی باعث تاخیر در انتشار تغییرات میشود.
– Negative caching: ذخیرهٔ پاسخهای شکست (مثلاً NXDOMAIN) نیز با مدت زمانی مشخص (SOA MINIMUM یا RFC 2308) ذخیره میشوند.
– نکتهها: اگر نیاز به تغییر سریع دارید، TTL را قبل از تغییر کاهش دهید، سپس تغییر کنید و سپس TTL را بازگردانید.
امنیت DNS: DNSSEC، DoH، DoT، و حملات رایج
– حملات رایج:
– DNS spoofing/cache poisoning: تزریق پاسخهای جعلی به کش resolver.
– DDoS به سرورهای DNS یا استفاده از DNS amplification.
– Man-in-the-middle بر ترافیک DNS غیر رمزنگاری.
– DNSSEC:
– هدف: فراهم کردن صحت و اعتبار دادهٔ DNS (تأیید اینکه پاسخ واقعاً از authoritative server آمده و تغییر نکرده).
– کارکرد: رکوردها را با امضاهای دیجیتال (RRSIG) و کلیدها (DNSKEY) امضا میکنند؛ زنجیرهٔ اعتماد با رکوردهای DS ثبتشده در parent zone ساخته میشود.
– محدودیتها: DNSSEC تضمین محرمانگی نمیکند، تنها صحت و اصالت.
– DNS over TLS (DoT) و DNS over HTTPS (DoH):
– رمزنگاری ارتباط بین کلاینت و resolver برای جلوگیری از استراق سمع و تغییر محتوا در مسیر.
– DoT: TLS روی پورت 853.
– DoH: DNS روی HTTPS (پورت 443)، معمولاً با سرورهای عمومی مانند Cloudflare/Google/NextDNS.
– راههای مقابله:
– استفاده از resolverهای امن، فعالسازی DNSSEC validation روی resolverها، محدودسازی نرخ، استفاده از anycast و CDN برای مقاومت در برابر DDoS.
پیادهسازیهای محبوب سرویس DNS و مقایسهها
– BIND (Berkeley Internet Name Domain): قدیمی و پرکاربرد؛ انعطافپذیر اما پیچیده.
– Unbound: resolver سریع، امن، مناسب برای recursive resolver با validation DNSSEC.
– PowerDNS: دارای backends متنوع (SQL)، مناسب برای مقیاسپذیری و مدیران دیتابیسمحور.
– Knot DNS: authoritative server با عملکرد بالا، مناسب برای محیطهای بزرگ.
– dnsmasq: سبک، مناسب برای شبکههای کوچک، cache و DHCP.
– Microsoft DNS: یکپارچه با Active Directory، مناسب محیط ویندوز.
– CoreDNS: مورد استفاده در Kubernetes، ماژولار.
– مقایسه معیارها: عملکرد، امنیت، قابلیت پیکربندی، پشتیبانی DNSSEC، ابزارهای مانیتورینگ.
کاربردهای پیشرفته DNS
– Load balancing:
– Round-robin DNS: چند رکورد A/AAAA برای یک نام.
– Global Server Load Balancing (GSLB): مبتنی بر مکان، سلامت سرورها و Anycast.
– Anycast:
– همان IP روی چندین مکان فیزیکی اعلام میشود؛ مسیریابی شبکه ترافیک را به نزدیکترین نسخه هدایت میکند؛ معمول در root servers و resolverهای عمومی.
– Split-horizon DNS (Split-brain):
– نمایش اطلاعات متفاوت به کلاینتهای داخلی و خارجی (مثلاً برای دسترسی به سرویسهای خصوصی).
– Dynamic DNS (DDNS):
– بروزرسانی خودکار رکوردها (مثلاً برای کلاینتهای با IP دینامیک).
– پروتکلهای: RFC 2136 برای بروزرسانی دینامیک.
– DNS-based Service Discovery (DNS-SD) و mDNS:
– کشف سرویس در شبکه محلی (Apple Bonjour، Avahi).
– DANE و TLSA:
– نگه داشتن گواهیها یا هش گواهی در DNS (نیازمند DNSSEC).
مانیتورینگ، لاگینگ و عیبیابی
– ابزارها:
– dig, nslookup, host برای کوئری.
– tcpdump/wireshark برای بازرسی بستهها.
– rndc (برای BIND) برای مدیریت runtime.
– systemd-resolve –status یا resolvectl در سیستمهای systemd.
– ابزارهای آنلاین: intoDNS, DNSViz (برای تحلیل DNSSEC), mtr برای مسیر.
– شاخصهای مهم:
– Latency (زمان پاسخ)، error rate، cache hit ratio، QPS، استفادهٔ CPU/شبکه، TTL distribution.
– عیبیابی رایج و روشها:
– مشکل resolve برای همه/برخی نامها: بررسی اتصال به resolver و تست recursive vs authoritative.
– تغییر رکورد اجرا نشده: بررسی TTL، replication در slave، serial number در SOA.
– خطاهای DNSSEC: بررسی chain of trust، رکورد DS در parent، زمانبندی کلیدها.
– مشکلات با DoH/DoT: بررسی پورتها، گواهی TLS، تنظیمات client.

راهنمای گامبهگام تغییر/تنظیم DNS در ویندوز
(شامل GUI، PowerShell و netsh)
11.1 تغییر DNS از طریق GUI (Windows 10/11)
1. Settings > Network & Internet > Ethernet یا Wi‑
2. روی اتصال فعلی کلیک کنید، سپس “Edit” زیر “IP settings”.
3. در Edit IP settings، از “Automatic (DHCP)” به “Manual” تغییر داده و IPv4/IPv6 را فعال کنید.
4. در فیلد DNS، آدرسهای DNS مورد نظر را وارد کنید (Primary, Secondary).
5. Save.
نکته: مسیرهای قدیمیتر Control Panel:
– Control Panel > Network and Sharing Center > Change adapter settings > Properties روی رابط > Internet Protocol Version 4 (TCP/IPv4) > Properties > Use the following DNS server addresses.
11.2 تغییر DNS با PowerShell
– مشاهدهٔ کانفیگ فعلی:
Get-DnsClientServerAddress
– تنظیم DNS برای رابط مشخص (مثال: رابط با نام “Ethernet”):
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses ("1.1.1.1","1.0.0.1")
– بازگرداندن به DHCP:
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ResetServerAddresses
– تنظیم اولویت (primary/secondary) با آرایهٔ آدرسها. برای IPv6 از -AddressFamily IPv6 استفاده کنید.
11.3 تغییر DNS با netsh
– نمایش رابطها:
netsh interface ipv4 show interfaces
– تنظیم DNS استاتیک:
netsh interface ipv4 set dns name="Ethernet" static 1.1.1.1 netsh interface ipv4 add dns name="Ethernet" 1.0.0.1 index=2
– پاک کردن:
netsh interface ipv4 set dns name="Ethernet" dhcp
11.4 پاک کردن کش DNS ویندوز
– برای پاکسازی cache resolver محلی:
ipconfig /flushdns
– مشاهده cache:
ipconfig /displaydns
11.5 استفاده از DNS over HTTPS/TLS در ویندوز 11
– Windows 11 (نسخۀ اخیر) از DNS over HTTPS در Settings پشتیبانی میکند:
– Settings > Network & Internet > Wi‑Fi/Ethernet > Hardware properties > DNS server assignment > Edit > Choose “Manual” > Toggle “Preferred DNS over HTTPS” (اگر در دسترس).
– برای نسخههای قدیمیتر میتوانید از کلاینتهای سومی که DoH را پشتیبانی میکنند استفاده کنید (مانند Cloudflare WARP یا Mozilla’s DoH client) یا از تغییر رجیستری/Group Policy در محیط سازمانی بهره ببرید.

راهنمای گامبهگام تغییر/تنظیم DNS در لینوکس
(پوشش systemd-resolved، NetworkManager، /etc/resolv.conf، dnsmasq و مثال توزیعها)
12.1 شناخت اجزاء مختلف در لینوکس
– تاریخی: /etc/resolv.conf فایل سنتی که resolver libc از آن میخواند.
– اما در توزیعهای مدرن: systemd-resolved یا NetworkManager یا resolvconf میتوانند این فایل را مدیریت کنند یا پیوند (symlink) به یک فایل پویا بگذارند.
– بررسی وضعیت کنونی:
cat /etc/resolv.conf systemd-resolve --status یا resolvectl status nmcli device show برای NetworkManager
12.2 تغییر DNS برای همهٔ سیستم (بدون NetworkManager یا systemd-resolved)
– مستقیماً ویرایش /etc/resolv.conf (موقتی در محیطهایی که سرویسها آن را بازنویسی نمیکنند):
nameserver 1.1.1.1 nameserver 1.0.0.1
– برای دائمی کردن در سیستمهایی که فایل را بازنویسی میکنند، باید مکانیزم تولیدکنندهٔ فایل را تغییر داد (systemd-resolved, NetworkManager).
12.3 systemd-resolved (Ubuntu 18.04+/Debian-modern)
– بررسی فعال بودن:
systemctl status systemd-resolved resolvectl status
– تنظیم DNS برای یک رابط خاص:
resolvectl dns eth0 1.1.1.1 1.0.0.1 resolvectl domain eth0 example.com
– یا از فایل تنظیمات:
– ویرایش /etc/systemd/resolved.conf و اضافه کردن:
[Resolve] DNS=1.1.1.1 1.0.0.1 FallbackDNS=8.8.8.8 8.8.4.4 DNSStubListener=yes
– سپس ریاستارت:
systemctl restart systemd-resolved
– توجه: systemd-resolved به طور پیشفرض یک stub resolver روی 127.0.0.53 اجرا میکند؛ /etc
…/etc/resolv.conf معمولاً به 127.0.0.53 اشاره میکند. برای استفادهٔ مستقیم از resolverهای خارجی، یا resolv.conf را به آدرسهای DNS تغییر دهید یا systemd-resolved را پیکربندی کنید تا درخواستها را فوروارد کند.
12.4 NetworkManager (Ubuntu Desktop, Fedora)
– با nmcli:
– مشاهده اتصالات:
nmcli connection show
– تنظیم DNS استاتیک برای اتصال (مثال نام اتصال “Wired connection 1”):
nmcli connection modify "Wired connection 1" ipv4.ignore-auto-dns yes nmcli connection modify "Wired connection 1" ipv4.dns "1.1.1.1,1.0.0.1" nmcli connection up "Wired connection 1"
– بازگرداندن به DHCP:
nmcli connection modify "Wired connection 1" ipv4.ignore-auto-dns no nmcli connection up "Wired connection 1"
– از طریق GUI: Settings > Network > (انتخاب اتصال) > IPv4 > DNS.
12.5 استفاده از dnsmasq به عنوان کش محلی
– نصب (Debian/Ubuntu):
sudo apt install dnsmasq
– پیکربندی ساده در /etc/dnsmasq.conf یا فایلهای در /etc/dnsmasq.d/:
no-resolv server=1.1.1.1 server=1.0.0.1 listen-address=127.0.0.1 cache-size=1000
– سپس در /etc/resolv.conf:
nameserver 127.0.0.1
– ریاستارت dnsmasq:
sudo systemctl restart dnsmasq
12.6 پیکربندی DNSoverHTTPS/DoT در لینوکس
– ابزارهایی مانند cloudflared، systemd-resolved (برخی نسخهها) یا dnscrypt-proxy:
– نصب cloudflared و فعالسازی DoH به عنوان resolver محلی؛ سپس /etc/resolv.conf به 127.0.0.1 اشاره میکند.
– مثال با cloudflared:
cloudflared proxy-dns --address 127.0.0.1 --port 5053 --upstream https://1.1.1.1/dns-query
سپس resolv.conf:
nameserver 127.0.0.1 port 5053
13. نکات عملی، بهترین شیوهها و توصیهها
– همیشه قبل از تغییر رکوردهای حیاتی، TTL را کاهش دهید.
– از DNSSEC برای حفاظت در برابر cache poisoning استفاده کنید، ولی مراقب پیچیدگیهای آن باشید.
– برایresolverهای عمومی از anycast و پراکندگی جغرافیایی استفاده کنید تا میزان تأخیر کاهش یابد.
– برای مؤسسات: لاگینگ و مانیتورینگ، محدودسازی نرخ (rate limiting) و استفاده از CDN/Anycast برای مقاومت در برابر DDoS ضروری است.
– مستندسازی serial و روشهای بازگشت به حالت قبلی (rollback) در تغییر رکوردها.
– در محیطهای ترکیبی، هماهنگی بین DHCP و DNS (DDNS) را بررسی کنید تا تضاد IP/name رخ ندهد.
– برای تست: از dig +short، dig +trace، nslookup، tcpdump و DNSViz استفاده کنید.





قوانین ارسال دیدگاه
لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.