عناوين



 اخبار


برگزیده


امنيت


مقاله


گزارش و گفتگو


ياداشت


اخبار شرکتها


همايشها



فراخوانها و آئين نامه ها


عکس و ویدئو

 
  خدمات



نسخه موبایل



خروجی پیامک



خروجی RSS



عضویت در خبرنامه ها

 

راهنما
تبليغات


 

سفارش آگهی
مقاله
پنجشنبه، 27 بهمنماه 1384

11:04 PM

February 16, 2006


DNS و BIND

نوشته: زهرا احمدیahmadi@foss.ir
       ناشر: Farsilinux.org


در این مقاله با مفاهیم DNS و BIND آشنا می‌شویم. با فهیمیدن این مفاهیم، متوجه خواهید شد که چگونه Domain name ها تبدیل به آدرسهای IP میشود





در این مقاله با مفاهیم DNS و BIND آشنا می‌شویم. با فهیمیدن این مفاهیم، متوجه خواهید شد که چگونه Domain name ها تبدیل به آدرسهای IP میشود به وسیله دستور dig به صورت دستیDomain name ها را به شماره‌های IP و یا برعکس آن، تبدیل می‌کنیم، و در انتها هم به بررسی برنامه‌های مورد نیاز برای تنظیم یک سرور محلی برای یک Domain خاص می‌پردازیم.


ابتدا ببینیم DNS و BIND به چند معنی هستند، و چگونه به هم مربوط می‌شوند. DNS مخفف عبارت Domain name system است. و آنچه DNS انجام میدهد این است که مسئول ترجمه شماره‌های IP و نام کامپیوترهای میزبان به یکدیگر است، مثلاً شماره IP 12349687 نام کامپیوتر میزبان نیز WWW.CBTnugget.com، یا www.redhat.com و نامهایی شبیه به این است کامپیوترها در ارتباط بین خودشان شماره‌هایIP را بیشتر دوست دارند چون کارشان را در فرستادن اطلاعات به یکدیگر خیلی ساده می‌‌کند. اما کاربران بیشتر به نامها تمایل دارند، چون به هیچوجه نمی‌توان این شماره‌های IP را به خاطر سپرد، مثلاً من می‌توانم بیشتر از 20 تا اسم میزبان یاد بگیرم، اما هرگز یکی از این شماره‌های عجیب و غریب IP را نمی‌توانم به خاطر بسپارم. DNS در واقع این دو تا را به هم تبدیل می‌کند، و کاربران و کامپیوتر را همزمان راضی نگه می‌دارد.


BIND مخفف عبارت Berkely Internet name system به معنی، سیستم نام اینترنت برکلی است و نرم‌افزار استاندارد برای لینوکس است، بسته‌های نرم‌افزاری مورد نیاز برای راه‌اندازی BIND روی سیستم شما عبارت است از bind که متداولترین نگارش آن 9.5 است و بسته نرم‌افزاریredht-configbinds و bind-utils و بسته‌های دیگری که ممکن است به آنها نیاز داشته باشید.


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









این دیاگرام یک قطعه بسیار بسیار کوچک از ساختار نام Domain روی شبکه اینترنت است مثلاٌ Domainهایcom ،edu،net،gov و هزاران Domain دیگر وجود دارد. از شاخه edu ممکن است شاخه دیگری به نام mit.edu منشعب شود، و از شاخه mit.edu ممکن است هزاران انشعاب دیگر مانند math.mit,edu و یا cs.mit.edu جدا شوند.


این ساختار درختی است که نام Domain هارا در اینترنت دارد. نکته بعدی این است که هر Domain یک گره در این درخت است، در مثال فضای دیسک، گره‌های روی دیسک، فهرستها هستند. هر گره رکوردهای منبعی دارد که اطلاعات را راجع به آن Domain ذخیره می‌کند.این رکوردهای منبع مانند فایلها هستند که به فهرستها نسبت داده می‌شوند، اما در اینجا این رکوردها، به Domainها نسبت داده می‌شوند. هرگره می‌تواند شامل تعداد دلخواهی بچه که ما به آنها subdomain می‌گوییم باشد Domain ریشه هم، . (دات) نامیده می‌شود، مانند فهرست ریشه که در فهرستهای ما فهرست / است.


حالا دوباره به دیاگرام بالا برمی‌گردیم. ما می‌خواستیم نامها و آدرسهایIP را به یکدیگر تبدیل کنیم، که این یکی از ابتدایی‌ترین کارهایی است که DNS انجام می‌دهد، در واقع کاری که ما انجام می‌دهیم این است که ازDNS بخواهیم که مثلاً آدرسIP، math.mit.edu را بدهد وکاری که DNS انجام می‌دهد این است که اول از همه، Domain مربوط بهedu را روی شبکه و از بین تمام این Domain-ها پیدا می‌کند، البتهDomain ها خیلی بیشتر از اینهایی هستند که من اینجا نوشته‌ام.


