DNS، یا Domain Name System، یکی از اصطلاحات اصلی در دنیای اینترنت است که بیشتر ما به طور روزمره از آن استفاده میکنیم، حتی بدون اینکه به آن فکر کنیم. در این مقاله، سعی داریم به بررسی مفهوم و عملکرد آن بپردازیم. از نام دامنه در فعالیتهای روزمرهی خود، از جمله تلفن همراه، چک کردن ایمیل، و مرور وب، بهرهمیبریم.
حالا بیایید سوال کنیم: DNS در واقع چیست؟
DNS یک سیستم جهانی است که تمام وبسایتها و دامنهها از آن برای شناسایی آدرسهای خود استفاده میکنند و بدون آن، هیچ وبسایتی قابل دسترس نخواهد بود.
تعریف DNS
DNS یا Domain Name System، عبارت است از “سیستم نام دامنه” که وظیفه ترجمه نام دامنه وبسایت به آدرس مربوطه یا همان IP را بر عهده دارد. در دنیای اینترنت، تمام دستگاهها از کامپیوترها گرفته تا تلفنهای هوشمند و سرورهای وب، با استفاده از اعداد (آدرسهای IP) یکدیگر را شناسایی و ارتباط برقرار میکنند. در این روش نامگذاری با اعداد IP انجام میشود.
هنگامی که قصد دارید به یک وبسایت وارد شوید و با سرور آن ارتباط برقرار کنید، نیازی نیست آدرس IP آن را به یاد بیاورید. به جای آن، کافی است نام دامنه وبسایت را وارد کنید و عملیات ترجمه نام دامنه به آدرس IP را به DNS بسپارید. این کار باعث میشود که نام دامنه، قابل فهم برای انسان، به آدرس IP، قابل فهم برای کامپیوترها تبدیل شود.
سرور DNS یا Nameserver چیست؟
Name Server یا DNS، بخش اساسی از سیستم نام دامنه محسوب میشود.
وبسایتها با استفاده از نیم سرورها، امکان استفاده از نامهای دامنه را به جای آدرسهای IP (که به دلیل پیچیدگی ذخیرهسازی آنها دشوار است) فراهم میکنند.
در زمان ثبت هر دامنه، حداقل باید دو Name Server تنظیم شود. این نیم سرورها معمولاً به صورت ns1.servername و ns2.servername نامگذاری میشوند طوری که به جای server name نام سرور مربوطه قرار میگیرد. اولین نیم سرور به عنوان primary و دومین نیم سرور به عنوان بکآپ مورد استفاده قرار میگیرند، به ویژه زمانی که اولین نیم سرور در دسترس نباشد.
DNS چگونه کار میکند؟
همانطورکه اشاره کردیم، DNS مسئول ترجمه دامنه به آدرس IP است. این فرآیند در چندین مرحله انجام میشود تا آدرس IP صحیح به دست کاربر برسد. یافتن آدرس IP وبسایت در میان تمامی DNS های جهان چالشی است که با معماری نام دامنه سهولت یافته است. در ادامه مطلب به نحوه عملکرد DNS خواهیم پرداخت:

Recursor DNS:که به عنوان DNS resolver نیز شناخته میشود، Query را از DNS Client دریافت میکند. سپس با سایر سرورهای DNS ارتباط برقرار کرده و سعی در یافتن نشانی IP صحیح دارد. پس از دریافت Query از سوی DNS resolver، و این resolver همانند خود Client عمل میکند. در این فرآیند، Query به سه سرور DNS دیگر ارسال میشود: Root nameserver، TLD nameserver و Authoritative nameserver.
Root nameserver: Root Nameserver وظیفه ارائه پاسخ به درخواستهایی دارد که برای رکوردها در حوزهٔ ریشهٔ DNS اینترنت ارسال میشوند. این سرور به ارسال یک فهرست از name server های معتبر که با پسوندهای دامنهٔ اصلی (Top-Level Domain یا TLD) مطابقت دارند، به درخواستها پاسخ میدهد.
TLD nameserver: در شبکههای DNS، یک TLD nameserver مسئول ذخیره نشانی IP مرتبط با یک دامنه در سطح دوم (Second-level Domain) در دامنهٔ TLD است. این سرور نشانی IP وبسایت را ذخیره کرده و آن را منتشر کرده، سپس درخواستهای مربوط به این دامنه را به nameserver اصلی آن ارسال میکند.
Authoritative nameserver: Authoritative nameserver مسئول ارائه پاسخ واقعی به درخواستهای Query است. این نوع سرور دارای دو نوع اصلی است: سرور اصلی یا Nameserver اصلی (Master Server) و سرور فرعی یا Nameserver ثانویه (Slave Server). سرور اصلی نسخههای اصلی رکوردهای Zone را نگهداری و مدیریت میکند، در حالی که سرور فرعی نسخه پشتیبان دقیقی از سرور اصلی را نگهداری کرده و اطلاعات DNS Server را به اشتراک میگذارد. در صورت خرابی سرور اصلی، سرور فرعی به عنوان یک پشتیبان عمل مینماید.

آیا DNS امن است؟
امنیت همواره باید به عنوان یک اولویت حائز اهمیت در همهٔ حوزهها مورد توجه قرار گیرد. پروتکل DNS به عنوان یکی از پروتکلهای قدیمی، بدون در نظر گرفتن جنبههای امنیتی طراحی شده است. برای مقابله با حملات احتمالی از طریق DNS و تضمین حفظ اطلاعات DNS، رویکردهای متعددی وجود دارد. امنیت DNS در چندین لایه مختلف مدنظر قرار میگیرد و از خطرات حملات مختلف جلوگیری میکند. یکی از این لایهها، لایه ارسال کوئری برای دریافت IP است که اطلاعات امنیتی و حریم خصوصی را دربرمیگیرد و از دسترسی هکرها به آن جلوگیری میکند.

