DNS چیست؟
سیستم نام دامنه (Domain Name System) که به اختصار DNS نامیده میشود، یک سیستم نامگذاری سلسه مراتبی و توزیعشده برای کامپیوترها، سرویسها یا هر منبع دیگر متصل به اینترنت یا شبکهی خصوصی است. هرگاه برای مکانیابی و اتصال به دستگاه کامپیوتر به مرورگر خود نیاز داشته باشید، سیستم نام دامنه یا DNS در پشت صحنه حضور دارد تا یک نام دامنهی به خاطر سپرده شده را به آدرس عددی پروتکل اینترنت (IP)برای آن منبع ترجمه کند. میتوان DNS را به شکل دفترچهی تلفن اینترنتی در نظر گرفت که به کمک آن، افراد میتوانند به راحتی براساس نام، تمامی دستگاهها و سرویسهای متصل به اینترنت را شناسایی کنند.
نام دامنه، یک نام کاربرپسند و مرتبط با یک منبع اینترنتی است. برای مثال، www.f5.com یک نام دامنه است و نشانی اینترنتی (URL) مربوط به سرورهای آن، متعلق به شرکت F5 است.
زیرشاخهی یک دامنه، با عنوان زیردامنه (subdomain) شناخته میشود. برای مثال، آدرس support.f5.com زیردامنهای برای پشتیبانی در دامنهی F5.com به شمار میرود. زیردامنه چیزی است که قبل از نام دامنه (در سمت چپ آن) اضافه میشود و پس از آن یک نقطه (dot) قرار میگیرد.
جستجوی DNS فرآیندی است که از طریق آن، یک کلاینت (مانند یک مرورگر وب)، دامنهی خاصی را از یک سرور DNS درخواست میکند. سپس سرور DNS با یک آدرس آیپی (IP) پاسخ آن را میدهد که در ادامه، کلاینت را به مقصد موردنظر هدایت میکند.
فضای نام دامنه، ساختار کلی نامگذاری در اینترنت را تعریف میکند. این فضا به شکل یک ساختار درخت مانند از نامهای دامنه است که نام دامنهی ریشه (root domain name) در رأس آن قرار دارد. از آن دامنهی ریشه (root domain)، دامنههای اصلی و مهمی همچون com ، .net ، .org. و سایر دامنهها توسعه مییابند.
فضا یا ساختار درخت مانند نامها، به بخشهای مشخص یا زونهایی (Zones) تقسیم میشود که منابع در دسترس تحت یک دامنهی مشخص را تعریف میکند.
Name Serverها اطلاعات مربوط به بخشهای مشخص (Zones) را ذخیرهسازی میکنند. دو نوع Name Server وجود دارد: اولیه و ثانویه. هر Zone، دادههای خود را در Name Serverهای اولیه و ثانویه ذخیره میکند.
DNS Resolver، همان بخش کلاینت DNS است. این بخش مسئول راهاندازی و چیدمان درخواستهایی است که در نهایت، منجر به تبدیل یک نام دامنه به آدرس آیپی میشود.
خلاصهی کار DNS اینگونه است که نام دامنهای که کاربر در یک مرورگر تایپ میکند (برای مثال www.f5.com)، از طریق یک سرور DNS به یک آدرس IP (مانند 104.219.105.148) تبدیل میشود. این کار به دستگاه یا سیستم اجازه میدهد تا منبعی که در اینترنت به دنبال آن هستید را پیدا کنید، که در مثال بالا، صفحهی اصلی شرکت F5 را خواهید یافت.
بیایید دقیقتر به نحوهی کار آن نگاهی بیندازیم:
فرض کنید که یک کاربر نام دامنهی www.f5.com را در مرورگر تایپ میکند. از آنجایی که مرورگر هیچ اطلاعاتی در مورد دامنهی www.f5.com ندارد، درخواستی را به سرور DNS محلی (یا LDNS) ارسال میکند و رکورد (سابقه) این وبسایت را درخواست میکند. اگر سرور DNS محلی (LDNS) هیچ رکوردی در مورد این سایت خاص نداشته باشد، یک جستجوی بازگشتی (recursive) از دامنههای اینترنتی را آغاز میکند تا اطلاعاتی در مورد مالک یا صاحب دامنهی www.f5.com پیدا کند.
ابتدا LDNS به سراغ یکی از سرورهای ریشه (root servers) میرود که آن را به سرور دیاناس com. هدایت میکند. سپس این سرور DNS، مالک یا صاحب دامنهی www.f5.com را مشخص میکند و با یک رکورد name server برای دامنهی F5.com ،LDNS را آگاه میسازد.
سپس LDNS رکورد یا سابقهی NS را از سرور دیاناس F5.com درخواست میکند. سرور دیاناس F5.com به جستجوی نام www.F5.com میپردازد. اگر این نام را پیدا کند، یک رکورد آدرس (A) را به LDNS باز میگرداند. این رکورد A شامل نام درخواست، آدرس IP اختصاص داده شده به آن نام در LDNS و Time to Live یا (TTL) برای آن نام است. TTL پیش از اینکه دوباره از سرور دیاناس F5.com درخواست کند، مدت زمان حفظ و نگهداری رکورد A را به LDNS میگوید.
هنگامی که LDNS رکورد A را دریافت میکند، اطلاعات آدرس IP را برای زمان مشخصی در TTL به صورت نهان ذخیرهسازی (cache) میکند. اگر هر کلاینت دیگری به همین اطلاعات نیاز داشته باشد، LDNS پاسخ درخواستها را از حافظهی نهان اسامی خود خواهد داد. از آنجایی که اطلاعات به صورت محلی حفظ و نگهداری شده است، نیاز به درخواست از سرور DNS (دیاناس) F5.com نخواهد بود که باعث میشود ارتباطات آتی به آن منبع، سریعتر انجام شود.
در ادامه، مرورگر از آدرس IP برای اتصال به دامنهی www.F5.com:80 استفاده میکند و درخواست …/GET را ارسال میکند که سپس باعث میشود که وب سرور (web server)، پاسخ صفحهی وب را برگشت دهد.
به طور کلی، DNS در عمل بسیار پیچیدهتر از آن چیزی است که مثال بالا نشان میدهد. اما مثال فوق باید یک ایدهی نسبی از نحوهی کار DNS را برای شما ارائه داده باشد.
رکوردهای DNS همان فایلهای مسیردهی (mapping files) هستند که به سرور DNS میگویند کدام آدرس IP با کدام نام دامنه مرتبط است. به علاوه، این رکوردها نحوهی رسیدگی و مدیریت درخواستها را نیز به سرور DNS میگوید. انواع مختلفی از رکوردهای DNS وجود دارند، اما همهی این رکوردها برای یک دامنهی خاص، در جایی به نام DNS Zone وجود دارند. DNS Zone را به شکل یک محفظه درنظر بگیرید که به اینترنت این امکان را میدهد تا آدرس IP را برای تنها یک دامنهی خاص جستجو کند.
انواع متداول رکوردهای DNS به شرح زیر است:
آدرس یا رکوردهای A (که با نام رکوردهای هاست شناخته میشوند)، رکوردهای اصلی و مهم DNS هستند. این رکوردها یک دامنه را به یک آدرس IP متصل میکنند. رکورد AAAA همانند رکورد A است، اما به جای آدرس 32-بیتی IPv4، یک آدرس 128-بیتی IPv6 را بر میگرداند.
رکوردهای Name Server (NS) مشخص میکنند که کدام سرورها اطلاعات DNS را برای یک دامنه منتقل میکنند. به طور کلی، شما رکورد NS اولیه و ثانویه برای دامنهی خود خواهید داشت.
رکوردهای تبادل ایمیل (MX)، پیامهای ایمیلی را به سرورهای یک دامنهی خاص هدایت میکند. رکوردهای MX چندگانه را میتوان برای یک دامنه تعریف کرد، که هر کدام اولویت متفاوتی دارند. تعداد پایین رکورد، بالاترین اولویت را دارد. اگر با استفاده از رکوردی که بالاترین اولویت را دارد، ایمیلی تحویل داده نشود، از رکوردی که دومین اولویت را دارد استفاده میشود و به همین ترتیب ادامه مییابد.
فایل متنی یا رکوردهای TXT ممکن است شامل متنهای دلخواه باشند، اما میتوانند برای تعریف متن قابل خواندن در ماشین نیز استفاده شوند.
نام متداول یا رکورد CNAME، یک نام مستعار را به یک نام دامنهی متداول دیگر لینک میدهد. برای مثال، ممکن است دامنهی alias.example.com با دامنهی example.com پیوند داشته باشد.
DNS یکی از فناوریهای اولیه است که استفاده از اینترنت را ممکن میسازد. به علاوه، یک مؤلفهی حیاتی و مهم در زیرساخت شبکه محسوب میشود. از آنجایی که داشتن یک زیرساخت DNS هوشمند، دردسترس، ایمن و مقیاسپذیر بسیار حائز اهمیت است، محتوا و اپلیکیشنها را به سادگی ارائه نمیدهد. DNS یک ساختار یا سیستم توزیعشده و مازاد را مدیریت کرده و کیفیت و قابلیت دسترسی زمان پاسخدهی کاربر را تضمین میکند. اگر DNS نتواند این کار را انجام دهد، بیشتر وب اپلیکیشنها به درستی عمل نخواهند کرد. این موضوع نه تنها DNS را در نقطهی بحرانی قرار میدهد، بلکه آن را به هدف اصلی حملات نیز تبدیل میکند. اگر زیرساخت DNS مناسبی نداشته باشید، مشتریان یا کاربران نمیتوانند به محتوا یا اپلیکیشنهای شما دسترسی پیدا کنند، که ممکن است باعث شود تا برای رفع نیازهای خود به جای دیگری مراجعه کنند.
اما محدودیتهای خاصی نیز برای سرویسهای DNS استاندارد وجود دارد. اول از همه اینکه اگرچه DNS باعث میشود که محتوا/وبسایت/اپلیکیشن شما در دسترس قرار بگیرد، اما در واقع اهمیتی به در حال اجرا بودن یا حتی وجود داشتن محتوای شما نمیدهد.
به علاوه، DNS هیچ قابلیت واقعی برای توزیع بار ندارد و به استفاده از تمامی آدرسهای IP ادامه خواهد داد، حتی اگر اپلیکیشنی که به آن آدرس IP وابسته است، اورلود شده (overloaded) یا از کار بیفتد.
DNS نیز هیچ درکی از اپلیکیشنهای وابسته به حالت سیستم (stateful application) ندارند و نمیتواند تضمین کند که کاربر به همان آدرس IP سابق باز گردد. برای مثال، اگر به یک مرکز دادهی خاص بروید و یک سبد خرید ایجاد کنید که در آن مرکز داده نگهداری میشود، هیچ تضمینی وجود ندارد که بار دیگری که این نام را انتخاب کردید، همان IP را دریافت کنید.
گذشته از همهی اینها، سرورهای DNS استاندارد تنها میتوانند به تعداد محدودی از درخواستهای DNS در هر ثانیه پاسخ دهند، که آنها را در برابر حملات DDoS آسیبپذیر میکند.
DNS اساس و بنیان اینترنت است، اما یکی از آسیبپذیرترین نقاط شبکهی شما نیز محسوب میشود، که آن را به یک هدف باارزش برای حملات تبدیل میکند. حملات DDoS میتوانند به سرورهای DNS شما تا حد ربودن (hijack) یا عدم پاسخگویی (failure) آسیب بزند، که باعث هدایت درخواستها به یک سرور مخرب میشود. برای جلوگیری از این حملات، یک معماری ایمن، توزیعشده و دارای عملکرد عالی باید با شبکه یکپارچهسازی شود. به علاوه، شرکتها باید در طول حملات DDoS و فشارها بر روی DNS، تعداد سرورهای DNS را افزایش دهند.
با وجود اینکه سرورهای DNS و سرویسهای ابری میتوانند میزان متفاوتی از درخواستها را در ثانیه مدیریت کنند، اما با افزایش هزینهها و درخواستها، این راهکار در صورت نیاز به تغییرات، اغلب نیازمند مداخلهی دستی و فنی است. از آنجایی که آسیبپذیریهای جدیدی همچنان در حال رخ دادن هستند، سرورهای DNS قدیمی نیازمند ترمیم (patching) و نگهداری (maintenance) مکرر هستند که آن را حتی پرهزینهتر میکنند.
حالا که نشان دادیم که DNS در معرض حملات جدی قرار دارد، بیایید در مورد نحوهی کمکرسانی کنترلرهای تحویل اپلیکیشن (ADCs) در محافظت از زیرساخت DNS صحبت کنیم. ADCها میتوانند بارهای چندین سرور DNS و پاسخهای کش (cache responses) را متعادل کنند، مقیاسها و معیارهایی را ارائه دهند، و سرورهای DNS را قادر سازند تا حجم زیاد ترافیک و حملات گسترده را مدیریت کنند. این قابلیت، مشتریان را قادر میسازد تا بیشتر سرورهای DNS را به طور همزمان بهکار بگیرند که این امر به آنها اجازه میدهد دسترسی اپلیکیشنها را به حداکثر برسانند، سرعت بیشتری فراهم کنند و عملکرد را بهبود بخشند. به علاوه، ADCها به سرعت حملات DDoS را تشخیص میدهند و اتصال آنها از سرورها را دور میکنند یا به طور کامل مانع از آنها میشوند. ADCها از افزونههای امنیتی سیستم نام دامنه (DNSSEC) پشتیبانی میکنند و به سازمانها امکان دفاع در برابر تهدیداتی همچون آلودهکردن کش (cache poisoning) و حملات مرد میانی (man-in-the-middle) را میدهد. به همین دلایل، ADCها با کاهش نیاز به سرورهای DNS اضافی به عنوان پشتیبان در صورت اورلود (overload) یا حمله، هزینهی کلی مالکیت مشتریان را کاهش میدهند.
به طور خلاصه، کنترلرهای تحویل اپلیکیشن (ADCs) که عملکرد بالایی دارند، نه تنها میتوانند از سرورهای DNS در برابر حملات مختلف محافظت کنند، بلکه میتوانند مقیاسپذیری، بهبود عملکرد و کاهش TCO (هزینهی کلی مالکیت) را به دنبال داشته باشند، در حالی که سرورهای DNS را قادر میسازند تا بارهای ترافیکی سنگین را نیز مدیریت کنند.
با رشد اپلیکیشنهای موبایلی و فناوریهای جدیدتری همچون دستگاههای اینترنت اشیاء (IoT)، DNS نیز در حال رشد و پیشرفت است. به علاوه، تعداد اپلیکیشنها و همچنین حجم ترافیک دسترسی به این اپلیکیشنها نیز به سرعت در حال افزایش است. در 5 سال گذشته، حجم درخواستهای DNS برای دامنهی com. و دیگر آدرسها دوبرابر شده است. در سال 2016، بیش از 10 میلیون نام دامنه به اینترنت اضافه شد و با گسترش هرچه بیشتر پیادهسازی فضای ابری، موبایل و اینترنت اشیاء، انتظار میرود که DNS با سرعت بیشتری رشد کند. از آنجایی که سرورهای DNS برای اینترنت بسیار حائز اهمیت هستند، بدون داشتن یک DNS کارآمد، اینترنت عملاً بیفایده خواهد بود.
محبوبیت سرویسهای ابری همانند اینترنت اشیاء در طول چند سال گذشته به شدت افزایش یافته است. در نتیجه، مهمتر از هر زمان دیگری بهتر است که به زیرساختهای DNS خود و مزایا و تهدیدهای مرتبط با آن فکر کنید. از یک سو، DNS معتبر و مبتنی بر فضای ابری، عملکرد بهتر، دسترسی بالا، امنیت و مقیاسپذیری بهتری را ارائه میدهد. از سوی دیگر، این نوع DNS در برابر تهدیدهایی همچون زیرساختهای DNS و حملات DDoS آسیبپذیر است.
این تهدیدها پتانسیل این را دارند که دسترسی به وبسایتها، اپلیکیشنها، سرویسهای ابری و دیگر منابع را به طور چشمگیری مختل کنند. برنامهریزی و مدیریت موثر زیرساختهای فناوری اطلاعات شما برای جلوگیری از این حملات و ادامهی دسترسی کارمندان و مشتریان شما به منابع مورد نیاز، در هر زمان و هر مکانی که نیاز داشته باشند، کاملاً مهم و حیاتی است.