قبل أن نشرع في شرح مفهوم DNS Forwarding دعونا نفترض أن لدينا مؤسسة تحتوي على عدد كبير من الأجهزة و متصلة بالانترنت حيث يتم استخدامه بشكل كبير لأغراض العمل و تصفح البريد الالكتروني و غير ذلك ، و نظرا لأن عدد الأجهزة كبير لنقل مثلا ألف جهاز قررنا أن نخصص سيرفر DNS لكل 100 زبون و بالتالي يكون لدينا 10 سيرفرات DNS و لتكن مثلا ns1.company.com الى ns10.company.com ، الآن لنفترض أنه كل يوم في الصباح الباكر يقوم جميع المستخدمين بتصفح موقع الجزيرة على الانترنت و لنفترض أن المستخدم أحمد كان أول من دخل موقع الجزيرة هذا اليوم و بالتالي فإن جهازه قام بالاتصال بسيرفر DNS الموجود في إعداداته و ليكن ns1.company.com و الذي بدوره اتصل بالانترنت و عاد بعنوان ip لموقع الجزيرة ، و بعد قليل قام المستخدم خالد بفتح نفس موقع الجزيرة و لكن حيث أن إعدادات جهازه تشير الى سيرفر DNS آخر و ليكن ns2.company.com فإن هذا السيرفر لا يعلم شيئا عن عنوان ip لموقع الجزيرة لأن من قام بالاستعلام قبل قليل هو سيرفر ns1 و بالتالي فإن ns2 عليه هو الآخر الاتصال بالانترنت لإحضار العنوان ، و بالتالي سنجد أن جزءا كبيرا من سعة النطاق سيضيع في تكرار نفس عملية ترجمة المواقع و ذلك يسبب ازدحاما غير مرغوب على استخدام اتصال الانترنت.

إذا ً هل من اقتراح يحل هذا الإشكال؟ حسنا ، نعم ، بإمكاننا عمل ما يلي ، و هو إضافة سيرفر DNS آخر يكون متصلا مباشرة بالانترنت بينما تتصل أجهزة DNS العشرة الأخرى عن طريقه كما في الصورة التالية:



و بالتالي فإنه عند قيام أي جهاز زبون بطلب موقع ما فإن سيرفر DNS المسئول عنه سيتصل بسيرفر DNS الإضافي و الذي يسمى Forwarder و يطلب منه ترجمة العنوان المطلوب من الانترنت ، و بالتالي اذا قام أي جهاز زبون آخر بطلب نفس العنوان فإن سيرفر DNS المسئول عنه سيتصل ب Forwarder ليجد أن العنوان قد سبق ترجمته و بالتالي فإنه مخزن في ذاكرة السيرفر و لن تكون هناك حاجة للذهاب الى الانترنت للاستفسار عنه من جديد مما يوفر الوقت و يقلل من الازدحام على الاتصال بالانترنت.

لكن قد يسأل سائل : ألسنا بهذا الطريقة نضع جميع البيض في سلة واحدة؟ بمعنى أنه ماذا سيحصل اذا تعطل جهاز Forwarder هل معنى ذلك أن ترجمة العناوين ستتوقف؟ لا طبعا و ذلك لأن سيرفرات DNS المتصلة ب Forwarder عندما تقوم بالاستفسار منه عن ترجمة عنوان ما فإنها تنتظر مدة محددة بحيث اذا لم يستجيب Forwarder لأي سبب كان فإن سيرفر DNS يقوم بنفسه بالاتصال بالانترنت و ترجمة العنوان المطلوب و يتجاهل Forwarder.

