فهرست محتوا
سیستم نام دامنه (Domain Name System) همان دفترچه تلفن عمومی اینترنت است. کاربران اینترنت میتوانند از طریق نامهای دامنهای مانند nytimes.com یا google.com به اطلاعات آنلاین مورد نظر خود دسترسی پیدا کنند اما مرورگرهای وب تنها از طریق آدرسهای IP میتوانند با وبسایتها ارتباط برقرار کنند. به عنوان مثال، اگر فردی در مرورگر خود، نام دامنه “example.com” را تایپ کند، سروری در پشت صحنه آن نام را به آدرس آیپی ۲۰۳.۰.۱۱۳.۷۲ ترجمه یا تبدیل خواهد کرد. DNS در واقع نامهای دامنهای که کاربران در بخش جستجوی مرورگر خود تایپ میکنند را با آدرسهای IP موجود مطابقت میدهد تا مرورگرها بتوانند سایتهای مورد نظر را باز کنند. کاربران با کمک سرورهای دیاناس دیگری نیازی به حفظ کردن آدرسهای IP مانند ۱۹۲.۱۶۸.۱.۱ یا آدرسهای IP پیچیدهای مانند cb00:۲۰۴۸:۱::c۶۲۹:d۷a۲ را ندارند. البته با وارد کردن آدرس IP هم میتوانید به وبسایت مورد نظر خود دسترسی پیدا کنید. مثلا با وارد کردن 172.217.18.14 در مرورگر خود به سایت google.com وارد میشوید:
در حال حاضر بیش از ۳۶۰ میلیون دامنه ثبت شده در سرتاسر دنیا وجود دارد اما تعداد IPها بیش از ۴ میلیارد عدد میباشد و این یعنی یک دامنه میتواند بیش از یک آدرس IP داشته باشد. به عنوان مثال سرور فیزیکی که شما از طریق آن وارد وبسایت خاصی میشوید، با سروری که شخصی در کشور فرانسه برای ورود به همان وبسایت استفاده میکند، متفاوت است. توجه داشته باشید که DNS تنها سیستمی است که کاربران به کمک آن میتوانند از اینترنت استفاده کنند.
DNS چگونه کار میکند؟
DNS Resolution به فرآیند تبدیل نام دامنه به آدرس IP گفته میشود و هر دستگاه متصل به اینترنت دارای آدرس IP مخصوص خود است. کاربران بدون فرآیند DNS Resolution که توسط یک سرور DNS انجام میشود، نمیتوانند به وبسایت مورد نظر خود دسترسی پیدا کنند. برای درک فرآیند DNS Resolution، باید با اجزای مختلفی کوئریهای دیاناس که به سرور DNS ارسال میشوند، آشنا شوید. در ابتدا کاربر آدرس اینترنتی مورد نظر را در قسمت جستجوی مرورگر خود تایپ میکند. کامپیوتر شما برای پیدا کردن آدرس IP مرتبط با نام دامنه، باید در ابتدا از طریق یک کلاینت دیاناس، یک کوئری (درخواست) ایجاد کند. کوئری ایجاد شده سپس به سمت سرور DNS Recursive ارسال میشود که به آن DNS Resolver نیز میگویند. DNS Resolverها معمولاً توسط ارائهدهندههای خدمات اینترنتی (ISP) مانند AT&T یا ایرانسل مدیریت میشوند و دقیقا میدانند که درخواست خود را باید به کدام سرورهای دیاناس ارسال کنند. به سرورهایی که حاوی اطلاعات مورد نیاز برای DNS Resolverها هستند، Authorative Nameserver میگویند. در این مرحله برای آدرس IP مورد نظر یک کوئری DNS ایجاد میشود. این کوئری در ابتدا به سمت سرور ریشه (Root Server) هدایت میشود که دارای اطلاعات دامنههای سطح بالا ( .com، .net،.org و …) و دامنههای کشوری (.ir،.fr و …) میباشد. سرورهای ریشه در سراسر جهان پخش شدهاند، بنابراین سیستم دیاناس درخواستها را به نزدیکترین سرور هدایت میکند.درخواست مورد نظر پس از رسیدن به سرور ریشه، به سرور دامنه سطح بالا (TLD Server) منتقل میشود که اطلاعات دامنههای سطح بالا در آن ذخیره میشوند. این اطلاعات همان کلماتی است که شما در کادر جستجوی مرورگر وب خود تایپ میکنید. درخواست ایجاد شده، در مرحله آخر به نیمسرور دامنه (Domain Nameserver) فرستاده میشود. نیم سرور دامنه نیز پس از جستجوی آدرسIP، آن را به سمت کلاینت DNS ارسال کرده و بدین ترتیب کاربر میتواند به وبسایت مورد نظر خود دسترسی پیدا کند. اگر نیم سرور دامنه نتواند برای نام دامنه وارد شده هیچ رکورد DNS مناسبی پیدا کند، مرورگر وب پیام خطا به شما نشان خواهد داد. نکته جالب این است که تمام این مراحل تنها در عرض چند میلیثانیه انجام میشوند.
کش DNS چیست؟
بسیاری از کاربران ممکن است بارها در طول روز، از وبسایتی مانند گوگل یا یوتوب استفاده کنند. کامپیوتر شما به جای اینکه هر بار برای تبدیل نام دامنه به آدرس IP، درخواستی به نیمسرور DNS ارسال کند، اطلاعات آن را در حافظه پنهان خود ذخیره میکند و بنابراین مرورگر شما برای ورود به وبسایتی که قبلا از آن استفاده کردید، دیگر نیاز به دسترسی به سرور DNS نخواهد داشت. بنابراین به مرور زمان اطلاعات وبسایتهای بیشتری در کامپیوتر شما ذخیره شده و در نتیجه تعداد درخواستهای ارسالی به سرور دیاناس تا حد زیادی کاهش خواهند یافت که این امر باعث افزایش سرعت سیستم و مرورگر و کاهش مصرف پهنای باند و CPU میشود. دادههای دیاناس را میتوان در مکانهای مختلفی ذخیره کرد (مرورگر، سیستم عامل، Recursive Resolver،…) و اکثر مرورگرها (مانند Apple Safari،Google Chrome و Mozilla Firefox) بهطور پیشفرض دادههای مربوط به DNS را تنها برای مدت زمان مشخصی (TTL) ذخیره میکنند. معمولا حافظه کش مرورگرها اولین مکانی است که در هنگام ایجاد رکورد DNS مورد بررسی قرار میگیرد تا از ارسال کوئری تکراری جلوگیری شود. در مرورگر کروم، با رفتن به آدرس chrome://net-internals/#dns، میتوانید از وضعیت کش DNS خود مطلع شوید.
DNS Cache Poisoning چیست؟
DNS Cache Poisoning که به آن جعل دیاناس نیز گفته میشود، نوعی حمله سایبری است که در آن، دادههای DNS نادرست یا خراب به حافظه پنهان دستگاه هدف ارسال میشوند. این عمل باعث میشود تا نیمسرور، آدرس IP اشتباهی را به DNS کلاینت ارسال کند و در نتیجه مرورگر وبسایت دیگری را برای شما باز خواهد کرد.
انواع سرورهای DNS کدامند؟
Recursive DNS Server:
این نوع سرور را میتوان بهعنوان کتابداری در نظر گرفت که از او خواسته میشود تا به دنبال کتاب خاصی در کتابخانه برود و آن را پیدا کند. Recursive DNS Server سروری است که برای دریافت کوئری از طریق اپلیکیشنهایی مانند مرورگرهای وب طراحی شده است و معمولاً مسئول ایجاد درخواستهای اضافی است که کاربران برای ورود به وبسایت مورد نظر خود ایجاد میکنند. Recursive DNS Serverها معمولاً توسط شرکتهای ارائهدهنده خدمات اینترنتی مدیریت میشوند و در صورت داشتن آدرس IP درخواستی، آن را به مرورگر ارسال میکنند و در نهایت کاربر میتواند وبسایت مورد نظر خود را باز کند. با ذخیره رکوردهای دیاناس در حافظه پنهان مرورگر میتوان از ارسال درخواستهای اضافی به Recursive DNS Server جلوگیری کرد.
Root Nameserver:
این سرور بخشی از زیرساخت پشتیبانی اینترنت میباشد و در واقع اولین جایی است که در آن، نامهای دامنه به آدرسهای IP تبدیل میشوند. اگر حافظه پنهان مرورگر شما نتواند پاسخی برای درخواست کاربر پیدا کند، درخواست مورد نظر به Root Nameserver ارسال خواهد شد. این سرور در واقع دارای فهرستی از تمام سرورهایی است که ممکن است اطلاعات مورد نیاز مرورگر را در اختیار داشته باشند. Root Nameserver پس از دریافت کوئری از Recursive DNS Server، آن را به نیمسرورهای TLD ارسال میکند. ترافیک اینترنت هرگز از Root Nameserver عبور نمیکند و مسیریابی یا روتینگ نیز جزو وظایف آن نمیباشد. در مورد تعداد واقعی Root Nameserverها اختلاف نظرهایی وجود دارد. بسیاری از منابع ادعا میکنند که تنها ۱۳ Root Nameserver در دنیا وجود دارد با این حال مشخص شده است که این ادعاها نادرست است و تعداد واقعی آنها تا ماه ژوئن سال ۲۰۲۰ میلادی، ۱۰۸۶ عدد بود.
TLD Nameserver:
استفاده از TLD Nameserver ،گام بعدی در جستجوی آدرس IP است. Root Nameserver در صورت پیدا نشدن آدرس IP مورد نظر، کوئری یا درخواست جستوجوی ایجاد شده را به سمت TLD Nameserver ارسال میکند. TLD Nameserver جستجوی خود را بر اساس دامنههای سطح بالا ( .com ، .org ، …) و پسوندهای کشوری انجام میدهد و مسئول حفظ اطلاعات نام دامنه هستند. مدیریت این سرورها بر عهده سازمان IANA است که شعبهای از ICANN میباشد.
این سرور آخرین ایستگاه برای یافتن آدرس IP مورد نظر میباشد. اگر Authoritative Nameserver آدرس IP مورد نظر را پیدا کند، آن را به Recursor DNS ارسال میکند. Recursor DNS نیز در نهایت آن را به سمت مرورگر وب ارسال کرده و وبسایت مورد نظر باز میشود.
مزایای استفاده از دیاناس کدامند؟
• برطرف کردن نیاز کاربران به حفظ کردن آدرسهای IP
• افزودن یک لایه امنیتی اضافی به شبکه شما
• ممکنسازی تراکنشهای آنلاین
• بهروزرسانی آدرس IP در صورت تغییر نامه دامنه توسط مالک وبسایت
• سرعت بسیار بالا
• افزایش سرعت مرورگر
• انعطاف و سازگاری بالا
آیا DNS امن است؟
هکرها در شناسایی آسیبپذیریهای دنیای اینترنت و دستگاههای متصل به آن بسیار هوشمندانه عمل میکنند و سهم بزرگی از حملات سایبری نیز مربوط به DNSها میباشد. نظرسنجی که در سال ۲۰۲۱ توسط IDC انجام شد، نشان میدهد که ۸۷٪ از سازمانها و شرکتهای واقع در آمریکای شمالی، اروپا و آسیا-اقیانوسیه، در برههای از فعالیت خود مورد حمله دیاناس قرار گرفتند. هر حمله دیاناس به طور میانگین حدود ۱ میلیون دلار به سازمانها و شرکتهای آمریکای شمالی زیان میرساند. این گزارش همچنین نشان داد که سازمانها در سال گذشته به طور میانگین ۷.۶ بار مورد حمله DNS قرار گرفتند. DNS amplification، DNS spoofing،DNS Cache poisining، DNS tunneling، DNS Hijacking و DNS re-direction از جمله رایجترین انواع حملات DNS هستند.
انواع کوئریهای DNS کدامند؟
در فرآیند جستجوی DNS، معمولا از سه نوع کوئری استفاده میشود. ترکیب این سه کوئری باهم باعث میشود تا درخواستهای ایجاد شده، مسافت کمتری را طی کنند و در کل منجر به بهبود عملکرد دیاناس میشود.
کوئری بازگشتی (Recursive Query):
در کوئری بازگشتی، سرور DNS (معمولاً یک Resolver Recursive DNS) یا رکورد مناسبی را به سمت کلاینت ارسال میکند و یا در صورت پیدا نکردن آن، یک پیام خطا نشان میدهد.
کوئری تکرار شونده (Iterative Query):
در این حالت، کلاینت DNS به سرور دیاناس اجازه میدهد تا بهترین پاسخ ممکن را بازگرداند. اگر سرور DNS مورد نظر نتواند برای کوئری ایجاد شده پاسخ مناسبی پیدا کند، در این صورت آن را به Authoritative Nameserver ارجاع میکند تا دامنههای سطح پایین نیز مورد بررسی قرار بگیرند و در مرحله بعد نیز کلاینت DNS یک کوئری به آدرس مرجع ارسال میکند. این فرآیند تا زمانی که خطا یا وقفهای رخ ندهد، تکرار میشود.
کوئری غیر بازگشتی (Non-recursive Query):
در این حالت یک کلاینت DNS Resolver، برای پیدا کردن رکورد مورد نظر خود، کوئری را به سمت سرور DNS ارسال میکند که این رکورد هم از طریق سرور DNS و هم از طریق کلاینت DNS Resolver قابل دسترس میباشد. یک سرور DNS معمولا برای جلوگیری از مصرف پهنای باند اضافی و بارگذاری بر روی سرورهای آپستریم (Upstream Servers)، رکوردهای دیاناس را ذخیره میکند.
انواع رکوردهای DNS:
نوع رکورد | توضیحات |
A Record | محبوبترین نوع رکورد میباشد که وظیفه نگهداری آدرسهای IP مرتبط با نامهای دامنه را بر عهده دارد. A record تنها برای آدرسهای IPv4 قابل استفاده میباشد. |
NS Recod | اطلاعات ارائه شده توسط رکورد NS، نشان میدهند که کدام سرور DNS برای دامنه مورد نظر معتبر میباشند( کدام سرور حاوی رکوردهای واقعی DNS هستند). رکوردهای NS در واقع به اینترنت میگویند که برای یافتن آدرس IP به کجا باید مراجعه کند. |
TXT Record | رکورد متنی (TXT Recod) یکی از رایجترین رکوردهای DNS است که حاوی اطلاعاتی میباشد که به راحتی توسط انسان قابل خواندن هستند. رکوردهای TXT برای تأیید مالکیت دامنه، احراز هویت، گزارشدهی و مقابله با هرزنامه ایمیل مورد استفاده قرار میگیرند. |
Cname Record | رکورد Cname برای ایجاد نام مستعار برای رکوردهای A و AAAA و تغییر نامه دامنه مورد استفاده قرار میگیرند. این نوع رکورد همچنین باعث آسانتر شدن نگهداری رکوردهای متصل به آدرسهای IP میشوند. |
در تهیه این مقاله، از وبسایتهای معتبر cloudflare، networkworld، techtarget و fortinet استفاده شده است.