DNS چیست؟

وقتی در مرورگر آدرس یک سایت مانند google.com یا bytotech.ir را وارد می‌کنید، مرورگر چگونه متوجه می‌شود باید به کدام سرور متصل شود؟

کامپیوترها برای برقراری ارتباط در شبکه از IP Address استفاده می‌کنند، اما حفظ کردن آدرس‌هایی مانند 142.250.185.14 برای انسان‌ها چندان ساده نیست.

اینجاست که DNS وارد عمل می‌شود.

DNS مخفف Domain Name System است و یکی از مهم‌ترین سرویس‌های زیرساختی اینترنت محسوب می‌شود. وظیفه اصلی DNS این است که نام‌های دامنه قابل فهم برای انسان را به آدرس‌های IP قابل استفاده برای سیستم‌ها تبدیل کند.

به زبان ساده:

DNS مانند دفترچه تلفن اینترنت است.

شما نام یک سایت را وارد می‌کنید و DNS کمک می‌کند آدرس IP مربوط به آن دامنه پیدا شود.

اما عملکرد DNS فقط به تبدیل دامنه به IP محدود نمی‌شود. DNS دارای انواع مختلفی از سرورها، رکوردها و فرآیندهای Lookup است که هرکدام نقش مشخصی در عملکرد شبکه دارند.

در این مقاله از بایتوتِک (Bytotech) قرار است DNS را از پایه تا سطح فنی‌تر بررسی کنیم و با مفاهیمی مانند DNS Resolver، Root Server، TLD، Authoritative DNS، DNS Cache و رکوردهای مختلف DNS آشنا شویم.

 


DNS چگونه کار می‌کند؟

برای درک DNS بهتر است یک مثال ساده بزنیم.

فرض کنید شما در مرورگر خود عبارت زیر را وارد می‌کنید:

www.example.com

کامپیوتر شما نمی‌تواند صرفاً با استفاده از این نام، مستقیماً یک اتصال IP برقرار کند.

ابتدا باید IP مربوط به این دامنه پیدا شود.

فرآیند کلی تقریباً به این شکل است:

Domain Name → DNS Lookup → IP Address → Connection

یعنی ابتدا نام دامنه بررسی می‌شود، سپس آدرس IP مربوط به آن پیدا می‌شود و در نهایت سیستم می‌تواند با سرور مقصد ارتباط برقرار کند.

برای مثال اگر DNS مشخص کند که:

example.com → 93.184.216.34

سیستم می‌تواند درخواست خود را به آدرس IP مقصد ارسال کند.

البته در دنیای واقعی، این فرآیند کمی پیچیده‌تر از این مثال ساده است.

 


چرا به DNS نیاز داریم؟

بدون DNS، کاربران برای دسترسی به سایت‌ها مجبور بودند آدرس‌های IP را به خاطر بسپارند.

تصور کنید برای باز کردن هر سایت مجبور بودید چیزی شبیه این را وارد کنید:

142.250.185.14

یا:

104.18.27.46

این کار برای تعداد زیادی سایت بسیار دشوار است.

DNS این مشکل را حل می‌کند و اجازه می‌دهد به جای IP، از نام‌های قابل فهم استفاده کنیم.

برای مثال:

www.google.com

یا:

www.bytotech.ir

این نام‌ها برای انسان‌ها ساده‌تر هستند، در حالی که DNS آن‌ها را به اطلاعات موردنیاز شبکه تبدیل می‌کند.

 


تفاوت DNS و IP چیست؟

این دو مفهوم ارتباط بسیار نزدیکی با یکدیگر دارند اما یکی نیستند.

IP Address آدرس منطقی یک Interface در شبکه است.

اما DNS یک سیستم و سرویس برای مدیریت و Resolve کردن نام‌های دامنه است.

به زبان ساده:

IP = آدرس شبکه

DNS = سیستم تبدیل و مدیریت نام دامنه

برای مثال:

Domain: example.com

IP: 93.184.216.34

DNS کمک می‌کند سیستم بفهمد دامنه example.com به چه آدرس IPای مربوط است.

 


DNS Resolver چیست؟

یکی از مفاهیم مهم در معماری DNS، DNS Resolverاست.

