في هذا الدرس سأقوم بمحاولة لشرح موضوع اعداد خادم الDNS ، وللأسف لقد رأينا العديد من الأسئلة و الطلبات لشرح هذا الموضوع و لم يقم أحد بعمله ، ربما لطول الموضوع و تشعبه والاعدادات المتقدمة التي ربما ستظهر اثناء الشرح، لذلك سأقوم بمحاولة لعمل موضوع كافي قدر الامكان للاعدادات الأساسية واذا أردت عزيزي القارئ المزيد من الاعدادات المتقدمة عليك بالبحث و القراءة من مقالات أخرى
طبعا كالعادة سأقوم بالشرح نسبة الى توزيعة ريدهات انتربرايز، وأي توزيعة أخرى انا غير ملزم بالشرح عليها
- مقدمة :
كما هو الحال للتحدث مع شخص آخر عبر الهاتف فأنه يلزمك معرفة رقم الشخص الذي تريد الاتصال به، وبالنسبة لأجهزة الكمبيوتر فأنه يلزمك بروتوكول معين و رقم الآي بي للجهاز الذي تريد الاتصال به. ولكن الناس بطبيعتهم يفضلون التعامل مع الأسماء عوضا عن الأرقام وعناوين الآي بي.
خدمة ال Domain Name Service أو DNS كاختصار هي المسئولة عن تحويل اي اسم لهوست مثل linuxac.org الى آي بي . الفكرة العامة أن كل DNS server متصل بخادم آخر اعلى منه في المستوى حيث يقوم بتمرير الطلب اليه والخادم الآخر قد يحتاج الى تمرير الطلب الى خادم اعلى منه وهكذا... طبعا هناك 13 خادم رئيسي لخدمة الDNS منتشرة حول العالم وهي في المستوى الأعلى لجميع الخوادم في العالم. وهي تحوي قاعدة بيانات لكل الخوادم التي تقل مرتبة عنها في المستوى وكل خادم يقوم بتمرير الطلب لخادم آخر ليتم العمل اللازم.
- البدء بالاعدادات :
خدمة الDNS تقدم عن طريقة ال BIND وهي اختصار ل Berkley Internet Name Daemon ، ويلزمك تنزيل ال bind package للبدء بالاعدادات و لكن اسم الخدمة سيكون named حسب ما سنرى اثناء الشرح.
يلزمك تنزيل مجموعة من الباكيجات عادة تكون هي التالية:
bind, caching-nameserver, bind-utils
لتنزيل الrpm الخاص بالbind من السي دي الخاص بالتوزيعة:
- ملف الاعدادات الرئيسية named.conf :
ان ملف الاعدادات الرئيسية لخادم الDNS هو /etc/named.conf وهذه مقتطفات من محتواه:
لعلكم لاحظتم ان ال comment في ملف الnamed.conf على شكل التعليقات في لغة C++ وبالاضافة لل # التي نستخدمها في ملفات اللينكسو اليونكس. التعليقات قد تكون على شكل : // أو /* .... */ وتقوم بوضع تعليقك بين العلامتين بدلا عن النقاط.
ملاحظة مهمة: يجب الانتباه للمسافات و علامات ; في جميع ملفات الDNS ، حيث ان المسافة البيضاء و علامة; يجب ان تكون مضبوطة بشكل صحيح.
المنطقة المسماة options تقوم بتحديد بعض الخيارات العامة للDNS ، مثلا الجزء directory يقوم بتحديد المجلد الذي سيحتوي ملفات الzones التي تعتبر بمثابة قاعدة بيانات لأسماء الأجهزة او المواقع و ارقام الآي بي الخاصة بها والتي سنقوم بشرحها لاحقا طبعا.
الجزء zone "." IN يحدد ملف اسمه named.ca وهو الملف المسئول عن تحديد عناوين الخوادم الثلاثة عشر الرئيسية في العالم والتي تعتبر المرجع الرئيسي لأي موقع او عنوان على الانترنت. نظرة سريعة على بعض محتويات الملف named.ca :
طبعا حتى يعمل اي خادم دي ان اس بفعالية يجب ان يعرف كيف يستطيع الوصول لاعلى مستوى لخادم DNS وهو ما يسمى root level name server ويرمز له بـ " . "
طبعا جميع المواقع في العالم تبدأ من ال RLNS مثلا :
لاحظ ان كل موقع يجب ان يبدأ من ال . ، لذلك يتم حذفها للتسهيل فقط ليس إلا، اي ان الفكرة اصبحت كالتالي: الخادم " . " قام بتمرير الطلب للخادم "com" وهو بدوره مرر الطلب الى خادم "redhat" وهكذا .
-اعداد الخدمة للعمل بعد التشغيل:
بعد ان قمنا بتنزيل الrpm اللازمة علينا ان نقوم بتفعيل الخدمة كالتالي:
- خادم الDNS ليس لديه وصول للانترنت ؟
في حالة عدم اتصال خادمك المحلي بالانترنت مباشرة ، أو انه خلف جدار ناري مثلا يقوم بمنع الDNS queries يمكنك تمرير الطلب الى خادم DNS آخر محلي لديه امكانية الوصول للانترنت ، وذلك باضافة forwarders الى جزء الخيارات options في ملف الاعدادات الرئيسية named.conf على النحو التالي:
خادم الDNS برقم 192.168.99.100 لديه امكانية الوصول للانترنت وهو سيقوم بتمرير الطلب للخارج.
ملاحظة : يمكنك اضافة خادم بديل وذلك باضافة رقم الآي بي بجانبه ، مثال:
- التحقق من عمل الخادم :
يمكنك بسرعة ان تتحقق من فعالية الاعداد لسيرفرك بأنه يقوم بتمرير الطلب للخادم الذي حددناه بالforwarders بالشكل التالي:
اذا عمل كل شيء على ما يرام بامكانك وضع رقم الآي بي الخاص بجهازك أو عنوان الloopback في ملف الresolv.conf .
- كيف أقوم بعمل domain خاص بي داخل الشبكة المحلية؟
هناك نوعين من الخوادم التي يمكن عملها، الأول يسمى رئيسي master وهو السيرفر الذي يحتوي ملفات الzones وقاعدة البيانات التي تحتوي جميع اسماء و عناوين الآي بي للشبكة الخاصة بك. النوع الثاني هو بديل slave ووظيفته فقط كبديل للسيرفر الرئيسي بحالة عدم توفر الخدمة، وهو فقط يسحب قاعدة البيانات من السيرفر الmaster فقط .
- كيف اعمل خادم DNS رئيسي ؟
الخطوة الأولى تكون بتعريف منطقة خاصة بنا داخل ملف الnamed.conf ، في مثالنا سنقوم بعمل دوماين اسمه example.com بحيث تكون كل الأجهزة على شبكتنا المحلية على شكل :station1.example.com ، station5.example.com ، mail.example.com ... وهكذا
سنقوم باضافة التالي لملف الnamed.conf :
حددنا اسم الدوماين او الزوون و نوع الخادم "master" و اسم الملف الذي سيحتوي عناوين باقس الاجهزة التي تنتمي لهذا المجال وهو طبعا الملف example.com.zone والذي سنضعه في المجلد /var/named .
-كيف اعمل ملف الzone اللازم ؟
قم بعمل ملف اسمه example.com.zone داخل المجلد /var/named ، سنكتب فيه الأسطر التالية و سأقوم بشرح بعض الأمور عنها :
هذه الأسطر تقوم بتعريف اسم الخادم الرئيسي وهو ns.example.com وعنوان الايميل لمدير الخادم.
الاسطر التالية لتحديد بعض الخيارات العامة ولا اعتقد انه يلزمك تغيير اي منها إلا ال serial number ، حيث ان خادم البديل slave يستخدمه للتأكد من الرئيسي. يمكنك وضع تاريخ اليوم ورقم من منزلتين بعده مثلا :2007040720 كرقم جديد.
الآن سنقوم باضافة سطر لتحديد اسم الزوون واسماء خوادم الDNS التي ستسخدمها باقي الأجهزة:
لاحظ ان السطر الأول بدأ ب ; لذلك سيعتبر comment .
هنا قمنا بتحديد اسم للخادم الرئيسي وهو ns.example.com. والخادم البديل ns2.example.com. ، طبعا يمكنك وضع فقط اسم للخادم الرئيسي. ولاحظ استخدامنا للحرفين NS للدلالة على نوع السجل الذي اضفناه record .
سنقوم الآن بتحديد عناوين واسماء الأجهزة على الشبكة المحلية لدينا باضافة السطور التالية:
كما هو واضح من المثال في الأعلى حددنا اسماء لبعض الأجهزة و عناوين الآي بي الخاصة بها ، لاحظ اننا استخدمنا الحرف A في حقل الCL للدلالة على Address او عنوان للآي بي.
يمكننا استخدام اسم واحد لعدة عناوين آي بي لنفس الجهاز بالشكل التالي:
وسنتطرق الآن لكيفية عمل الاسماء المستعارة aliases ، حتى يكون لنفس الجهاز أكثر من اسم بنفس آلية أكثر من آي بي ، سنضيف التالي للملف :
هنا اصبح لنفس الجهاز أكثر من اسم ايضا . لاحظ استخدامنا للحقل CNAME للدلالة على Canonical Names اي الاسماء المستعارة.
اخيرا سنضيف حقل خاص للبريد الالكتروني الداخلي ، حيث ان التعامل مع الايميل له آلية خاصة به في الDNS ، الطريقة هي باضافة السطر التالي كمثال لعنوان خادم البريد المحلي :
في المثال السابق أي ايميل مرسل مثلا للمستخدم [email protected] سيتم تحويله لخادم البريد server1.example.com ليقوم بعمل اللازم. واذا كان خادم البريد مشغولا مثلا سيتم تخزين الbackup في الجهاز station1 . طبعا لاحظ استخدام الMX للدلالة على Mail Exchange ، والارقام 10 ، 20 لتحديد الأولويات للخادم الذي سيستقبل البريد لمنعه من الدوران على الشبكة mail loop .
هكذا نكون انهينا اعداد ملف الزوون example.com.zone ويلزمنا اعادة تشغيل الخدمة :
هذه لمحة لملف الزوون الذي قمنا باعداده :
لا تنسى وضع النقطة بنهاية اسم اي جهاز او هوست كما هو واضح في الأعلى.
سأقوم قريبا بإضافة موضوع يتعلق بالزوون الثانية اللازمة وهي الخاصة بال Reverse DNS Lookups

