آشنایی با DNS- قسمت اول

همانطور که می دانید؛ DNS یک الگوی نام گذاری سلسله مراتبی فراهم می کند. اطلاعات مربوط به فضای نامی (Name Space) در یک Data Store ذخیره می شوند. هر node در شبکه به عنوان یک ورودی (Entry) در DNS Data Store ذخیره می شود. به هر یک از این ورودی ها یک رکورد (Record) گفته می شود. این رکورد ها دارای انواعی هستند که نوع host را معین می کند. به عنوان مثال با استفاده از انواع رکورد می توان متوجه شد، که این رکورد مربوط به یک DNS Server، Mail Server و… است. در DNS Data Store اطلاعات بر اساس نام دسته بندی می شوند پس هر فضا باید دارای یک نام باشد. زمانی که یک Domain فرزند ایجاد می شود، نام والد به فرزند اضافه می شود. نتیجه آنکه نام Domain مکان سلسه مراتبی آن را مشخص می کند. بدیهی است در هر سطح لازم است این نام یکتا باشد. به محدوده ی فرزند Subdomain گفته می شود.

تذکر: واژه Domain به کاربرده شده در این قسمت ، دقیقا مطابق با واژه ای که در Active Directory به کار می رود نیست. در آنجا منظور از Domain گروهی از کامپیوتر ها هستند که توسط یک مدیریت مرکزی ، مدیریت می شوند اما در اینجا به یک فضای نامی در یک محدوده ی معین گفته می شود. در Active Directory آن مدیریت روی فضای نامی که در اینجا مطرح می شود اعمال می شود. Active Directory برای مکانیسم تحلیل نام از DNS استفاده می کند.

بخش های یک نام DNS

یک نام DNS شامل سه بخش اصلی است که عبارت اند از:

Root Domain

بالاترین مرتبه در ساختار سلسله مراتبی Domain گفته می شود که با یک نقطه نمایش داده می شود. می تواند یک رشته تهی نیز باشد.

Top Level Domains

دو،سه،چهار حرفی هایی هستند که بر اساس نوع فعالیت و یا مکان جغرافیایی مشخص می شوند.این نامگذاری توسط Internet Corporation for Assigned Names and Numbers یا ICANN روی اینترنت کنترل می شود.جدول زیر نمونه هایی از Top Level Domain را معرفی می کند:

Top Level Domain کاربرد
com سازمان های تجاری
gov سازمان های دولتی
edu موسسه های آموزشی
org سازمان های غیر تجاری
au مخصوص کشور استرالیا
ir مخصوص کشور ایران

از لحاظ مفهومی اینترنت به بیش از ۲۰۰ دامنه Top Level تقسیم می شوند که Top Level Domain ها خود دارای دو بخش هستند، دامنه های کشور ها و دامنه های عمومی. به دامنه های عمومی، دامنه های سازمانی و به دامنه های کشور ها، دامنه های جغرافیایی نیز گفته می شود. به غیر از این دو گروه، گروهی دیگر به عنوان رزرو شده وجود دارند که in-addr-arpa گفته می شوند. این گروه برای تبدیل آدرس IP به نام سلسله مراتبی DNS مورد استفاده قرار می گیرند. به تبدیل IP آدرس به نام Reverse Lookup گفته می شود. امروزه این پسوند ها تنوع بسیار بیشتری نسبت به گذشته پیدا کرده اند.

همچنین از اکتبر ۲۰۰۹، ICANN امکان استفاده از الفبای غیر انگلیسی را برای حوزه های جغرافیای محلی ایجاد کرد. به این اسامی internationalized domain name یا با اختصار IDN گفته می شود.

Second-Level Domains

هرفرد حقیقی و یا حقوقی می تواند یک Second Level Domain ثبت کند . این کار توسط شرکت های مختلفی روی اینترنت انجام می شود. بدیهی است که نام در این قسمت باید در والد خود یعنی top-Level Domain خود یکتا باشد. به عنوان مثال:

Second-Level Domains توضیح
Microsoft.com Microsoft corp
w3.org کنسرسیوم World Wide Web (www)
pm.gov.au نخست وزیر استرالیا
ErfanTaheri.com عرفان طاهری!

 

توجه داشته باشید که با توجه به آنکه DNS یک نام سلسه مراتبی است، هر حوزه بالا تر وظیفه مدیریت حوزه پایین تر خود را بر عهده دارد. به عنوان مثال حوزه ir وظیفه مدیریت second-Leve Domains خود را بر عهده دارد.

Sub-Domains