وقتی سیستم شما به یک DNS Server درخواست ارسال می‌کند، معمولاً یک Resolver وظیفه پیدا کردن پاسخ مناسب را بر عهده دارد.

Resolver می‌تواند بررسی کند که آیا پاسخ موردنظر را قبلاً در Cache خود دارد یا خیر.

اگر پاسخ در Cache موجود نباشد، ممکن است برای پیدا کردن پاسخ از سرورهای DNS دیگر درخواست ارسال کند.

به همین دلیل Resolver یکی از بخش‌های مهم فرآیند DNS Resolution محسوب می‌شود.

 


DNS Resolution چیست؟

به فرآیندی که طی آن DNS تلاش می‌کند IP مربوط به یک Domain Name را پیدا کند، DNS Resolution گفته می‌شود.

برای مثال فرض کنید کاربر وارد:

www.example.com

شود.

سیستم باید IP مربوط به آن را پیدا کند.

در این فرآیند ممکن است چند مرحله مختلف انجام شود تا پاسخ نهایی به Client بازگردد.

این فرآیند یکی از مهم‌ترین مفاهیمی است که برای درک عملکرد DNS باید یاد بگیرید.

 


DNS Lookup چیست؟

DNS Lookup به فرآیند جست‌وجوی اطلاعات مربوط به یک دامنه در سیستم DNS گفته می‌شود.

برای مثال می‌توانیم بررسی کنیم:

example.com → چه IP دارد؟

یا حتی اطلاعات دیگری مانند:

Mail Server دامنه چیست؟

در DNS Lookup بسته به نوع Query می‌توان رکوردهای مختلفی را بررسی کرد.

ابزارهایی مانند:

nslookup

و:

dig

برای بررسی DNS بسیار کاربردی هستند.

 


DNS Server چیست؟

DNS Server سیستمی است که اطلاعات DNS را نگهداری یا در فرآیند پاسخ‌گویی به درخواست‌های DNS مشارکت می‌کند.

اما همه DNS Serverها دقیقاً یک کار انجام نمی‌دهند.

در معماری DNS نقش‌های مختلفی وجود دارد که مهم‌ترین آن‌ها عبارت‌اند از:

  • Recursive Resolver 
  • Root DNS Server 
  • TLD DNS Server 
  • Authoritative DNS Server 

شناخت تفاوت این سرورها برای درک درست DNS بسیار مهم است.

 


Recursive DNS Server چیست؟

وقتی سیستم شما یک درخواست DNS ارسال می‌کند، ممکن است Recursive Resolver وظیفه پیدا کردن پاسخ نهایی را بر عهده بگیرد.

فرض کنید کاربر درخواست IP مربوط به:

www.example.com

را ارسال کرده است.

اگر Resolver پاسخ را در Cache نداشته باشد، می‌تواند برای پیدا کردن پاسخ به بخش‌های مختلف سلسله‌مراتب DNS مراجعه کند.

در نهایت پاسخ پیدا شده و به Client برگردانده می‌شود.

 


Root DNS Server چیست؟

در بالاترین سطح سلسله‌مراتب DNS، Root DNS Serversقرار دارند.

Root Serverها معمولاً پاسخ نهایی مربوط به IP یک دامنه را ارائه نمی‌کنند.

در عوض، می‌توانند Resolver را به سمت سرور مربوط به TLD هدایت کنند.

برای مثال اگر دامنه‌ای با:

.com

تمام شود، Root Server می‌تواند اطلاعات مربوط به سرورهای TLD مربوط به .com را در اختیار Resolver قرار دهد.

 


TLD Server چیست؟

TLD مخفف:

Top-Level Domain

است.

TLD همان بخش انتهایی دامنه است.

برای مثال در:

example.com

بخش:

.com

یک TLD محسوب می‌شود.

نمونه‌های دیگر:

.org

.net

.ir

.uk

.edu

و بسیاری موارد دیگر.

TLD DNS Server اطلاعات مربوط به Name Serverهای Authoritative دامنه را در اختیار Resolver قرار می‌دهد.

 


Authoritative DNS Server چیست؟

Authoritative DNS Server سروری است که اطلاعات معتبر مربوط به یک Domain Zone را در اختیار دارد.

