آموزش راه اندازی DNS Policy در ویندوز سرور به همراه سناریو

در این آموزش قصد داریم یک سناریوی DNSی پیاده سازی کنیم. اگر مقاله‌های قبل رو در مورد DNS server 2016 نخوندید پیشنهاد می‌کنم ابتدا یک نگاهی به اینجا بکنید.همانطوری که اشاره شد، در DNS serv2016 ما می تونیم از پالیسی استفاده کنیم(مجزای از Active directory policy) .  به طور خلاصه یعنی می‌تونیم DNS srv رو طوری برنامه ریزی کنیم که به درخواست‌های یکسان جواب‌های متفاوتی بده. برای اینکه سناریو رو بهتر متوجه بشیم ابتدا این مقاله رو حتمن مطالعه کنید.برای دسته بندی درخواست‌های ورودی می‌تونیم از پارامترهای زیر استفاده کنیم:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  1. Client Subnet: سابنت تعریف می‌کنیم، بهشون اسم می‌دیم و بر مبنای اون اسم‌ها به درخواست‌ها جواب می‌دیم.
  2. Transport Protocol: بر مبنای اینکه از پروتوکل TCP و یا UDP استفاده شده به درخواست‌ها جواب می‌دیم.
  3. IP: بر مبنای اینکه از IPv4 یا IPv6 استفاده شده به درخواست‌ها جواب می‌دیم.
  4. Server Interface IP address: بر مبنای IP اون اینترفیس سرورمون که درخواست رو دریافت کرده جواب می‌دیم.
  5. FQDN: بر مبنای اون FQDNی که درخواست resolution براش ارسال شده جواب می‌دیم. می تونیم از wild cad هم استفاده کنیم. مثلا به خواست های ir.itpro.* آی پی x.x.x.x رو برگردون.
  6. Query Type: بر مبنای اینه درخواست چه نوعی از رکوردها است. مثل A record, SRV record و اینها.
  7. Time Of day: بر مینای اینکه چه ساعتی از روز درخواست رسیده پاسخ بدیم.

همچنین می تونیم این پارامترها رو با اعمال منطقی AND/OR ترکیب کنیم. وقتی درخواست ورودی با یکی از موارد بالا تطبیق پیدا کردن عکس العمل های زیر رو میتونیم تنظیم کنیم:

  1. Ignore: سرور یه صورت بی سر و صدا درخواست رو از بین می بره.
  2. Deny: سرور در خواست رو با یک پیغام خطا بر می‌گردونه.
  3. Allow: سرور با توجه با تنظیماتی که براش انجام شده پاسخ رو بر می‌گردونه.

ما در این آموزش می‌خوایم سنارویی رو پیاده کنیم که در اون کلاینت‌ها با توجه به منطقه جغرافیایی خودشون به نزدیکترین datacenter وصل بشوند.

  • نکته: این سناریو با فرض اینکه شما فقط یک Primary DNS srv دارید طراحی شده.

فرض کنید ما یک سرویس دهنده‌ی ابری داریم به اسم Contoso که در دو نقطه‌ی جغرافیایی اروپا و آمریکا datacenter داره. و یک سایت داریم به اسم woodgrove.com که به وسیله‌ی Contoso میزبانی می‌شه. حالا ما می‌خوایم کاربرانی که در اروپا هستند به دیتاسنتر اروپا و کاربرانی که در آمریکا هستند به دیتا سنتر آمریکا وصل بشوند:

وب سایت توسینسو

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

  1. کاربر توی مرورگرش میزنه www.woodgrove.com.
  2. درخواست IP میره برای DNS سروری که توی تنظیمات کارت شبکه‌اش داره. در اینجا LDNS که احتمالا DNS سرور ISP است که در نقش Cach SRV عمل می‌کنه.
  3. LDNS نسبت به سوال authority نداره پس درخواست رو می‌فرسته به DNS سروری که به سوال authority داشته باشه یعنی DNS سرور Contoso .
  4. DNS سرور Contoso چون 2016 است و روش Policy تنظیم شده بر مبنای Cilent Subnet به درخواست پاسخ می‌ده. این policy باید طوری تعریف شده باشه که کاربران توی اروپا به دیتاسنتر اروپا و کاربران توی آمریکا به دیتاسنتر آمریکا وصل بشوند.

در سناریوی بالا درخواست کننده‌ی اصلی اون یوزر است، منتها چون درخواستهای یوزر مستقیم به DNS سرور Contoso نمی‌رسه، و فی‌الواقع این درخواست‌های LDNS است که به Contosoمی‌رسه، Policy ها رو بر مبنای آدرس LDNS می نویسیم.

بریم سراغ کانفیگ و کار عملی. مراحل کار به این صورت هستند:

  1. Client subnetها ایجاد کنیم.
  2. Zone Scopeها رو ایجاد کنیم.
  3. Recordها رو توی zone scope ها وارد کنیم.
  4. پالیسی رو ایجاد کنیم.
  • نکته : طبیعتا ما این Policyها رو باید در Contoso DNS SRV پیاده کنیم برای این کار نیاز به دسترسی مناسب داریم.

بریم و مراحل رو یکی یکی انجام بدیم:

1.Cilent Subnet

اولین مرحله ما باید ترافیک‌های ورودی به DNS SRV رو دسته بندی کنیم تا بر مبنای اون دسته بندی‌ها تصمیم گیری کنیم.

Add-DnsServerClientSubnet -Name "USSubnet" -IPv4Subnet "192.0.0.0/24"
Add-DnsServerClientSubnet -Name "EuropeSubnet" -IPv4Subnet "141.1.0.0/24"  

در اینجا ما دوتا سابنت ساختیم و بهشون اسم دادیم. Ussubnet با آدرس شبکه‌ی 192.0.0.024 و EuropSubnet با آدرس 141.1.0.024

2.Zone Scope ها رو ایجاد کنیم

در مرحله‌ی یک ما ترافیک ورودی رو دسته بندی کردیم، حالا نوبت اونه که ترافیکی که میخوایم به عنوان پاسخ بفرستیم رو هم دسته بندی کنیم. یعنی شما باید به اضای Cilent subnetهایی که ساختی جواب متناسب داشته باشی. یعنی به اضای درخواستی که از Ussubnet میاد باید ترافیکی برای اون درخواست داشته باشی.

Add-DnsServerZoneScope -ZoneName "woodgrove.com" -Name "USZoneScope"
Add-DnsServerZoneScope -ZoneName "woodgrove.com" -Name "EuropeZoneScope"

در اینجا ما توی زون woodgrove.com دوتا zone scope ساختیم یکی به نام USZonescope برای آمریکا و یکی EuropeZonescope برای اروپا.

3.Record رو توی Zone scope وارد می‌کنیم

حالا باید رکورد www رو داخل هر کدوم از scopeهای بالا به صورت مجزا و با IPهای متناسب اون منظقه جغرافیایی بسازیم:

Add-DnsServerResourceRecord -ZoneName "woodgrove.com" -A -Name "www" -IPv4Address "192.0.0.1" -ZoneScope "USZoneScope

Add-DnsServerResourceRecord -ZoneName "woodgrove.com" -A -Name "www" -IPv4Address "141.1.0.1" -ZoneScope "EuropeZoneScope"

یک رکورد www برای آمریکا توی Zone scope آمریکا ساختیم با آی پی دیتاسنتر آمریکا و یک رکورد www هم توی Zone scope اروپا ساختیم با IPآدرس دیتاسنتر اروپا. برای اینکه یوزرهای تمام دنیا علاوه بر اروپا و آمریکا هم بتونند به این سایت دسترسی داشته باشند درون zone اصلی(woodgove.com) هم برای دیتاسترهامون رکورد می سازیم:

Add-DnsServerResourceRecord -ZoneName "woodgrove.com" -A -Name "www" -IPv4Address "192.0.0.1"   

Add-DnsServerResourceRecord -ZoneName "woodgrove.com" -A -Name "www" -IPv4Address "141.1.0.1"

4.پالیسی رو ایجاد بکنیم

Add-DnsServerQueryResolutionPolicy -Name "AmericaPolicy" -Action ALLOW -ClientSubnet "eq, USSubnet " -ZoneScope " USZoneScope,1" -ZoneName "woodgrove.com"  

Add-DnsServerQueryResolutionPolicy -Name "EuropePolicy" -Action ALLOW -ClientSubnet "eq,EuropeSubnet" -ZoneScope "EuropeZoneScope,1" -ZoneName "woodgrove.com"

بیاید یه نگاهی به کامندها بندازیم.

  • DnsServerQueryResolutionPolicy: نوع Policy است.
  • -name: برای پالیسی اسم گذاشتیم.
  • Action: عکس العمل رو مشخص کردیم
  • Cientsubnet: مشخص کردیم که این پالیسی روی کدوم سابنت کار بکنه. توی این سوییچ میتونیم از دستورات EQ برای مساوی با، و NQ برای نامساوی با، استفاده بکینم.
  • ZoneScope: نام zonescopeی که قبلن ساختیم و میخواهیم به عنوان جواب برگردد را وارد میکنیم. عددی که اونجا میذاریم برای مشخص کردن وزن این Zonescope برای مواقعی که چند zonescop داریم است.

توجه کنید که ما میتونیم تعداد زیادی از این پالیسی ها رو بسازیم بدون اینکه نیازی به reboot کردن سرور باشد.

شاد و پیروز باشید.


نظرات