به تمامی سلسله مراتب های پس از Second-Level Domain گفته می شود. به عنوان مثال، Files.erfantaheri.com دامینی است که فایل های ضمیمه شده به مطالب در آن قرار می گیرد. مدیریت این Sub-Domain در اختیار حوزه ErfanTaheri.com یعنی حوزه parent خود است.

Host Name

به یک کامپیوتر روی اینترنت و یا یک شبکه خصوصی دلالت می کند. این قسمت سمت چت ترین بخش در آدرسی است که به آن fully qualified domain name یا FQDN گفته می شود. FQDN یک اسم کامل DNS است که از root domain آغاز شده و به یک host name ختم می شود. به عنوان مثال در تصویر زیر، Computer1.sales.microsoft.com. یک FQDN است.

image

 

Private Domain Namespace

به غیر از Domain روی اینترنت، سازمان ها می توانند به صورت داخلی و غیر مرتبط به اینترنت فضای نامی مختص خود را داشته باشند، و خود آن را مدیریت کنند. این اسامی روی اینترنت قابل Resolve نخواهند بود. همانند MyCompany.Local

راهنمای Domain Name

– تعداد سطوح در ساختار سلسله مراتبی را محدود کنید.مثلا ۴ سطح  و سطح پنجمی وجود نداشته باشد. تعداد سطوح وظایف مدیریتی را افزایش می دهند و دسترسی ها را برای کاربران دشوار می کند.
– هر sub domain ای نسبت به parent والد خود باید دارای یک اسم یکتا داشته باشد.
– از انتخاب نام های طولانی پرهیز کنید. طول کلی یک FQDN نمی تواند از ۲۵۵ کاراکتر تجاوز کند ( با احتساب . ها )
– از اسم های ساده که راحت به یاد می مانند استفاده کنید.
– ویندوز سرور ۲۰۰۰ و ۲۰۰۳ از استاندارد RFC 1035 پیروی می کنند یعنی a-z , 0-9 و – (hyphen).
– DNS Service همچنین از Unicode پشتیبانی می کند,unicode شامل حروفی است که در  ASCII (American Standard Code for Information Interchange ) موجود نیست .برای اطلاعات بیشتر به RFC 2044 مراجعه کنید.
– با آنکه هر دو سیستم نامی DNS و NetBIOS می توانند استفاده شوند، این کار اکیدا توصیه نمی شود و فقط استفاده از DNS به تنهایی توصیه می شود.

Zone ها

یک Zone نمایش یک Domain Namespace گسسته است. از zone های چندگانه جهت تقسیم وظایف مدیریتی به کار می رود. اطلاعات name-to-IP address در Database همان zone نگه داری می شود . مثلا name-to-IP address در خصوص Microsoft و Sales در Zone1 Database file ذخیره می شود. یک سرور می تواند مسئول چند Zone باشد و هر کدام از Zone ها حاوی یک یا چند Sub Domain باشند. به عنوان مثال یک سرور می تواند مسئول نگه داری Zone های Microsoft.com و ErfanTaheri.com باشد که هر کدام دارای Subdomain هایی هستند. با استفاده از فرآیند Delegation دو دامین a.contoso.com و b.contoso.com می توانند به صورت جداگانه مدیریت شوند.

 

image

انواع ZONE

یک دامین می تواند شامل تعدادی Zone باشد. هر Zone در هر دامین یک نوع نقش را ایفا می کند. نقش ها سه دسته اند:

۱) Primary: رکورد های موجود در این نوع منبع اصلی اطلاعات هستند. برای ایجاد پشتیبان از نوع Secondary استفاده می شود. این نسخه خواندنی – نوشتنی است.

۲) Secondary: یک نسخه معتبر از اطلاعات Primary هستند. این نسخه فقط خواندی است.

۳) Stub: یک کپی از رکورد های لازم برای شناسایی سرور های  DNS معتبر برای آن Zone اصلی. این نوع Zone ها برای نگه داری نام DNS Serverهای معتبر برایZoneهای Delegate شده استفاده می شوند. این نسخه فقط خواندی است.

Name Server ها

یک DNS name server وظیفه ذخیره zone database file را بر عهده دارد.Name Server ها می توانند اطلاعات مربوط به یک یا چند zone را ذخیره کنند. یک DNS Client که به آن Resolver هم گفته می شود برای یافتن IP Address مربوط به یک Server به یک DNS Server مراجعه می کند.

مقدمه ای بر Name Resolution