طبعا كالعادة سأقوم بالشرح نسبة الى توزيعة ريدهات انتربرايز، وأي توزيعة أخرى انا غير ملزم بالشرح عليها

- مقدمة :
كما هو الحال للتحدث مع شخص آخر عبر الهاتف فأنه يلزمك معرفة رقم الشخص الذي تريد الاتصال به، وبالنسبة لأجهزة الكمبيوتر فأنه يلزمك بروتوكول معين و رقم الآي بي للجهاز الذي تريد الاتصال به. ولكن الناس بطبيعتهم يفضلون التعامل مع الأسماء عوضا عن الأرقام وعناوين الآي بي.
خدمة ال Domain Name Service أو DNS كاختصار هي المسئولة عن تحويل اي اسم لهوست مثل linuxac.org الى آي بي . الفكرة العامة أن كل DNS server متصل بخادم آخر اعلى منه في المستوى حيث يقوم بتمرير الطلب اليه والخادم الآخر قد يحتاج الى تمرير الطلب الى خادم اعلى منه وهكذا... طبعا هناك 13 خادم رئيسي لخدمة الDNS منتشرة حول العالم وهي في المستوى الأعلى لجميع الخوادم في العالم. وهي تحوي قاعدة بيانات لكل الخوادم التي تقل مرتبة عنها في المستوى وكل خادم يقوم بتمرير الطلب لخادم آخر ليتم العمل اللازم.
- البدء بالاعدادات :
خدمة الDNS تقدم عن طريقة ال BIND وهي اختصار ل Berkley Internet Name Daemon ، ويلزمك تنزيل ال bind package للبدء بالاعدادات و لكن اسم الخدمة سيكون named حسب ما سنرى اثناء الشرح.
يلزمك تنزيل مجموعة من الباكيجات عادة تكون هي التالية:
bind, caching-nameserver, bind-utils
لتنزيل الrpm الخاص بالbind من السي دي الخاص بالتوزيعة:
كود:
[[email protected] ~]# rpm -ihv PATH_to_CD/RedHat/RPMS/bind-9.2.4-2.i386.rpm Preparing... ########################################### [100%] 1:bind ########################################### [100%] [[email protected] ~]# rpm -ihv PATH_to_CD/RedHat/RPMS/caching-nameserver-7.3-3.noarch.rpm Preparing... ########################################### [100%] 1:caching-nameserver ########################################### [100%] warning: /etc/named.conf saved as /etc/named.conf.rpmorig
ان ملف الاعدادات الرئيسية لخادم الDNS هو /etc/named.conf وهذه مقتطفات من محتواه:
كود:
// // named.conf for Red Hat caching-nameserver // options { directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; ... }; ... zone "." IN { type hint; file "named.ca"; }; ...
ملاحظة مهمة: يجب الانتباه للمسافات و علامات ; في جميع ملفات الDNS ، حيث ان المسافة البيضاء و علامة; يجب ان تكون مضبوطة بشكل صحيح.
المنطقة المسماة options تقوم بتحديد بعض الخيارات العامة للDNS ، مثلا الجزء directory يقوم بتحديد المجلد الذي سيحتوي ملفات الzones التي تعتبر بمثابة قاعدة بيانات لأسماء الأجهزة او المواقع و ارقام الآي بي الخاصة بها والتي سنقوم بشرحها لاحقا طبعا.
الجزء zone "." IN يحدد ملف اسمه named.ca وهو الملف المسئول عن تحديد عناوين الخوادم الثلاثة عشر الرئيسية في العالم والتي تعتبر المرجع الرئيسي لأي موقع او عنوان على الانترنت. نظرة سريعة على بعض محتويات الملف named.ca :
كود:
; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ... ; ; operated by ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 ; ; operated by WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
طبعا جميع المواقع في العالم تبدأ من ال RLNS مثلا :
كود:
www.rhn.redhat.com.
-اعداد الخدمة للعمل بعد التشغيل:
بعد ان قمنا بتنزيل الrpm اللازمة علينا ان نقوم بتفعيل الخدمة كالتالي:
كود:
[[email protected] ~]# service named start Starting named: [ OK ] [[email protected] ~]# chkconfig named on
في حالة عدم اتصال خادمك المحلي بالانترنت مباشرة ، أو انه خلف جدار ناري مثلا يقوم بمنع الDNS queries يمكنك تمرير الطلب الى خادم DNS آخر محلي لديه امكانية الوصول للانترنت ، وذلك باضافة forwarders الى جزء الخيارات options في ملف الاعدادات الرئيسية named.conf على النحو التالي:
كود:
options { directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; forwarders { 192.168.99.100; }; };
ملاحظة : يمكنك اضافة خادم بديل وذلك باضافة رقم الآي بي بجانبه ، مثال:
كود:
forwarders { 192.168.99.100; 192.168.101.100;};
يمكنك بسرعة ان تتحقق من فعالية الاعداد لسيرفرك بأنه يقوم بتمرير الطلب للخادم الذي حددناه بالforwarders بالشكل التالي:
كود:
[[email protected] ~]# host www.redhat.com 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: www.redhat.com has address 209.132.177.50
- كيف أقوم بعمل domain خاص بي داخل الشبكة المحلية؟
هناك نوعين من الخوادم التي يمكن عملها، الأول يسمى رئيسي master وهو السيرفر الذي يحتوي ملفات الzones وقاعدة البيانات التي تحتوي جميع اسماء و عناوين الآي بي للشبكة الخاصة بك. النوع الثاني هو بديل slave ووظيفته فقط كبديل للسيرفر الرئيسي بحالة عدم توفر الخدمة، وهو فقط يسحب قاعدة البيانات من السيرفر الmaster فقط .
- كيف اعمل خادم DNS رئيسي ؟
الخطوة الأولى تكون بتعريف منطقة خاصة بنا داخل ملف الnamed.conf ، في مثالنا سنقوم بعمل دوماين اسمه example.com بحيث تكون كل الأجهزة على شبكتنا المحلية على شكل :station1.example.com ، station5.example.com ، mail.example.com ... وهكذا
سنقوم باضافة التالي لملف الnamed.conf :
كود:
zone "example.com" { type master; file "example.com.zone"; };
-كيف اعمل ملف الzone اللازم ؟
قم بعمل ملف اسمه example.com.zone داخل المجلد /var/named ، سنكتب فيه الأسطر التالية و سأقوم بشرح بعض الأمور عنها :
كود:
$TTL 86400 @ IN SOA ns.example.com. root.server1.example.com. ( 2007040100 ; serial number 1H ; refresh slave 5M ; retry query 1W ; expire 1M ; negative TTL )
الاسطر التالية لتحديد بعض الخيارات العامة ولا اعتقد انه يلزمك تغيير اي منها إلا ال serial number ، حيث ان خادم البديل slave يستخدمه للتأكد من الرئيسي. يمكنك وضع تاريخ اليوم ورقم من منزلتين بعده مثلا :2007040720 كرقم جديد.
الآن سنقوم باضافة سطر لتحديد اسم الزوون واسماء خوادم الDNS التي ستسخدمها باقي الأجهزة:
كود:
; owner TTL CL type RDATA example.com. IN NS ns.example.com. IN NS ns2.example.com.
هنا قمنا بتحديد اسم للخادم الرئيسي وهو ns.example.com. والخادم البديل ns2.example.com. ، طبعا يمكنك وضع فقط اسم للخادم الرئيسي. ولاحظ استخدامنا للحرفين NS للدلالة على نوع السجل الذي اضفناه record .
سنقوم الآن بتحديد عناوين واسماء الأجهزة على الشبكة المحلية لدينا باضافة السطور التالية:
كود:
; owner TTL CL type RDATA station1.example.com. A 192.168.0.1 station2 A 192.168.0.2 station3 A 192.168.0.3 server1 A 192.168.0.254 ns A 192.168.0.254 ns2 A 192.168.0.253
يمكننا استخدام اسم واحد لعدة عناوين آي بي لنفس الجهاز بالشكل التالي:
كود:
; owner TTL CL type RDATA www.example.com. A 192.168.0.1 A 192.168.0.2 A 192.168.0.3
كود:
; owner TTL CL type RDATA mail.example.com. 3600 IN CNAME server1.example.com. kerberos.example.com. 3600 IN CNAME server1.example.com. ldap CNAME ldap.isp.net.
اخيرا سنضيف حقل خاص للبريد الالكتروني الداخلي ، حيث ان التعامل مع الايميل له آلية خاصة به في الDNS ، الطريقة هي باضافة السطر التالي كمثال لعنوان خادم البريد المحلي :
كود:
; owner TTL CL type RDATA example.com. IN MX 10 server1.example.com. IN MX 20 station1.example.com.
هكذا نكون انهينا اعداد ملف الزوون example.com.zone ويلزمنا اعادة تشغيل الخدمة :
كود:
service named restart
كود:
$TTL 86400 @ IN SOA ns.example.com. root.server1.example.com. ( 2003040100 ; serial number 1H ; refresh slave 5M ; retry query 1W ; expire 1M ; negative TTL ) example.com. IN NS ns.example.com. example.com IN NS ns2.example.com. station1 A 192.168.0.1 station2 A 192.168.0.2 station3 A 192.168.0.3 server1 A 192.168.0.254 ns A 192.168.0.254 ns2 A 192.168.0.253 example.com. A 192.168.0.254 IN MX 10 server1.example.com. IN MX 20 station1.example.com. mail.example.com. 3600 IN CNAME server1.example.com. kerberos.example.com. 3600 IN CNAME server1.example.com. ldap CNAME ldap.isp.net.
سأقوم قريبا بإضافة موضوع يتعلق بالزوون الثانية اللازمة وهي الخاصة بال Reverse DNS Lookups
تعليق