برای مثال وقتی دامنه‌ای ثبت می‌کنید، DNSهای Authoritative مربوط به آن دامنه مشخص می‌شوند.

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

A

AAAA

MX

CNAME

TXT

و سایر رکوردهای DNS را در اختیار Resolver قرار دهند.

به زبان ساده:

Authoritative DNS منبع اصلی اطلاعات DNS یک دامنه است.

 


فرآیند DNS Resolution به زبان ساده

حالا می‌توانیم کل فرآیند را کنار هم قرار دهیم.

فرض کنید کاربر می‌خواهد وارد:

www.example.com

شود.
 

مرحله اول: بررسی Cache

سیستم ابتدا بررسی می‌کند که آیا IP دامنه را قبلاً در Cache دارد یا خیر.
 

مرحله دوم: ارسال درخواست به Resolver

اگر پاسخ موجود نباشد، درخواست به DNS Resolver ارسال می‌شود.
 

مرحله سوم: بررسی Root

Resolver در صورت نیاز از Root DNS اطلاعات مربوط به TLD را دریافت می‌کند.
 

مرحله چهارم: مراجعه به TLD

Resolver سرورهای مربوط به TLD را بررسی می‌کند.
 

مرحله پنجم: پیدا کردن Authoritative Server

TLD اطلاعات مربوط به Name Server معتبر دامنه را ارائه می‌کند.
 

مرحله ششم: دریافت پاسخ نهایی

Resolver از Authoritative DNS رکورد موردنظر را دریافت می‌کند.
 

مرحله هفتم: بازگشت پاسخ

IP مربوط به دامنه به Client برگردانده می‌شود.
در نهایت مرورگر می‌تواند با سرور مقصد ارتباط برقرار کند.

 


DNS Cache چیست؟

برای اینکه فرآیند DNS هر بار از ابتدا انجام نشود، اطلاعات DNS می‌توانند برای مدت مشخصی Cache شوند.

این موضوع باعث کاهش تعداد Queryها و افزایش سرعت پاسخ‌گویی می‌شود.

Cache ممکن است در بخش‌های مختلف وجود داشته باشد؛ از جمله:

  • سیستم‌عامل 
  • مرورگر 
  • DNS Resolver 
  • تجهیزات شبکه 

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

 


TTL در DNS چیست؟

یکی از مفاهیم مهم در DNS، TTL یا:

Time To Live

است.

TTL مشخص می‌کند یک رکورد DNS تا چه مدت می‌تواند در Cache نگهداری شود.

برای مثال اگر TTL یک رکورد برابر با:

3600

باشد، مقدار آن معمولاً به معنی ۳۶۰۰ ثانیه یا یک ساعت است.
TTL مناسب می‌تواند به کاهش تعداد Queryهای DNS کمک کند.
اما TTL پایین نیز می‌تواند باعث شود تغییرات DNS سریع‌تر در Cacheها منقضی شوند.
بنابراین انتخاب TTL مناسب در مدیریت DNS اهمیت دارد.

 


رکورد A چیست؟

یکی از معروف‌ترین رکوردهای DNS، رکورد:

A Record

است.

این رکورد یک نام دامنه را به یک IPv4 Address مرتبط می‌کند.

برای مثال:

example.com → 192.0.2.10

رکورد A برای سرویس‌هایی که از IPv4 استفاده می‌کنند بسیار رایج است.

 


رکورد AAAA چیست؟

رکورد:

AAAA

مشابه رکورد A است، اما برای IPv6 استفاده می‌شود.

برای مثال:

example.com → 2001:db8::10

بنابراین:

A → IPv4

AAAA → IPv6

این یکی از مهم‌ترین تفاوت‌هایی است که هنگام کار با DNS باید به خاطر داشته باشید.

 


رکورد CNAME چیست؟

CNAME مخفف:

Canonical Name

است.

این رکورد به یک نام دامنه دیگر اشاره می‌کند.

برای مثال ممکن است داشته باشیم:

www.example.com → example.com

در چنین حالتی www.example.com می‌تواند به عنوان Alias برای دامنه اصلی استفاده شود.

CNAME در مدیریت دامنه‌ها و سرویس‌های مختلف بسیار کاربردی است.

 


رکورد MX چیست؟