Name Resolution به فرآیندی گفته می شود که طی آن IP آدرس نظیر اسم پیدا می شود یا بر عکس. به عنوان مثال زمانی که قصد دیدن وب سایت مایکروسافت را داریم از www.microsoft.com. استفاده می کنیم. در این فرآیند، IP address مربوط به web server درخواست شده یافت می شود.

عملیات Name Resolution دو نوع است:

forward lookup query : پیدا کردن IP از روی نام
reverse lookup query : پیدا کردن نام از روی IP

بدیهی است یک DNS server در zone ای می تواند کار کند که در آن اختیار دارد. معمولا چنانچه یک Name Server نتواند جستجو را پاسخ دهد ، جستجو را به Name server دیگری که می تواند آن را پاسخ دهد می فرستد. Name server ها نتیجه جستجو ها را cache می کنند تا ترافیک در شبکه کمتر شود.

هنگامی که یک کلاینت DNS نیاز به جستجوی نامی را دارد، برای تحلیل آن نام از سرور های DNS پرسش می کند (یک Query ارسال می کند). هر پیام که کلاینت ارسال می کند حاوی سه نوع اطلاعات است:

– یک FQDN.
– نوع پرسش که مشخص کننده نوع رکورد دخواستی یا حالت خاصی از عمل پرسش دارد.
– تعیین کلاس نام DNS

به عنوان مثال یک Resolver یا DNS Client از Name Server یا DNS Serverسوال می کند: “آیا شما رکوردی از نوع A برای کامپیوتر Hostname.example.contoso.com دارید؟”

پرسش ها به روش های متفاوتی تحلیل می شود. در یک سناریوی ساده، یک کلاینت با DNS Server ارتباط برقرار می کند و سپس آن سرور در اطلاعات داخلی خود را (Local) بررسی می کند که آیا پاسخ سوال را دارد یا خیر. روش دیگر می تواند این باشد که  DNS Server جهت پاسخ به کلاینت به DNS های دیگر مراجعه کرده و FQDN مورد نظر کلاینت را از آن ها پرسش می کند. به این روش Recursion می گوییم. در این روش در واقع، DNS Server خود تبدیل به یک DNS Client شده و از DNS Server های دیگری، پرسش می کند. روش دیگری که به ذهن می رسد آن است که کلاینت برای یافتن پاسخ سوال خود با کمک اطلاعاتی که از DNS Server ی که از آن پرسش کرده، خودش از DNS Server های مجددا پرسش کند. به این روش Iterative گفته می شود. به دلیل سرعت بخشیدن به عملیات، می توان اطلاعات به دست آمده را در هر مرحله به صورت موقت و برای مدتی کوتاه نگه داری کرد. به عنوان مثال می توان، روی Client اطلاعاتی که پرسش کرده را برای مدتی ذخیره کرد تا لازم نباشد هر بار از Server پرسش کند. همچنین در یک Server می توان اطلاعاتی که از Server های دیگر به دست آمده را نگه داری کرد تا لازم نباشد پرسش مجددا صورت گیرد. به فضای نگه داری این اطلاعات Cache گفته می شود.

مراحل پرسش از DNS

بخش ۱: یک کلاینت اگر نتواند در Cache داخلی خود نام مورد نظر را Resolve کند، یک پرسش به سمت DNS سرور می فرستد. در تصویر زیر سوالات با نمادQ و پاسخ ها با نماد A مشخص شده است. در مثال زیر نوع پاسخ دهی Recursion است.

فضای Cache داخل هر کامپیوتر ممکن است اطلاعات را به دو صورت به دست آورد:

۱)   اگر فایل Hosts داخل کامپیوتر تنظیم شده باشد، همه نام ها و آدرس های IP مربوط به آن ها در زمانی که سرویس DNS Client شروع به کار می کند و در زمان به روز رسانی فایل آن اطلاعات به داخل Cache بارگذاری می شوند.

۲)   رکورد هایی که طی پرسش های قبلی از DNS Server پاسخ داده شده است برای مدتی در Cache باقی می مانند.

بخش ۲: پرسش از یکی از Name Serverها به این صورت که ابتدا از Preferred DNS Server سوال می شود و چنانچه در دسترس نبود از Alternate DNS Servers.

بخش ۳: زمانی که یک سرور یک Query  (پرسش) را دریافت می کنند، ابتدا آن را با رکورد های Database خود مقایسه می کند، اگر رکوردی متناسب یافت نشده، سپس Query را با حافظه Cache خود مقایسه می کند. چناچه جواب مناسبی یافت نشد، مراحل پرس و جو نام با توجه به تنظیمات سرور انجام می شود.

image

انواع Query

