تشریح مفاهیم Forwarder و Conditional Forwarding در DNS و شیوه پیاده سازی آنها در DNS سرور

شنبه 16 اردیبهشت 1396 ساعت 10:25
در این مقاله قصد داریم که پیرامون مبحث Forward یا هدایت درخواستها به وسیله DNS به صورت جامع صحبت کنیم. همانطور که می دانید هر DNS سرور بهنگام دریافت یک Query یک سری مراحل را برای یافتن آدرس مورد نظر طی می کند. دوستان من در این سایت به بررسی جز به جز این مراحل پرداخته اند . امید دارم که قبل از خواندن این مقاله حتما مقالات در خصوص مبحث DNS مطالعه نمایید. ما نیز در اینجا روندی که DNS برای پاسخ به این Query ها طی می کند را به صورت مختصر توضیح خواهیم داد .با یک مثال به توضیح روند کاری DNS می پردازیم : اگر کاربری قصد بازدید از سایت www.itpro.ir را داشته باشد ابتدا بررسی می کند که آیا قبلا به این سایت مراجعه کرده و IP آدرس در Cache سیستم وجودارد یا خیر ؟ اگر IP آدرس مورد نظر یافت نشد Host file سیستم بررسی می شود و در صورت نیافتن آدرس درخواست برای DNS سرور ارسال می شود بنابراین هر DNS Server پس از دریافت یک Query برای یافتن یک آدرس ابتدا در اطلاعات سیستم خود یا به اصطلاح اطلاعات محلی خود به ترتیبی که بیان می شود در جهت یافتن آدرس IP مورد نظر جستجو می کند :

    Zone
    Cache
    اگر تا به این مرحله جواب Query دریافتی پیدا نشد درخواست را برای یک سرور دیگر Forward یا هدایت می کند (که در این مقاله ما به تشریح کامل چگونگی عملیات Forward خواهیم پرداخت )
    اگر DNS به کمک Forwarder نیز موفق به یافتن جواب نشد درخواست را برای Root Hint ها (یا همان سرور های ریشه )ارسال خواهد کرد.


تعریف FORWARDER یا هدایت کننده
Forwarder در واقع DNS سروری در شبکه است که به گونه ای تنظیم شده تا Query هایی که در DNS سرور داخل شبکه،جوابی برای آنها یافت نمیشود را برای آدرس های IP یا سرورهای DNS سرور خارج از شبکه ارسال کند.

وقتی DNS Server یک Query را برای Forwarder ارسال می کند ، در واقع یک فرآیند رفت و برگشت پرسش و پاسخ صورت می گیرد که این فرآیند با ارسال مکرر Query ها در حالت استاندارد ، توسط DNS Server به DNS سرور های دیگر برای رسیدن به هدف اصلی که همان پیدا کردن آدرس IP مقصد است انجام می شود ، در اصطلاح به این فرآیند رفت و برگشت Recursion نیز گفته می شود.در ساختار DNS به فرآیند ارجاع یک نام مثل www.Itpro.ir به IP مربو طه اش اصطلاحا Name Resolution گویند.) هدف DNS در نهایت یافتن IP متناظر با بخش هاست یک آدرس است.) در اینجا DNS سرور مانند یک دفترچه تلفن برای اینترنت عمل می کند که در آن Host Name ها برابر با IP متناظرشان قرار گرفته می شود ویا بالعکس.

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

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

مراحل انجام عملیات Forwarding در DNS سرور
همانگونه که میدانیم برای پیاده سازی یک DNS سرور بعنوان Forwarder ، باید لیستی از IP های DNS سرورها ی خارجی را فراهم آوریم که طبق این لیست DNS سرور تشخیص خواهد داد که از کدام آی پی میتواند برای یافتن جواب استفاده کند.پس از اینکه DNS سرور یک Query را برای forwarder ارسال کرد ،فرآیند مقایسه آغاز میشود و درخواست ارسالی با اولین آدرس، مقایسه شده و DNS یک بازه زمانی کوتاه را برای دریافت پاسخ از Forwarder منتظر میماند و اگر جواب حاصل نشد ،فرایند مقایسه با IP آدرس بعدی تکرار میشود واین روند تا زمان دریافت جواب مورد نظر از Forwarder ادامه می یابد تا به جواب صحیح و نهایی برسد.

برای روند جست و جوی DNS در حالت عادی یک بازه زمانی برای ارسال درخواست کلاینت و دریافت پاسخ از سرور در نظر گرفته شده است که به آن Round Trip Time یا RTT می گویند باید در نظر داشته باشیم که لیست IP های موجود در Forwarder ، بر اساس RTT مرتب نشده اند و باید بصورت دستی اولویت IP ها را بر حسب RTT تغییر دهیم .

پیاده سازی یک DNS server بعنوان Forwarder
از حداقل ملزومات ایجاد یک forwarder این است که کاربر بایستی عضو Administrator group باشد. در اولین قدم برای ایجاد و راه اندازی یک DNS server بعنوان forwarder عبارت dnsmgmt.msc را در قسمت Run تایپ می کنیم تا کنسول DNS manager برای ما نمایش داده شود ویا برای مشاهده این کنسول می توانیم از مسیر زیر استفاده کنیم:

Start => Administrative tools => DNS


در این کنسول روی نام سرور کلیک می کنیم ومطابق تصویر روی forwarder راست کلیک کرده و properties می گیریم. در تب forwarder می توانیم تنظیمات لازم را انجام دهیم.

