پاکسازی کش DNS
مقالات تخصصی IT و هاستینگ

مزایا و معایب کش DNS چیست و چگونه باید آن را پاکسازی کرد؟

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

کش DNS چیست؟

حافظه کش DNS که با نام "کش مترجم DNS" نیز شناخته می‌شود، فضایی برای ذخیره‌سازی موقت DNS در یک دستگاه (کامپیوتر، تلفن هوشمند، سرور و غیره) است که رکوردهای DNS دامنه های ترجمه شده را شامل می شود. این رکوردها با توجه به مدت زمان time-to-live یا TTL نگهداری خواهند شد.

کش DNS فضایی برای ذخیره‌سازی موقت DNS است

تصویر(1)

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

چرا به کش DNS نیاز خواهید داشت؟

جهت دریافت پاسخ سریع‌تر برای درخواست DNS دامنه‌هایی که اخیراً از آنها بازدید کرده‌اید، به حافظه DNS cache نیاز دارید. هم دستگاهی که کاربر از آن استفاده می‌کند و هم مترجم های DNS، حافظه کش DNS دارند و اگر دامنه هنوز در حافظه کش آنها موجود باشد، می‌توانند آن را ترجمه کنند. اگر این چنین نباشد، درخواست DNS باید یک مسیر طولانی را به سمت سرور اصلی دنبال کند که به سرورهای TLD (پسوند دامنه) و سپس authoritative nameserver (سروری که IP دامنه را برمی گرداند) منتهی می شود تا در نهایت پاسخ را دریافت نماید.

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

هر بار که کاربر یک DNS lookup انجام می دهد، دستگاه او ابتدا کش داخلی DNS که بخشی از سیستم عامل است را بررسی می کند. در حافظه کش DNS، جدولی از رکوردها، مقادیر و زمان نگهداری آنها (TTL) وجود دارد. مقدار TTL توسط مدیر DNS هر نام دامنه تنظیم می شود که مقدار محدودیت زمانی هر رکورد DNS است. پس از اتمام زمان، نیاز به یک درخواست جدید خواهد بود. اگر بتوان درخواست DNS را توسط کش DNS ترجمه کرد، کاربر پاسخ خود را دریافت کرده و می تواند سایت مورد نظر را مشاهده کند.

اگر این چنین نباشد، درخواست به یک سرور ترجمه DNS هدایت می شود. سرورهای ترجمه DNS زیادی وجود دارند. به عنوان مثال، در ارائه دهنده خدمات اینترنت شما نیز از این موارد استفاده شده است. آنها نیز به حافظه کش مجهز شده اند که با روشی مشابه کار می کند. اگر پاسخ در آنجا یافت شود، کاربر آن را دریافت کرده و دامنه را ترجمه می نماید. در غیر این صورت، درخواست برای دریافت پاسخ به یک authoritative nameserver منتقل می شود.

پس از دریافت پاسخ، رکورد یا رکوردهای DNS در کش سرورهای مترجم DNS و همچنین دستگاه کاربر، برای مدت زمانی که مقدار TTL نشان می دهد، ذخیره می شوند. درخواست بعدی که برای همان نام دامنه ارسال می شود، دستگاه شما این فرآیند را تکرار می کند. اگر زمان زیادی از آخرین درخواست سپری نشده باشد، این احتمال وجود دارد که رکورد DNS موردنظر هنوز در حافظه کش موجود بوده و سریعا به درخواست پاسخ داده شود.

چگونه می توان کش DNS خود را بررسی کرد؟

می توانید کش DNS دستگاه خود را با یک دستور بسیار ساده در ویندوز مشاهده کنید اما در macOS و لینوکس کمی دشوارتر است.

ویندوز

  1. با فشردن کلیدهای windows+R پنجره Run را باز نمایید تا بتوانید وارد اپلیکیشن Command Prompt شوید.
  2. cmd را تایپ کرده و Ok را فشار دهید.
  3. در پنجره باز شده دستور "ipconfig /displaydns" را وارد کنید تا تمام رکوردهای DNS سایت هایی که بازدید کرده اید را مشاهده نمایید.