Iterative Query: در این روش، DNS Client با توجه به Root DNS Server، خود عملیات یافتن پاسخ Query را در صورتی که Local DNS Server از آن آگاه نبود انجام می دهد.

Recursive Query: در این روش، DNS Server خود مسئولیت پاسخ به Query را برعهده می گیرید و Client را در گیر نمی کند. این روش برتری های زیادی از جمله امکان Cache کردن پاسخ Query را دارد.

Reverse Query: در این نوع Query یک آدرس IP به یک نام DNS تبدیل می شود.

مثال:

image

۱) Client یک Forward lookup query برای Local name server ارسال می کند.

۲) Local name server ابتدا اطلاعات خود را چک می کند. چون در Microsoft.com توانایی ندارد و در Cache خود اطلاعات مربوطه را ندارد؛ یک query برای یکی از DNS root server ها ارسال می کند.DNS root server یک جواب به Local name server ارسال می کند که آن را به Com name server ارجاع می دهد.

۳) Local Name Server یک query به Com Name server ارسال می کند و Com Name server آن را به Microsoft name server ارجاع می دهد.

۴) Local Name Server یک query به Microsoft Name server ارسال می کند . از آنجا که Microsoft Name server توانایی در آن قسمت شبکه را داراست ، IP آدرس www.microsoft.com. را بر می گرداند.

۵) Local Name server آدرس IP را به Client ارسال می کند.

۶) Name Resolution تمام شده و Client می تواند به www.microsft.com. دسترسی پیدا کند.

انواع پاسخ

بر اساس حادثه ای که برای یافتن پرسش اتفاق می افتد، DNS Client ممکن است جواب های متفاوتی را از DNS Server دریافت کند:

– پاسخ معتبر: پاسخ داده شده توسط سروری است که مسئول مستقیم دامنه پرسش شده است و رکورد ها را در DB خود دارد.(Authoritative Answer)

– پاسخ مثبت: پاسخ مثبت شامل رکوردی است که پاسخ کلاینت است.(Positive Answer)

– پاسخ ارجاعی: این پاسخ مربوط به زمانی است که Recursion در سرور غیر فعال باشد. این رکورد ها به عنوان منبعی برای عمل Iteration است. (Referral Answer)

– پاسخ منفی: نشانگر آن است که نام پرسش شده در Domain مورد نظر وجود ندارد و یا نوع رکورد درخواست شده برای آن نام مناسب نیست. (Negative Answer)

Root Hints

برای انجام Recursion به صورت صحیح لازم است یک DNS Server بداند جستجو را از کجا آغاز کند. روی اینترنت، برای این منظور ۱۳ سرور اصلی که اطلاعات مقدماتی برای تحلیل نام را دارند در ویندوز به صورت پیش فرض وجود دارد. این فایل در System32\DNS است. این Root Hint اغلب برای نرم افزار Name Server خود از BIND (Berkeley Internet Name Domain) استفاده می کنند که توسط چهار دانشجوی دانشگاه کالیفرنیا، برکلی برنامه نویسی شده. در اغلب نسخه های Unix از این سرویس برای DNS استفاده می شود و فرمت انتقال پر سرعت (Fast Transfer Format) اطلاعات Zone با استفاده از فشرده سازی و انتقال همزمان چند رکور در یک Packet از مهمترین ویژگی های آن است. در ویندوز نیز از Fast Transfer Format پشیتبانی به عمل می آید به صورت پیش فرض مورد استفاده قرار می گیرد. به نحوی حیات شبکه اینترنت امروز وابسته به آن ۱۳ Name Server است. هرچند این تعداد قابل توسعه دادن است. در زیر مکان فیزیکی و اطلاعات این Name Server ها را مشاهده می کنید.آدرس DNS این Name Server ها به صورت Letter.root-servers.net است که letter با حرف نظیر آن در جدول جایگزین می شود. توجه داشته باشید که این به معنی یک سرور فیزیکی نیست و تجهیزاتی منحصر به فرد و قابل اطمینان استفاده می شود تا بتوانند ترافیک بسیار را بر عهده بگیرند. همچنین ۹ Name Server از ۱۳ تا، از تکنولوژی Anycast استفاده می کنند که باعث می شود ترافیک در شعبه های مختلف در مناطق جغرافیایی مختلف پخش گردد. همچنین این Name Server ها از لحاظ نظامی، سوانح طبیعی و… به خوبی حفاظت می شوند.

imageمنبع تصویر: Wikipedia

Caching