حسنا لنقوم الآن سويا بتطبيق ذلك على شبكتنا الصغيرة، و لعمل ذلك علينا أن نتذكر أولا أن لدينا في شبكتنا سيرفرين DNS هما server.ouda.edu و عنوانه 192.168.0.10 و ns2.ouda.edu و عنوانه: 192.168.0.3 ، الآن ما سنفعله هو أننا سنخبر السيرفر server.ouda.edu بأن يقوم بتوجيه ترجمة العناوين الى السيرفر ns2 بحيث يكون هو بمثابة forwarder له و لعمل ذلك نتوجه الى نافذة DNS في جهاز server و هناك نضغط باليمين على أيقونة السيرفر و نختار Properties لتظهر صفحة الخصائص و فيها نتوجه الى تبويب Forwarders كما في الصورة التالية:



و فيها تحت DNS Domain اضغط على All other DNS domains ، و في خانة Selected Domain's Forwarder IP Address List أدخل 192.168.0.3 و هو عنوان سيرفر ns2 ثم اضغط على Add ، و في خانة Number of seconds before Forward Queries Time Out ضع 60 ، حيث سينتظر السيرفر بعد أن يقوم بطلب ترجمة العنوان من forwarder مدة 60 ثانية بحيث اذا لم يستجب خلال هذه المدة سيقوم السيرفر بترجمة العنوان من الانترنت بنفسه.أخيرا نضغط على Apply.

الآن نستطيع استخدام أمر nslookup لترجمة أي عنوان حيث سيقوم السيرفر بتحويل الطلب إلى Forwarder ليقوم بترجمته ، و لكن كيف نتأكد من أن Forwarder هو من قام بترجمة العنوان و ليس السيرفر نفسه؟ لنقوم سويا بالحيلة التالية :

أولا: نتوجه الى سيرفر server.ouda.edu و نقوم بسمح ذاكرة العناوين التي سبق له أن ترجمتها و ذلك بتنفيذ الأمر التالي: ipconfig /flushdns ثم توجه الى نافذة DNS و فيها نضغط باليمين على أيقونة السيرفر و نختار Clear Cache.

ثانيا: نتوجه الى نافذة DNS في السيرفر ns2 و نقوم بإنشاء نطاق جديد في forward primary zones و نسميه aljazeera.net ثم نضيف في هذا النطاق سجل A يكون اسمه www و نعطيه عنوان وهمي و ليكن مثلا : 10.10.10.10 .

ثالثا : نقوم بمسح ذاكرة العناوين في سيرفر ns2 كما فعلنا في الخطوة الأولى.

رابعا: نعود الى السيرفر server.ouda.edu و هناك نفتح نافذة الأوامر و ننفذ الأمر nslookup ثم ندخل set timeout=30 ثم نضغط enter ثم ندخل www.aljazeera.net ثم نضغط على enter و سنحصل على العنوان 10.10.10.10 مما يؤكد أن السيرفر قام بالاتصال ب forwarder ليحصل على ترجمة العنوان عن طريقه و لم يقم بترجمته بنفسه ، و كي نتأكد أنه في حال تعطل forwarder يقوم السيرفر بترجمة العنوان بنفسه ، نتوجه الى السيرفر ns2 و نوقف خدمة DNS و ذلك بأن نفتح نافذة DNS و نضغط باليمين على أيقونة السيرفر و نختار All Tasks / Stop ، ثم نعود من جديد الى السيرفر server.ouda.edu و نمسح ذاكرة العناوين من جديد كما فعلنا سابقا ثم نضغط باليمين على أيقونة السيرفر في نافذة DNS و نختار Properties ثم نتوجه الى تبويب Forwarders و نغير فترة الانتظار الى 5 ثواني فقط.و نضغط Apply ، ثم ننفذ أمر nslookup و ندخل set timeout=30 ثم نضغط Enter ثم ندخل www.aljazeera.net و سنحصل هذه المرة على العنوان الحقيقي للموقع لأن Forwarder لم يستجيب و بالتالي قام السيرفر بترجمة العنوان بنفسه.

بهذا ننتهي من درس اليوم و نلتقي مع درس قادم و مزيد من التفاصيل حول هذا الموضوع ان شاء الله و الله الموفق.

الكاتب: وليد عودة