هر کشور هم Domain مخصوص به خودش را دارد مانند uk یا .de و مانند آن، بنابراین Domain های بسیار بسیار زیادی، تنها در بالاترین سطح وجود دارد. با توجه به شکل فوق، DNS بین این Domainها دنبال edu می‌گردد و وقتی که دومین Domain)) edu را پیدا کرد، بین تمام Domain هایی که ازedu منشعب شده است به دنبال دمین mit می‌گردد، البته اینجا هیچ دمین دیگری کشیده‌ نشده است، اما در واقع شاخه‌های دیگری مانند دانشگاه برکلی یا واشینگتن و یا هر دانشگاه دیگری ممکن است وجود داشته باشد، بعد از اینکه DNS ، .edu mit را پیدا کرد آنوقت به سراغ math می‌رود و بین تمام شاخه‌های منشعب شده از mit.edu شاخه edu. math.mit را پیدا می‌کند، وقتی که edu. math.mit پیدا شد، در این دمین یک رکورد وجود دارد که در آن شماره IP مربوط به آن آمده است و DNS این شمارهIP را گرفته و به شما می‌دهد و در نتیجه کاری که DNS در اینجا انجام می‌دهد ترجمه edu.math.mit به آدرسIP مربوط به آن است و البته از بسیاری جهات این یک تصویر خیلی ساده است و در واقع دقیقاً روند گرفتن نام و دادن شماره IP به این صورت نیست، اما اساس کار تقریباً به این صورت است، اولین ساده‌سازی که در این تصویر شده است این است که تصویر فوق به نسبت دمینهای که در شبکه اینترنت وجود دارد، جزء بسیار ناچیزی است حتی اگر می‌خواستیم فقط دمینهای منشعب شده از ibm.com را رسم کنیم باز هم این صفحه پاسخگو نبود. و فضای خیلی بیشتری نیاز داشتیم، فقط تصور کنیدکه دربالاترین سطح، ما کشورهای مختلف و طبقه‌بندیهای بسیاری را داریم و تحت هر کدام از آنها فکر کنید که ما مثلاً چقدر قلمرو .com یا .edu داریم و باز تحت هر کدام از این ساب‌دمینها فکر کنید که ما چقدر مثلاً دمین منشعب شده از ibm.com داریم و این روند همینطور می‌تواند ادامه داشته باشد، پس به جرات گفت می‌توان که این درخت حاوی نام دمینهای یک شبکه بسیار بسیار بزرگ و عظیم الجثه‌ای است که به هیچوجه نمی‌توان آن را فقط یک جا ذخیره کرد، حالا ببینیم این دمینها به چه نحوی روی شبکه اینترنت ذخیره می‌شود و ما برای سریع شدن دسترسی به این دمینها، باید چه کاری روی کامپیوتر شخصی خود انجام دهیم.


کاری که عملاً برای تفکیک نامها روی اینترنت انجام می‌شود، به وسیله 13 سرور ریشه است که در جهان وجود دارد و نام آنها از a.root_servers.net شروع می شود و به m.root-server ختم می‌شود، که در سراسر دنیا مانند کالیفرنیا، سوئد،توکیو، ویرجینیا، استکهلم پخش شده‌اند، اینها در واقع اولین خطوط برای تفکیک نام دمینها هستند البته این سرورها تمام نام دمینها را خودشان ذخیره نمی‌کنند بلکه آنها را به name server دیگر واگذار می کنند، این فرآیند آنقدر ادامه پیدا می‌کند تا اینکه به نام سروری که مسئول دمین مورد نظر است برسد. مثلاً وقتی که ما دمین edu.math.mit را می‌خواهیم. نام این دمین به سرور ریشه می‌رود این سرور آن را به سرورهای دیگری می‌فرستد، و این فرآیند آنقدر ادامه پیدا می‌کند تا وقتی که به سرورهای که مسئول دمین mit.edu برسد. هر دمین خودش یک name server اصلی و چندین name server تابع یا slave دارد، البته تمام اطلاعاتی که در name server اصلی وجود دارد در name server تابع هم هست، تنها کاری که با ایجاد این سرورهای اصلی و تابع انجام می‌دهیم این است که بار عملیات تفکیکی نام دمینها را در هنگام جستجوی نام یک دمین خاص کم کنیم اصلاً درست نیست که فقط یک ماشین، عملیات تفکیک نامها را در مورد یک دمین بزرگ مانند مایکروسافت (Microsoft.com) یا yahoo.comیا ibm.com انجام دهد. چون این دمینها بسیار بزرگ هستند و هزاران هزار ساب دمین دارند، به خاطر همین ازserver name اصلی و تابع استفاده می‌کنیم.


