فاطمه قرباوی
کارشناس شبکه و مجازی سازی

3 نکته مهم در طراحی DNS سرور مایکروسافت که باید بدانید

همانطور که می دانید قبل از هر طراحی باید کلیه احتمالات و بررسی ها برای داشتن یک طراحی خوب در نظر گرفته شود تا طراحی شما یک طراحی برنامه ریزی شده باشد.این امر در تمامی رشته ها و زمینه ها صادق است و شبکه های کامپیوتری نیز از این امر مستثنی نیست.برای پیاده سازی هر سرور و داشتن هر سرویسی لازم است در ابتدا نیازمندی ها بررسی شود،بستری که قرار است آن سرور بر روی آن ایجاد شود در نظر گرفته شود و کلیه عواملی که هر یک به دلیلی ممکن است خللی در کار سرور ایجاد کند نیز عنوان و برای آنها راهکارهایی مطرح گردد. درمقاله نگاهی بر ویژگیهای DNS در ویندوز سرور 2008، نگاهی مختصر بر ویژگیهای DNS در ویندوز سرور 2008 داشتم و در این مقاله مواردی را که برای طراحی DNS Server و DNS Zone باید در نظر گرفت ، مورد بررسی قرار می گیرد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
طراحی DNS

طراحی DNS سرورها

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

همیشه قبل از پیاده سازی سرور میزان فضایی که برای DNS Server در نظر گرفته اید و سخت افزاری که نیاز کاری شما را بر طرف می کند را پیش بینی کنید .توجه کنید که شما به چه تعداد DNS Server در شبکه نیاز دارید و یا بهتر بگوییم پیشبینی شما استفاده از چه تعداد DNS سرور برای برطرف کردن نیاز به این سرویس می باشد . بعد از اینکه تعداد DNS Server های مورد نیازتان را مشخص کردید ،سپس باید تصمیم بگیرید که بر روی کدام سرورها Host Primary و کپی Secondary Zone ها باید قرار بگیرند و اگر از Active Directory Domain Services یا AD DS استفاده می کنید،در نظر بگیرید که کامپیوتر سرور همان دومین کنترلر خواهد بود یا یکی از اعضای سرور در دومین می باشد.با در نظر گرفتن بار ترافیکی یا traffic loads و عمل replication و قابلیت fault tolerance ، بایدمشخص کنیدکه DNS Server شما در کجای شبکه باید قرار بگیرد و حتما محل قرارگیری آن را از قبل پیشبینی کنید.

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

  1. در DNS Server ی که می خواهید طراحی کنید،چه تعداد Zone باید نگهداری یا بارگذاری شود؟
  2. برای هر Zoneی که DNS Server بارگذاری یا load میکند،حجم آن Zone به چه اندازه است ؟ ( این حجم معمولا براساس سایز فایلهای Zone و تعداد رکوردهایی که در Zone قرار دارند مشخص می شود )
  3. برای Multihomed DNS Server ، چه تعداد interface جهت گوش دادن به درخواستهای کلاینتها و پاسخ دادن به این درخواستها در هر Subnet ای که سرور DNS وجود دارد،باید داشته باشید؟ ( Multihomed DNS Server :معمولا به صورت پیش فرض کلاینتها می توانند درخواستهای خود را به هر DNS Server ی که می خواهند بفرستند،اما در برخی از شبکه ها این پیشفرض اجرا نشده است.در این شبکه ها تنها چند IP آدرس برای سرورهای DNS در نظر گرفته می شود و کلیه درخواستها به IP آدرسهایی فرستاده می شود که درتب Interface ،در Server Properties تعریف شده است.درواقع Multihomed DNS Server این امکان را به شما می دهد که شما کلیه درخواستها را به IP های مربوط به DNS Sever هایی بفرستید که می خواهید آن سرورها در شبکه شما فعال باشند )
  4. به صورت کلی از DNS Server انتظار می رود که چه تعداد query دریافت کند و به چه تعداد کلاینت باید سرویس بدهد؟

یکی از مورادی که در DNS Server ها نقش به سزایی را دارند میزان حافظه و RAM ی است که سرور دارد. در بیشتر موراد افزودن RAM به DNS Server می تواند پیشرفت قابل ملاحظه ای در کارایی سرور داشته باشد. این امر به این دلیل است که DNS Server کلیه ساختار Zone خود را ،هنگام Startup در حافظه خود بارگذاری خواهد کرد. از اینرو است که حافظه یا مموری در DNS Server ها از اهمیت به سزایی برخوردار است .اگر سرور شما تعداد زیادی Zone و Dynamic Update های کلاینتهای Zone را بارگذاری می کند،Additional Memory یا حافظه های اضافی در بهبود عملکرد آن بسیار موثر خواهند بود.توجه داشته باشید که برای استفاده های معمولی ، حافظه ی DNS Server باید دارای حداقل های زیر باشد:

  1. تقریبا 4MB ، RAM جهت شروع به کار DNS سرور ،بدون بارگذاری کردن هیچ Zoneی لازم است.
  2. به ازای اضافه شدن هر Zone یا رکوردها به سرور،DNS Server حافظه های اضافی مصرف خواهند کرد.
  3. تخمین زده شده است که به ازای افزودن هر رکورد به یک Server Zone ،به طور میانگین تقریبا 100 بایت از حافظه سرور استفاده می شود. (به عنوان مثال،اگر یک Zone شامل 1000رکوردی باشد که به یک سرور افزوده شده است،تقریبا 100 کیلوبایت از حافظه سرور را به خود اختصاص می دهد.)