سیستم عامل macOS

  1. نیاز است تا اپلیکیشن کنسول را باز کنید.
  2. سپس عبارت "any:mdnsresponder" را وارد نمایید.
  3. سپس اپلیکیشن Terminal را باز کرده و دستور "sudo killall -INFO mDNSResponder" را تایپ کنید. رمز عبوری که از شما خواسته می شود را وارد نمایید. پس از آن، لازم است تا جهت مشاهده رکوردهای DNS، به اپلیکیشن کنسول بازگردید.

لینوکس

در لینوکس، حافظه کش DNS در سطح سیستم عامل وجود ندارد، بنابراین مشاهده آن کمی دشوارتر است. با توجه به نرم افزاری که استفاده می کنید، روش مشاهده آن می تواند متفاوت باشد. به عنوان مثال، اگر از NSCD (Name Service Caching Daemon) استفاده می کنید، می توانید رشته های ASCII را از فایل کش باینری مشاهده کنید که در مسیر /var/cache/nscd/hosts قرار دارند.

اگر از اوبونتو 20.10، فدورا 33 یا نسخه های جدیدتر استفاده می کنید، Systemd مسئول DNS است.

  1. ابتدا ترمینال را باز نموده و دستور sudo killall -USR1 systemd-resoved را تایپ کنید.
  2. سپس دستور دیگری را اجرا نمایید تا از گزارش پیام تحت یک فایل txt خروجی تهیه شود. دستور مربوطه به صورت زیر است:
sudo journalctl -u systemd-resolved > ~/dns-cache.txt
  1. منتظر بمانید تا فایل ایجاد شود و سپس آن را با دستور less ~/dns-cache.txt باز کنید.

کش DNS را پاک کنید

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

پاکسازی کش DNS به کاهش مصرف منابع و کاهش حملات کمک می کند

تصویر(2)

همچنین اگر به DNS poisoning مشکوک هستید، پاکسازی DNS cache می تواند مفید باشد. اگر شخصی یک رکورد DNS را در حافظه کش DNS شما دستکاری کند، حذف آن، رکوردهای خطرناک را از بین می برد. بخش منفی پاکسازی DNS cache این است که باید آدرس IP تمام وب سایت هایی را که نیاز دارید، مجددا به دست آورید. هیچ سایتی که اخیراً از آن بازدید کرده اید پس از حذف کش DNS ذخیره نمی شود و اولین ترجمه DNS هر سایت، به زمان بیشتری نیاز خواهد داشت. نحوه پاکسازی DNS در سیستم عامل ها و مرورگرهای مختلف، در ادامه بررسی شده است. به یاد داشته باشید که شما باید آن را هم در سطح سیستم عامل و هم در سطح مرورگر پاکسازی نمایید.

ویندوز

فرآیند پاکسازی  DNS در ویندوز ساده است.

  1. Command Prompt را باز کنید و دستور روبرو را تایپ نمایید: "ipconfig /flushdns".
  2. پس از پاکسازی موفقیت آمیز، یک پیام تاییدیه را مشاهده خواهید کرد:
Windows IP Configuration. Successfully flushed the DNS Resolver Cache

سیستم عامل macOS

  1. در macOS، برای حذف کش DNS، ابتدا باید ترمینال را باز نمایید.
  2. سپس باید دستور sudo killall -HUP mDNSResponder را وارد نموده و دکمه Enter را فشار دهید. سپس رمز عبور خود را تایپ کنید. همچنین لازم است تا کش DNS مرورگر خود را نیز حذف نمایید.

لینوکس

در تمام توزیع‌های لینوکس به‌طور پیش‌فرض کش DNS وجود ندارد.

  • اگر از آخرین نسخه اوبونتو 20.04 LTS استفاده می کنید، می توانید برنامه ترمینال را باز نموده و دستور "sudo systemd-resolve –flush-caches" را اجرا نمایید. برای انجام آن به دسترسی sudo (یوزر اصلی) نیاز دارید.
  • اگر از NCSD استفاده می کنید، باید دستور "sudo /etc/init.d/nscd restart" را در ترمینال اجرا نمایید. همچنین باید رمز عبور خود را برای تأیید دستور وارد کنید.
  • DNSMASQ. دستور DNSMASQ برای حذف کش "sudo /etc/init.d/dnsmasq restart" است و به رمز عبور نیاز دارد. پس از اجرا، سرویس را مجددا راه اندازی (restart) کنید.
  • BIND. در BIND به چند دستور نیاز دارید: 
    • ابتدا “sudo /etc/init.d/named restart”
    • سپس “sudo rndc restart” 
    • و در نهایت “rndc exec”. 

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