فایروال DNS چیست؟
فایروال DNS یک ابزار قدرتمند است که خدمات امنیتی فراوانی را برای DNS فراهم میکند. این فایروال به عنوان یک لایه امنیتی میان Resolver و Authoritative Nameserver قرار گرفته است تا اطمینان حاصل شود که دسترسی کاربران به IP واقعی سرور به صورت امن انجام شود. ویژگیهای متعددی که این فایروال ارائه میدهد شامل تفکیک ترافیک، فیلتر کردن ترافیک بر اساس پارامترهای مختلف مانند سن، و توانایی تغییر DNS میباشد.
کش DNS چیست؟
سیستم کش، عبارت است از ذخیره موقت دادهها در فضای فیزیکی مورد نیاز که به منظور بهبود عملکرد و افزایش پاسخگویی سریعتر به درخواستها عمل میکند. کش کردن DNS به معنای ذخیره اطلاعات DNS در مکانی نزدیک به کاربر است، بهطوریکه با ارسال درخواستهای بعدی، پاسخ DNS از کش محلی کاربر بازیابی شده و درخواست جدیدی به سیستم DNS ارسال نمیشود. این اقدام نه تنها منجر به کاهش مصرف پهنای باند و CPU میشود بلکه سرعت بارگذاری وبسایت نیز افزایش مییابد. دادههای DNS با توجه به(TTL) (Time to Live) مشخص شده، در مکانهای مختلف کش قرار میگیرند.
چگونه DNS ترافیک را به وبسایت شما هدایت می کند؟
نمودار زیر نمای کلی از نحوه عملکرد سرویس های DNS بازگشتی و معتبر برای هدایت کاربر نهایی به وب سایت یا برنامه شما را نشان می دهد.

- 1- کاربر یک مرورگر وب را باز می کند، www.example.com را در نوار آدرس وارد می کند و Enter را فشار می دهد.
- 2- درخواست www.example.com به یک مترجم DNS هدایت میشود که معمولاً توسط ارائهدهنده خدمات اینترنت کاربر (ISP) مدیریت میشود.
- 3- مترجم DNS برای ISP درخواست www.example.com را به یک سرور نام ریشه DNS ارسال میکند.
- 4- مترجم DNS برای ISP مجدداً درخواست www.example.com را به یکی از nameserver های TLD برای دامنههای .com ارسال میکند. nameserver دامنههای com. با استفاده از چهار سرور نام مسیر 53 آمازون که با دامنه example.com مرتبط هستند، به درخواست پاسخ میدهد.
- 5- مترجم DNS برای ISP یک سرور نام Amazon Route 53 را انتخاب میکند و درخواست www.example.com را به آنnameserver ارسال میکند.
- 6- سرور نام آمازون Route 53 در منطقه میزبان example.com برای رکورد www.example.com بررسی می کند، مقدار مربوطه را دریافت می کند، مانند آدرس IP یک وب سرور، 192.0.2.44، و آدرس IP را به مترجم DNS برمی گرداند.
- 7- در نهایت مترجم DNS درISP آدرس IP مورد نیاز کاربر را دارد. مترجم آن مقدار را به مرورگر وب برمی گرداند. مترجم DNS همچنین آدرس IP برای example.com را برای مدت زمانی که شما مشخص کردهاید ذخیره میکند تا بتواند دفعه بعد که شخصی به example.com مراجعه میکند، سریعتر پاسخ دهد.
- 8- مرورگر وب درخواستی برای www.example.com به آدرس IP که از مترجم DNS دریافت کرده است ارسال می کند. اینجا جایی است که محتوای شما، به عنوان مثال، یک وب سرور در حال اجرا بر روی یک نمونه از صفحات سایت آمازون که به عنوان نقطه پایانی وب سایت پیکربندی شده است.
- 9- وب سرور یا منبع دیگری در 192.0.2.44 صفحه وب www.example.com را به مرورگر وب برمی گرداند و مرورگر وب صفحه را نمایش می دهد.

انواع Query ها در نام دامنه
در حین فرآیند جستجوی نام دامنه، سه نوع Query (کوئری) اساسی وجود دارد که با استفاده از ترکیب آنها میتوان پروسه جستجو را بهینهتر نمود و زمان را بهبود بخشید.
Query بازگشتی
در این نوع کوئری، نام دامنه سعی میکند اطلاعات مورد نیاز را از سرور DNS مرجع به دست آورد. اگر سرور DNS اطلاعات مورد نظر را نداشته باشد، درخواست به سرور DNS مرجع برای دریافت اطلاعات ارجاع میشود. این نوع کوئری معمولاً در ابتدای یک جستجو انجام میشود.
Query تکراری
زمانی که سرور نام دامنه یک کوئری بازگشتی دریافت میکند و اطلاعات مورد نظر را دارا نیست، این نوع کوئری رخ میدهد. در این حالت، سرور DNS درخواست را به سرورهای دیگر ارسال کرده و منتظر پاسخ میماند. این عمل به تکرار کوئری و جستجوی گستردهتر در شبکه منجر میشود.
Query غیربازگشتی
در این نوع کوئری، سرور DNS بدون ارجاع به سرور DNS مرجع یا انجام تکرار، سعی در حل درخواست دارد. این نوع کوئری به تسریع پروسه جستجو کمک میکند و اطلاعات را بلافاصله از سرورهای DNS دیگر به دست میآورد.
ترکیب هوشمندانهای از این سه نوع کوئری میتواند به بهینهسازی عملکرد جستجوی DNS و بهبود کارایی در ارتباط با شبکه اینترنت کمک کند.