تعیین محل قرار گیری DNS سرور در شبکه

خوب حال به این قسمت از طراحی خود می رسیم که در کدام قسمت از شبکه DNS Server باید قرار بگیرد؟ در بیشتر مواقع DNS Server بر روی همه دومین کنترلر ها نصب خواهد شد.اگر به هر دلیلی نمی خواهید DNS Server را بر روی همه دومین کنترلرها قرار دهید،درادامه این مقاله همراه باشید. به صورت کلی، DNS Server باید درقسمتی از شبکه قرار بگیرد که به صورت مرکزی برای کلیه کلاینتها در دسترس باشد.همچنین متعارف است که در هر Subnet از یک DNS Server استفاده شود.زمانی که می خواهید محل مناسب برای DNS Serverتان را انتخاب کنید،باید موراد زیر را در نظر بگیرید:

  1. آیا می خواهید DNS سرورتان، AD DS را نیز پشتیبانی کند ؟
  2. آیا DNS Server تان نیز یک Domain Controller است یا در آینده یک Domain Controller خواهد شد یا خیر؟
  3. اگر DNS Server اصلی تان از کار بیافتد،آیا DNS Server دیگری وجود دارد که به Client هایتان سرویس دهد؟
  4. اگر DNS Server در Subnet ی قرار گرفته است که از بعضی از Client هایش دور می باشد،DNS Server دیگری وجود دارد تا در صورت از کار افتادن روتر ، به Client ها پاسخگو باشد؟

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

خوب در این شرایط اگر یکی از Subnet ها دارای کلاینت زیادی باشد که هر کدام از آن کلاینتها درخواستهای زیادی از DNS Server دارند،بهترین کار این است در آن Subnet نیز یک DNS Server دیگر راه اندازی کنید . از اینرو در صورت Fail-over شدن روتر یا DNS Server شبکه شما دچار مشکل نمی شود و مسئله مربوط به back up نیز در نظر گرفته شده است.

زمانی که در شبکه ای می خواهید تعداد DNS Server هایی که باید در آن شبکه وجود داشته باشند را مشخص کنید،باید بار ترافیکی حاصل از Zone Transfer و Query ها را نیز در نظر بگیرید.اینکه در آن شبکه DNS و کلیه های رکوردهای آن به صورت Active Directory Integrated است و یا کلیه اطلاعات و رکوردها در خود Zone نگهداری می شوند نیز باید مشخص شود. با وجود اینکه در بیشتر موارد از Incremental Zone Transfer استفاده می شود و آخرین اسامی استفاده شده در سرور cache می شود،بازهم Zone Transfer مسئله ای است که در نظر نگرفتن آن باعث دردسر در شبکه خواهد شد. از اینرو این مسائل باید قبل از طراحی در نظر گرفته شوند تا احتمالات مربوط به حجم ترافیکی که قرار است منتقل شود و سرعت لینک ارتباطی بین Zone ها نیز در طراحی در نظر گرفته شود.

یکی دیگر از مواردی که ممکن است ایجاد ترافیک کند و باید در طراحی ها در نظر گرفته شود DHCP است.با توجه به وظیفه DHCP که اختصاص دادن IP به Client ها می باشد،این IP ها تا مدت زمان خاصی میتوانند در اختیار کلاینتها قرار گیرند و DHCP باید مرتب این Lease Time ها ( یا مدت زمانی که IP به کلاینت اختصاص دارد ) را بررسی کند تا در صورت اتمام این زمان آن را تمدید کند یا IP را پس بگیرد.از اینرو گرفتن Update ها و این رفت و برگشتها خود باعث ایجاد ترافیکی در شبکه میشود که آن نیز باید در نظر گرفته شود.

یکی از دلایل طراحی DNS کاهش ترافیک حاصل از Broadcast بین Local Subnet ها است.این Broadcast باعث ایجاد ترافیکی بین کلاینتها و سرورها میشود به خصوص زمانی که DNS Server در یک LAN یا WAN که دارای یک روتینگ پیچیده است،قرار داشته باشد. خوب حال تصور کنید که کلیه مواردی که در پاراگراف قبلی عنوان کردیم نیز در یک WAN یا LAN ی که از یک لینک ارتباطی ضعیف استفاده میکند نیز وجود داشته باشد ( Zone Transfer ، DHCP Update و .. ) یکی از راههای مقابله با این مشکل این است که DNS Server ی در هر منطقه ی دورافتاده قرار دهیم که تنها قابلیت Caching را داشته باشد.