گوگل کروم

شما باید عبارت "chrome://net-internals/#dns" را در نوار آدرس وارد نمایید. سپس روی Clear host cache کلیک کنید. اگر از Edge استفاده می کنید، کروم را در متن قبلی به edge تغییر دهید و اگر از Opera استفاده می کنید آن را به opera تغییر دهید.

فایرفاکس

  1. آیکون 3 خط موجود در گوشه سمت راست بالا را بیابید و منوی فایرفاکس را باز کنید.
  2. سپس Options یا Preferences را جستجو کنید.
  3. در این بخش، Privacy & Security را مشاهده خواهید کرد. روی آن کلیک نمایید.
  4. به History مراجعه و با انتخاب Everything روی Clear History کلیک کنید.
  5. در نهایت نیز Clear Now را انتخاب نمایید.

سافاری

  1. ابتدا مرورگر سافاری را باز کنید.
  2. سپس به مسیر Preferences > Advanced مراجعه نمایید.
  3. روی "Show develop menu in menu bar" کلیک کنید.
  4. سپس به منوی Develop > Empty Caches مراجعه نمایید. در پایان باید مرورگر را ریستارت کنید.

دلایل پاکسازی DNS چیست؟

پاکسازی کش DNS می تواند از نمایش اطلاعات قدیمی جلوگیری کند

تصویر(3)

شرایط مختلفی وجود دارند که ممکن است پاکسازی حافظه کش DNS ضروری باشد. این مورد در درجه اول مربوط به مسائل امنیتی، اشکالات فنی یا محافظت از داده های شخصی است. در ادامه به برخی از دلایل اصلی این کار اشاره می شود.

1. تمایل دارید در برابر جعل DNS از خود محافظت کنید

جعل DNS یا DNS cache poisoning، نوعی حمله است که در آن مجرمان سایبری اطلاعات موجود در حافظه کش DNS را دستکاری می کنند تا کاربر را به وب سایت های نادرست هدایت نمایند. در برخی موارد امکان دارد کاربر را به یک سایت جعلی مشابه سایتی که قصد بازدید از آن را داشت هدایت کنند تا ناخودآگاه داده های حساسی مانند اطلاعات بانکی خود را ارائه دهند.

2. یک خطای 404 دریافت کرده اید

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

3. اطلاعات قدیمی را در سایت مشاهده می کنید

اعمال تغییرات در رکوردهای DNS ممکن است 24 تا 48 ساعت به طول بیانجامد تا در تمام سرورهای جهانی بروز گردد. این فرآیند به عنوان DNS propagation یا "انتشار DNS" شناخته می شود. به همین دلیل، اطلاعات ذخیره شده در حافظه کش ممکن است قدیمی شده و مشکلاتی در وب سایت ها یا اپلیکیشن ها ایجاد کنند. پاکسازی کش مرورگر نیز می تواند کمک کند اما همیشه یک راه حل کامل نیست.

4. تمایل دارید تا حریم خصوصی بازدیدهای خود را حفظ نمایید

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

جعل DNS (آلودگی کش DNS)

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

روش دیگر حمله، man-in-the-middle است که در آن هکر بین کاربر و یک مترجم DNS قرار می گیرد. سپس اطلاعات اصلاح شده را ارسال کرده و وانمود می نماید که بسته های معمولی داده را ارسال می کند. در ادامه کاربر رکوردهای DNS را از مهاجم دریافت خواهد کرد. کاربر می تواند با استفاده از VPN برای ارتباطات رمزگذاری شده، عدم کلیک روی پیام های مشکوک و پیوست های آلوده، از چنین حمله ای جلوگیری کند.

نتیجه گیری

کش DNS یک روش مفید برای کاهش مصرف منابع، هم در سیستم محلی و هم در چندین سرور است. همچنین به تسریع ترجمه DNS و صرفه جویی در زمان کمک می کند. هدف حملات معمولا آلوده کردن DNS است اما روش های مختلفی برای محافظت از DNS cache وجود دارد.

اشتراک گذاری:

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *