Configure recursion

ماهي عملية الـrecursion في سيرفرات الـDNS؟
هي أن يقوم سيرفر الـDNS المحلي بإرسال اﻷستعلام DNS query إلى سيرفر DNS اخر نيابة عن العميل ليقوم بتزويد العميل بالمعلومات المطلوبة.
عادة جميع سيرفرات الـDNS وكذلك سيرفرات forwarded DNS تقوم بعملية recursion.
بشكل افتراضي ، تؤدي جميع خوادم DNS استعلامات متكررة بالنيابة عن عملاء DNS وخوادم DNS الأخرى التي قامت بإعادة توجيه استعلامات عميل DNS إليهم.
قد يستغل الهكر عملية recursion لتوجيه اﻷستعلامات الى سيرفرات مشبوهة لذلك من الأفضل أن تتعلم كيف تقوم بتعطيل خاصية الـrecursion
علما أن تعطيلها يعطل ايضا الـForwarders

وللحاجة في بعض اﻷوقات لتعطيل هذا النوع من اﻷستعلام سنقوم بتوضيح عملية تعطيل اﻷستعلام disable recursion كمايلي :-

وفي الفيديو التالي توضيح لـdisable recursion

Recursion Scopes

نستطيع نتحكم في recursive query باستخدام DNS Server Policies بحيث أن السيرفر يقوم بعمل recursive query للعملاء الذين من دومين معين فقط
فمثلا نحن لدينا المجال learn.com سيتم عمل recursion فقط لطلبات الجهزة التي من هذا المجال وبهذه الطريقة سيتم منع المجالات اﻷخرى ومن ضمنها الأجهزة التي من الأنترنت وهكذا اغلقنا الطريق على الهكر
وفي هذه الحالة فقط سمحنا للأجهزة الداخلية باستخدام الـDNS serverو هذا مايسمى بـAllow recursion for internal clients

والخطوات كما يلي:-
1- نقوم بتعطيل default recursion scope

Set-DnsServerRecursionScope -Name . -EnableRecursion $False

2- إنشاء recursion scope جديد ولنفرض أسمه MyScope1

Add-DnsServerRecursionScope -Name “MyScope1” -EnableRecursion $True

3- إنشاء policy جديدة بحيث أن سيرفر الـDNS يتعامل فقط مع الطلبات التي موجهة للعنوان المذكور وفي مثالنا 192.168.100.100

Add-DnsServerQueryResolutionPolicy -Name “MyPolicy1” -Action ALLOW
-ApplyOnRecursion -RecursionScope “MyScope1” -ServerInterfaceIP
“EQ,192.168.100.100”

سيتم في الفيديو التالي تعطيل عملية الـRecursion اﻷفتراضية وإنشاء مجال لـRecursion جديدة يتم ربطها بالمجال الداخلي فقط وذلك باستخدام الأوامر التالية :-

Set-DnsServerRecursionScope -Name . -EnableRecursion $False

Add-DnsServerRecursionScope -Name "InternalLearnClients" -EnableRecursion $True

Add-DnsServerQueryResolutionPolicy -Name "RecursionControlPolicy" -Action ALLOW `
-ApplyOnRecursion -RecursionScope "InternalLearnClients" `
-ServerInterfaceIP "EQ,192.168.100.100"