این نکته را در نظر داشته باشید که در هر DNS Zone باید حداقل دو کامپیوتر سرور وجود داشته باشند تا قابلیت Fault tolerance را داشته باشید.با این قابلیت با از کار افتادن یکی از سرورها دیگری جایگزین آن خواهد شد و بدون هیچ مشکلی چرخه DNS ادامه پیدا می کند.در هر مرحله بعد از مشخص شدن تعداد DNS Server هایی که می خواهید داشته باشید، سطوح مربوط به Fault Tolerance را نیز در نظر بگیرید. توجه داشته باشید که :

  • زمانی که شما می خواهید از یک DNS Server در یک LAN کوچک که تنها دارای یک Subnet است استفاده کنید،می توانید آن سرور واحد را طوری کانفیگ کنید که Primary و Secondary سرور را برای هر Zone شبیه سازی کند.
  • برای سادگی و مدیریت بهتر DNS Server ها،برای همه سرورهایتان از یک سیستم عامل استفاده کنید.
  • پیشنهاد می شود که از DNS Console Tool برای مدیریت فایلهای Zone ی که توسط سرویس DNS ایجاد میشود نیز استفاده شود.گزینه ی دیگری استفاده از هر Application ی است که قابلیت ذخیره سازی فایلها در قالب text را داشته باشد ،است.از یک روش واحد برای به روز رسانی Zone ها به صورت مداوم استفاده کنید، این باعث میشود که Zone Edit ها به روی همدیگر Override نکنند.

طراحی Zone های DNS

یکی از فاکتورهای مهمی که در طراحی zone ها باید در نظر گرفت،ترافیک بین لینکهای ارتباطی بین zone ها و عوامل تاثیرگذار براین ترافیکها میباشد،است خصوصا زمانی که شما برای اولین بار Namespace خود را درون یک zone پارتیشن بندی میکنید.اگرچه Domain Name System ( DNS ) طراحی شده است تا ترافیک حاصل از Broadcast بین local subnet ها کاهش پیدا کند اما باز هم ترافیکی بین سرورها و کلاینتها ایجاد میشود.

این مساله زمانی که DNS در شبکه های مسیریابی شده (Routed Network )، استفاده میشود نسبتا صحیح است.برای در نظر گرفتن و بررسی ترافیک DNS ، شما باید مرتبا وضعیت سرور را بررسی کنید و یا از DNS performance counters هایی که system monitor ارائه میدهد ،استفاده کنید. برای بررسی ترافیک حاصل از روتینگ،تاثیر عوامل زیر را در نظر بگیرید،خصوصا زمانی که از یک لینک کم سرعت در یک شبکه WAN استفاده میکنید،این موارد ترافیکهای حاصل از انواع ارتباطات مربوط به DNS را بیان می کند:

  1. ترافیک Server-to-Server که به دلیل عملیات مربوط به Zone transfer و DNS interoperability با دیگر سرورها ایجاد میشود ( به عنوان مثال زمانی که سرویس WINS فعال است )
  2. ترافیک Client-to-Server که به دلیل query های صورت گرفته و آپدیتهای درخواست شده توسط DNS کامپیوترهای کلاینتها یا DHCP سرورها که در خواست Dynamic Updates برای ورژنهای قدیمیتر DNS کلاینتهایی که Dynamic Updates را پشتیبانی نمی کنند.

زمانی که شما از یک ساختار Namespace کوچک و فلت استفاده میکنید،ممکن است که در شبکه تان replication بین همه ی zoneها و همه ی سرورهارا به صورت کامل انجام دهید ( نه Incremental )، اما در Namespaceهای بزرگ و سلسله مراتبی این مدل Replication اصلا پیشنهاد نمیشود.در شبکه های بزرگ جهت برنامه ریزی برای zoneها شما نیاز به مطالعه،تست،تجزیه و تحلیل و درنهایت بازبینی و اصلاح طراحی ها براساس مشاهدات و تخمین های ترافیکی صورت گرفته دارید.بعد از انجام مراحل ذکر شده شما میتوانید DNS Zoneها را براساس نیازمندی ها و در راستای ایجاد یک Name service با کارایی بالا و دارای قابلیت Fault-Tolerance برای هر سایت خود اقدام نمایید.

سرویس DNS Server ،انجام عملیات Zone transfer بین سرورها را به صورت Incremental نیز پشتیبانی میکند.این باعث کاهش ترافیکهای ناشی از Replication بین DNS میشود و شما این مورد را باید حتما در طراحی های خود در نظر بگیرید.از دیگر مواردی که میتوانید در طراحی DNS Name service در نظر بگیرید Caching-only serverها میباشند.این سرورها دارای DNS Zone نمی باشند اما آپشن خوبی هستند برای Siteهای کوچکی که استفاده کمی از DNS دارند اما درون یک WAN عمل انتقال Zone های بزرگ در لینکهایی که سرعت بالایی ندارند را انجام میدهند.

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


فاطمه قرباوی
فاطمه قرباوی

کارشناس شبکه و مجازی سازی

کارشناس شبکه و مدیریت شبکه های مایکروسافتی ، دارای مدارک MCITP ، CCNA و VCP و علاقمند به مجازی سازی و توسعه شبکه های مجازی مبتنی بر VMware می باشم .

نظرات