این روند کاری بود که برای پیدا کردن یک دمین خاص انجام می‌شود، درخواست یک دمین ابتدا به سرور ریشه می‌رود و از آنجا بین server name های دیگر، دست به دست می‌شود تا وقتی که به server name مسئول آن می‌رسد که این سرور در نهایت به درخواست پاسخ می‌دهد.


اجازه دهید به چندفایل پیکربندی مربوط به DNS نگاهی بکنیم. فایل پیکربندیی به نام nsswitch.conf در فهرست /etc وجود دارد، البته تمام این فایلهای پیکربندی در فهرست etc/ قرار دارند، این فایلِ nsswitch به سیستم می‌گوید که کجا دنبال اطلاعات مربوط به host یا میزبان بگردد.


فایل دیگر که /etc/hosts است، کامپیوترهای موجود روی شبکه را لیست می‌کند، که این یک روش خوب، برای تفکیک نام کامپیوترها و شماره‌های IP روی شبکه های محلی کوچک است، چون سیستم ابتدا در لیست موجود در فایل hosts جستجو می‌کند.


فایل دیگر که /etc/resolv.conf نام دارد، حاوی آدرسهایIP مربوط به name server-های قلمروهای شناخته شده است. بنابراین وقتی شما کامپیوتر خود را تنظیم می کنید و به شبکه وصل می شوید نام دمینهای شناخته شده و معروف را با ابزارهای پیکربندی آنها در این فایل resolv.conf قرار می‌دهید.



اولین فایلی که باز می‌کنیم، فایلِ nsswitich.conf است.










چیزی که ما اینجا دنبال آن می‌گردیم، سطری ا ست که با hosts شروع می شود. اطلاعاتی که این سطر به ما میدهد این است که اولین جایی که بابد برای تفکیک نام میزبانها جستجو کنیم، فایلهای محلی هستند یکی از این فایلهای محلی هم فایل /etc/hosts است. در واقع ما ابتدا از سیستم محلی شروع می کنیم و تا جائیکه امکان داشته باشد از جستجو در شبکه جلوگیری می‌کنیم. چون اصلاً لزومی ندارد برای دمینی که در فایلهای محلی ما وجود دارد دوباره وقت صرف کرده و جستجو نمائیم. در مرحله بعدNIS plus ( ان آی اس پلاس) است که ما در قسمتهای پایانی در مورد آن صحبت خواهیم کرد. اما در اینجا فقط همین را می‌گوییم، که این هم یک روش برای تفکیک نام hosts است، و مرحله نهایی، استفاده از dns است که این همان روشی بود که توضیح دادیم و آن جستجو از سرور ریشه تا server name مسئول آن است.


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


حال اگر به فایل /etc/hots نگاه کنیم می‌توانیم لیست کامپیوترهای موجود در شبکه محلی را ببینیم.


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





مقاله مفید دیگری نیز در این آدرس موجود می‌‌باشد. علاقه‌مندان به پیگیری مباحث فوق، می‌توانند از این مستندات نیز استفاده نمایند.


فایل دیگر etc/resolv.conf است. تنها چیزی که در این فایل وجود دارد این است که حاوی آدرس IP مربوط به name server است. حال می‌خواهیم کمی در مورد دستور


لینک ثابت || اضافه شده توسط آرش کریم بیگی|| نسخه قابل چاپ || بازگشت به صفحه اصلی || آرش کریم بیگی

برای عضویت در خبرنامه پیامکی ایستنا اینجا را کلیک کنید. برای عضوریت در خبرنامه روزانه ایمیلی ایستنا؛ نشانی پست الکترونیکی خود را در فرم زیر وارد نمایید. پس از آن به صورت خودکار ایمیلی به نشانی شما ارسال میشود، برای تکمیل عضویت خود و تایید صحت نشانی پست الکترونیک وارد شده، می بایست بر روی لینکی که در این ایمیل برایتان ارسال شده کلیک نمایید. پس از آن پیامی مبنی بر تکمیل عضویت شما در خبرنامه روزانه  ایمیلی ایستنا نمایش داده میشود.


فهرست آخرین عناوین

 
    تبليغات  
 







 
  سفارش آگهی