هم کلاینت و هم سرور نتایج به دست آمده از Query ها را برای بهبود عملکرد و کاهش ترافیک برای مدتی Cache می کنند. این Cache به صورت مستقل و جداگانه در سرور و کلاینت قرار دارد.

Name Resolver Caching

این Cache روی کلاینت صورت می گیرد و در Windows\System32\drivers\etc قابل مشاهده است. برای خالی کردن Cache از دستورات IP Configuration می توان استفاده کرد: ipconfig /flushdns

Name Server Caching

زمانی که یک Name server می خواهد یک query را جواب دهد ، ممکن است query های متعددی بفرستد تا بتواند جواب را پیدا کند.به طوری که هر query به یک name server دیگری را که در قسمتی از Domain namespace توانایی دارد ارجاع می دهد. با ذخیره کردن جواب query ها ، ترافیک در شبکه ها کاهش پیدا می کند و عملکرد بهبود می یابد. برای خالی کردن Cache سرور از دستورات DNS می توان استفاده کرد، dnscmd /clearcache

زمانی که یک name server یک query  دریافت می کند اتفاقات زیر روی می دهند:

۱)    سرور، query را برای مدت زمان خاصی cache می کند که Time To Live یا TTL گفته می شود. به صورت پیش فرض ۶۰ دقیقه
۲)   سپس یک شمارنده معکوس فعال می شود.
۳)   پس از آنکه شمارش به انتها رسید ، query را از cache پاک می کند.

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

Negative Caching

به غیر از query های جواب داده شده ، سرور ها می توانند جواب منفی پیدا نشدن جواب یک query را نیز cache کنند تا به این ترتیب ضمن کم کردن ترافیک جواب query را زودتر client دریافت می کند.Negative Caching در RFC 1034 و ۲۳۰۸ تعریف شده است.

انواع سرور ها

سرور های اصلی

وقتی یک ZONE اصلی به یک سرور اضافه می شود، در واقع آن یک سرور اصلی برای آن ZONE است. سرور اصلی یک مقطه مرکزی برای به روز رسانی اطلاعات آن ZONE است. ZONE هایی که اولین بار ایجاد می شوند نیز همواره از این نوع اند.

۱)    Standard Primary Zones: برای این Zone ها فقط یک Server می تواند نسخه اصلی را داشته باشد و سرور های دیگر نمی توانند تغییراتی روی اطلاعات اعمال کنند. از این رو این Zoneها بسیار آسیب پذیر اند.

۲)    Active Directory Integrated Zone: استفاده از این نوع سبب می شود تا تمام نسخه ها قابل ویرایش باشند. برای استفاده از این نوع لازم است که Zone روی یک DC راه اندازی شود. اطلاعات این Zone ها در Application Directory ذخیره می شود و از مکانیستم Replication در Active Directory بهره خواهند برد.

سرور های ثانویه

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

سرور های Stub

سرور های Stub حاوی Zone های Stub هستند. یعنی حاوی یک نسخه ساده شده از اطلاعات Zone که فقط شامل لیستی از DNS Sever ها معتبر برای  Master Zone خودش است. یک Stub برای پاسخ گویی به Query ها از آن لیست استفاده می کند. بنابراین یک سرور Stub فقط حاوی رکورد های NS از Master خود هستند. مزایای آن بهبود کیفیت تحلیل نام به دلیل آنکه نیاز نیست Recursion از root اتفاق افتد. مدیریت یک سرور stub ساده تر است و رکورد های NS به روز هستند.

سرور های Chaching-Only

این نوع سرور ها هیچ Zoneای را در DB خودنگه داری نمی کنند و فقط اطلاعات آن ها وابسته به Cache های Query های قبلی آن ها است. اطلاعات در طول سرویس دهی و بر اساس سرویس دهی به Queryها کسب می شوند. اگر بین سایت ها یک ارتباط کم سرعت وجود داشته باشد، استفاده از این سرور ایده آل است چرا که با ساختن Cache ترافیک روی لینک با سرعت کم کاهش پیدا می کند. همچنین اگر ترافیک هزینه زیادی داشته باشد، Caching-Only Server می تواند هزینه ها تا حدی کاهش دهد. از طرفی دیگر پاسخ Queryها با استفاده از این سرور سریع تر داده می شود و Performance کلی بهبود می یابد. از آنجایی که Caching-Only Server ترافیک انتقال اطلاعات Zone را ندارند، ترافیک نرمالی دارند و به سخت افزار خاصی نیاز ندارند.

یک دیدگاه در “آشنایی با DNS- قسمت اول

دیدگاه ها بسته شد اند