پس از کلیک روی گزینه Edit باید IP مربوط به domain Name مورد نظر را وارد کنیم .

میتوان با مارک دار کردن گزینه مشخص شده در تصویر برای DNS سرور تعیین کرد که اگر موفق به دریافت جواب از forwarder نشد درخواست را به Root hint ها ارسال کند.
هدایت Query ها بصورت شرطی یا Conditional Forwarding
Conditional در لغت ،به معنی شرط هست و مثلا اگر درخواستی برای رجوع به آدرس webmail.itpro.ir توسط کلاینت ارسال شد ،DNS این درخواست را مستقیما به IP مربوطه اش ارجاع می دهد.در واقع می توان با استفاده از قابلیتی بنام Conditional forwarder درخواست را برای یک Domain Name خاص ارسال کرد.

مراحل انجام عملیات Forwarding Conditional در DNS سرور
همانگونه که می دانیم وقتی که DNS Client یک Query برای DNS سرور ارسال می کند DNS ابتدا به جستجو در حافظه ی Cache خود و Host File ها و zone ها می پردازد و در صورت عدم یافتن جواب مناسب ،در صورتیکه DNS Server بعنوان یک Conditional forwarder تعیین شده باشد ، domain Name مورد نظرِ Query را روی IP آدرسی که در ساختار Conditional forwarder برای آن در نظر گرفته شده است ،می فرستد. به بیان ساده ،ما در یک Conditional forwarder یک FQDN خاص و DNS سروری که IP مربوطه آن نام را در بر دارد مشخص و تعیین می کنیم، تا درخواست هر کاربری که قصد مراجعه به آن FQDN را داشت، بطور مستقیم به آن آدرس ، ارجاع داده شود.(این همان تعیین شرط است) و نسبت به forwarder، شرایط بهتری را برای یافتن پاسخ، در حالت forward کردن کلیه درخواستها فراهم می کند و نیز از اولویت بالاتری نسبت به forwarder برخوردار است . با مشخص کردن Domain Name برای DNS سروری که باید Query را ارسال کند و تعیین یک یا چند آی پی آدرس برای Domain Name هایی که در نظر گرفته ایم می توان تنظیمات مربوط به Conditional forwarder را انجام داد.
شیوه پیاده سازی یک DNS server بعنوان Conditional forwarder
برای ایجاد یک Conditional forwarder نیز همانند ایجاد forwarder ، وارد کنسول DNS manager میشویم روی Conditional forwarder مطابق تصویر راست کلیک کرده و عبارت New Conditional forwarder را انتخاب می کنیم.در صفحه باز شده آدرس مورد نظر و IP مربوط به DNS سروری که باید برای یافتن جواب به آن رجوع شود را وارد می کنیم.

تذکر: باید در نظر داشت که نمیتوان Domain Name ای که zone آن در DNS server موجود است را برای Conditional forwarder. تعیین کرد.

از Conditional forwarder میتوان برای برقرار کردن ارتباط میان ساختار Name space های خصوصی با یکدیگر که جز DNS Name spaceهای موجود در اینترنت محسوب نمیشوند نیز استفاده کرد.(Name space به ساختار سلسله مراتبی در نظر گرفته شده برای یک اسم FQDN که بترتیب در بر دارنده بخشهایی چون Roottopsecond level domain و host میباشد اطلاق می گردد). اینگونه Name space ها می توانند در بردارنده ساختار سلسله مراتبی از ادغام چند سازمان و یا شرکت باشند. برای بهتر روشن شدن قضیه دو Name space دو شرکت مجزا را در نظر می گیریم،و برای DNS سرورهایِ ساختار Name space اول تعیین می کنیم که Query های خود را برای DNS سرورهای معتبر درساختارName space دوم ارسال کنند، در اینجا Conditional forwarder کمک خواهد کرد تا فرآیند Name Resolution میان این دو Name space بدون کمک گرفتن از عملیات recursion در DNS Name space موجود درمحیط اینترنت انجام گیرد.این شرایط Name Resolution را افزایش داده و مانع انجام recursion توسط DNS سرور با root های داخلی برای جست و جوی Name space های مختلف موجود در شبکه میشود.

این نکته را نیز باید در نظر داشته باشیم که DNS سرور نمی تواند یک Query را برای Domain Name موجود در zone های خود ارسال کند. ،بعنوان مثال DNS سرور برای zone موجود با نام Itpro.ir قادر به ارسال Query خود برای نام دومین Itpro.ir نخواهد بود و DNS سرور Itpro.ir میتواند Query ها را برای DNS Name هایی که مثلا با Example.Itpro.ir خاتمه می یابند ارسال کند.البته اگر Example.Itpro.ir به DNS سرور های دیگر delegate شده باشد.

اهمیت طول domain Name در Conditional forwarder
فرض را بر این می گذاریم که دو Conditional forwarder برای دو سرور متفاوت با نامهای Itpro.ir و example.Itpro.ir داریم. حال یک Query با محتوای network.example.Itpro.ir برای forwarder ارسال می شود. و تنها برای دو دومینConditional forwarder تعیین شده است. که هر دوی آنها به Itpro.ir ختم شده اند،بنابراین درخواست را برای IP دومینی که نام آن به درخواست موجود در Query نزدیکتر است یعنی example.Itpro.irارسال می کند تا سریعتر به جواب برسد.(با این فرض که در این دومین DNS ای موجود است که می تواند درخواست را به سرور اصلی و مورد نظر برای Query ارجاع دهد)
نظرات (0)
امکان ثبت نظر جدید برای این مطلب وجود ندارد.