اگر تاکنون برای یک دامنه ایمیل ساخته باشید، احتمالاً با:

MX Record

مواجه شده‌اید.

MX مخفف:

Mail Exchange

است.

این رکورد مشخص می‌کند ایمیل‌های مربوط به یک دامنه باید به کدام Mail Server ارسال شوند.

برای مثال:

example.com → mail.example.com

یعنی Mail Server مربوط به دامنه در DNS مشخص شده است.

 


رکورد NS چیست؟

رکورد:

NS

مخفف:

Name Server

است.

این رکورد مشخص می‌کند کدام DNS Serverها مسئول مدیریت اطلاعات DNS یک دامنه هستند.
برای مثال یک دامنه ممکن است Name Serverهایی مانند:

ns1.example.com

و:

ns2.example.com

داشته باشد.

NS Record نقش مهمی در مشخص کردن Authoritative DNS برای یک Zone دارد.

 


رکورد TXT چیست؟

رکورد TXT برای ذخیره اطلاعات متنی در DNS استفاده می‌شود.
این رکورد کاربردهای مختلفی دارد و یکی از کاربردهای بسیار مهم آن، تأیید مالکیت دامنه و پیاده‌سازی برخی سازوکارهای امنیتی ایمیل است.
برای مثال فناوری‌هایی مانند:

SPF

و اطلاعات مربوط به برخی سرویس‌های تأیید دامنه می‌توانند از TXT Record استفاده کنند.

 


رکورد PTR چیست؟

رکورد:

PTR

برای Reverse DNS Lookup استفاده می‌شود.

در DNS معمولی، نام دامنه را به IP تبدیل می‌کنیم:

Domain → IP

اما در Reverse DNS، مسیر برعکس است:

IP → Domain

PTR Record در سناریوهای مختلف شبکه و مخصوصاً برخی کاربردهای مرتبط با Mail Serverها اهمیت دارد.

 


Forward DNS و Reverse DNS چیست؟

DNS می‌تواند برای دو نوع جست‌وجوی مهم استفاده شود.
 

Forward DNS

در Forward Lookup:

Domain → IP

بررسی می‌شود.

مثلاً:

example.com → 192.0.2.10
 

Reverse DNS

در Reverse Lookup:

IP → Domain

بررسی می‌شود.

برای Reverse DNS معمولاً از PTR Record استفاده می‌شود.

 


DNS عمومی یا Public DNS چیست؟

کاربران معمولاً می‌توانند از DNS Serverهای عمومی استفاده کنند.

این DNS Serverها توسط شرکت‌ها و سازمان‌های مختلف ارائه می‌شوند و برای Resolve کردن دامنه‌های اینترنتی مورد استفاده قرار می‌گیرند.

برخی سرویس‌های DNS عمومی معروف عبارت‌اند از:

Google Public DNS

Cloudflare DNS

Quad9

البته انتخاب DNS مناسب به شرایط شبکه، موقعیت جغرافیایی، سیاست‌های سازمانی و نیازهای کاربر بستگی دارد.

 


DNS خصوصی یا Private DNS چیست؟

در شبکه‌های سازمانی ممکن است DNS Server داخلی وجود داشته باشد.

این DNS Server می‌تواند نام سیستم‌های داخلی را Resolve کند.

برای مثال در یک سازمان ممکن است نام:

server01.company.local

به یک IP داخلی مانند:

10.10.10.20

اشاره کند.

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

 


DNS در شبکه‌های سازمانی چه کاربردی دارد؟

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

  • سرویس‌های داخلی 
  • Web Serverها  
  • Mail Serverها  
  • Active Directory 
  • سرویس‌های Cloud 
  • Application Serverها 
  • Database Serverها 
  • Load Balancerها 

استفاده شود.

در محیط‌های Windows Domain، DNS یکی از سرویس‌های بسیار مهم برای عملکرد صحیح زیرساخت Active Directory محسوب می‌شود.

 


چگونه DNS را در ویندوز بررسی کنیم؟

یکی از ابزارهای ساده و کاربردی برای بررسی DNS در ویندوز:

nslookup

است.

Command Prompt را باز کنید و بنویسید:

nslookup google.com

این دستور اطلاعاتی درباره DNS Resolution دامنه موردنظر نمایش می‌دهد.
می‌توانید یک DNS Server مشخص را نیز برای Query استفاده کنید.

برای مثال:

nslookup google.com 8.8.8.8

در این حالت Query با استفاده از DNS Server مشخص‌شده انجام می‌شود.

 


دستور nslookup چه کاربردی دارد؟

nslookup یکی از ابزارهای بسیار مهم برای Network Troubleshooting است.

با استفاده از آن می‌توان مواردی مانند:

  • بررسی DNS Resolution 
  • بررسی IP یک Domain 
  • بررسی DNS Server 
  • بررسی رکوردهای DNS 

را انجام داد.

اگر سایتی برای شما باز نمی‌شود، اما اتصال شبکه برقرار است، بررسی DNS می‌تواند یکی از مراحل اولیه عیب‌یابی باشد.

 


ابزار dig چیست؟

در Linux و بسیاری از محیط‌های شبکه، ابزار:

dig

نیز برای بررسی DNS بسیار کاربردی است.

برای مثال:

dig example.com

می‌تواند اطلاعات مربوط به Query DNS را نمایش دهد.

همچنین می‌توان نوع رکورد موردنظر را مشخص کرد.

برای مثال:

dig example.com MX

برای بررسی رکوردهای MX استفاده می‌شود.

یا:

dig example.com NS

برای مشاهده Name Serverهای مربوط به دامنه کاربرد دارد.

 


اگر DNS کار نکند چه اتفاقی می‌افتد؟

فرض کنید اینترنت شما برقرار است اما DNS Server پاسخ نمی‌دهد.
در این شرایط ممکن است سایت‌ها با نام دامنه باز نشوند.

برای مثال:

google.com

ممکن است Resolve نشود.
اما اگر IP مقصد را مستقیماً داشته باشید، ممکن است بتوانید به آن IP دسترسی پیدا کنید.
این یکی از روش‌های مهم برای تشخیص تفاوت بین:

مشکل اتصال شبکه

و:

مشکل DNS

است.

البته دسترسی مستقیم به IP همیشه به معنی سالم بودن کامل ارتباط نیست و سرویس مقصد نیز باید دسترسی مستقیم با IP را پشتیبانی کند.

 


DNS Hijacking چیست؟

DNS Hijacking یکی از حملات مرتبط با زیرساخت DNS است.

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

 


DNS Spoofing چیست؟

در DNS Spoofing مهاجم تلاش می‌کند پاسخ DNS جعلی در اختیار قربانی قرار دهد.
هدف می‌تواند هدایت کاربر به یک مقصد جعلی باشد.
این حمله می‌تواند در سناریوهای مختلف شبکه انجام شود و یکی از دلایلی است که امنیت ارتباطات شبکه باید در کنار عملکرد DNS مورد توجه قرار گیرد.

 


DNSSEC چیست؟

یکی از فناوری‌های مهم امنیت DNS، DNSSEC است.
DNSSEC برای ایجاد امکان اعتبارسنجی پاسخ‌های DNS طراحی شده است.
هدف آن این است که Client یا Resolver بتواند بررسی کند پاسخ DNS واقعاً از منبع معتبر آمده و در مسیر دستکاری نشده است.
DNSSEC به‌صورت ساده قرار نیست DNS را رمزنگاری کند؛ بلکه تمرکز اصلی آن روی اصالت و یکپارچگی پاسخ‌های DNS است.
این تفاوت بسیار مهم است.

 


آیا DNS باعث افزایش سرعت اینترنت می‌شود؟

یکی از باورهای رایج این است که تغییر DNS همیشه باعث افزایش سرعت اینترنت می‌شود.
اما این موضوع دقیق نیست.
DNS عمدتاً مسئول تبدیل نام دامنه به اطلاعات موردنیاز برای برقراری ارتباط است.
اگر DNS Resolver سریع‌تر پاسخ دهد، ممکن است زمان شروع اتصال به سایت کاهش پیدا کند.
اما اگر سرعت سرویس اینترنت شما محدود باشد، تغییر DNS قرار نیست پهنای باند واقعی شما را چند برابر کند.

بنابراین باید بین:

DNS Response Time

و:

Internet Bandwidth

تفاوت قائل شوید.