إعداد خادم أسماء نطاقات (DNS) محلي بدون تعقيد

مسلم عادل | 3 يونيو 2009

في هذا الموضوع سأقوم بشرح كيفية إعداد خادم DNS بإستخدام Bind9 على CentOS 5.3
لن أخوض في تفاصيل كيفية تركيب CentOS 5.3 كما أني لن أخوض في شرح الـ DNS أيضا (أقوم حاليا بتحضير شرح من أ الى ي خاص بالـ DNS)

كل ما سأقوم بشرحه هنا هو كيفية عمل الإعدادات الأساسية التي تحتاجها لعمل الـ DNS ومن ثم تنفيذ سكريبت خاص قمت بعمله لهذه المهمة.

ملاحظة: لا تقم بإستخدام هذا السكريبت على جهاز عليه خادم DNS لأنه سيقوم بحذف كافة الملفات والإعدادات وعمل كل شيء من الصفر.

الى العمل:

بعد تركيب CentOS يجب علينا القيام بالإعدادات الأساسية الخاصة بالشبكة حتى تعمل خدمة الـ DNS بشكل صحيح، لهذا السبب فإنني سأفترض المعلومات التالية:

IP address: 172.16.1.1
Netmask address: 255.255.0.0
Gateway address: 172.16.1.254
Hostname: nameserver.iac.lan

ولضمان أن كل شيء سيعمل على أكمل وجه سأقوم بإيقاف كل من الجدار الناري و SELinux (سأقوم بشرحهم في وقت آخر)

 

أولا: إيقاف الجدار الناري و SELinux

[root@localhost ~]# service iptables stop
[root@localhost ~]# chkconfig iptables off
[root@localhost ~]# nano /etc/sysconfig/selinux

الان غير محتوى الملف من:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted – Only targeted network daemons are protected.
# strict – Full SELinux protection.
SELINUXTYPE=targeted

الى:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted – Only targeted network daemons are protected.
# strict – Full SELinux protection.
SELINUXTYPE=targeted

 

ثانيا: إعداد عنوان الآي بي (IP)

[root@localhost ~]# cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
> DEVICE=eth0
> BOOTPROTO=static
> ONBOOT=yes
> TYPE=Ethernet
> IPADDR=172.16.1.1
> NETMASK=255.255.0.0
> GATEWAY=172.16.1.254
> EOF

 

ثالثا: إعداد إسم الجهاز (Hostname)

[root@localhost ~]# cat << EOF > /etc/sysconfig/network
> NETWORKING=yes
> NETWORKING_IPV6=no
> HOSTNAME=nameserver.iac.lan
> EOF
[root@localhost ~]# cat << EOF > /etc/hosts
> 127.0.0.1 localhost.localdomain localhost
> 172.16.1.1 nameserver.iac.lan nameserver
> EOF

أعد تشغيل الجهاز.
بعد إعادة التشغيل تأكد من التالي:
1- عنوان الجهاز (IP) هو الذي الذي قمنا باختياره، تستطيع معرفته باستخدام الأمر ifconfig

[root@nameserver ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:7B:CF:02
inet addr:172.16.1.1 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fe7b:cf02/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:78 errors:0 dropped:0 overruns:0 frame:0
TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11534 (11.2 KiB) TX bytes:8914 (8.7 KiB)
Interrupt:67 Base address:0x2000

2- البوابة الافتراضية هي التي قمنا باختيارها، تستطيع معرفتها باسخدام الامر route

[root@nameserver ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 172.16.0.254 0.0.0.0 UG 0 0 0 eth0

4- إسم الجهاز صحيح، وتستطيع أن تتأكد من هذا باستخدام الامر: hostname والأمر uname -n (يجب أن يكون مخرجات الامرين متساويين)

[root@nameserver ~]# hostname
nameserver.iac.lan
[root@nameserver ~]# uname -n
nameserver.iac.lan

5- تستطيع ان تعمل ping على اسم الجهاز، ويرد عليك على العنوان (IP) الصحيح

[root@nameserver ~]# ping -c4 nameserver.iac.lan
PING nameserver.iac.lan (172.16.1.1) 56(84) bytes of data.
64 bytes from nameserver.iac.lan (172.16.1.1): icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from nameserver.iac.lan (172.16.1.1): icmp_seq=2 ttl=64 time=0.956 ms
64 bytes from nameserver.iac.lan (172.16.1.1): icmp_seq=3 ttl=64 time=0.181 ms
64 bytes from nameserver.iac.lan (172.16.1.1): icmp_seq=4 ttl=64 time=0.041 ms

 

رابعا: إستخدام سكريبت إعداد أسماء النطاقات

بعد التاكد من كل هذه الأشياء قم بتحميل الإسكريت الذي قمت بعمله لإنهاء الباقي:

[root@nameserver ~]# wget http://www.linuxdocs-ar.com/scripts/configure-bind.sh
[root@nameserver ~]# chmod +x configure-bind.sh
[root@nameserver ~]# ./configure-bind.sh
Removing any current installation of bind and bind-chroot
Loaded plugins: fastestmirror
Setting up Remove Process
No Match for argument: bind
No Match for argument: bind-chroot
No Packages marked for removal

This script will start configuring your system now.
Press ctrl-c now to stop and exit
Do not stop this script while it's running, otherwise, it will corrupt your system!!
Press enter to continue...

ستلاحظ أن السكريبت أول ما يحاول تنفيذه هو إزالة أي حزمة متعلقة بـ bind قد تكون مثبتة في الجهاز، كما أنه في نفس الوقت يقوم بحذف كافة ملفات الاعداد التي قد تكون موجودة، لذا احذر عند استخدامه على جهاز عليه خادم DNS

بعد إزالة كافة الحزم اضغط انتر للمتابعة


Step 1: Installing BIND 9 (chrooted)
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centose-msync-dvd.centos.org
* updates: centose.centos.org
* addons: centosq2-msync-dvd.centos.org
* extras: centosm3.centos.org
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
Running transaction check
Package bind-chroot.i386 30:9.3.4-10.P1.el5 set to be updated
Processing Dependency: bind = 30:9.3.4-10.P1.el5 for package: bind-chroot
Running transaction check
Package bind.i386 30:9.3.4-10.P1.el5 set to be updated
Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================
Package Arch Version Repository Size
==================================================================================================================
Installing:
bind-chroot i386 30:9.3.4-10.P1.el5 base 42 k
Installing for dependencies:
bind i386 30:9.3.4-10.P1.el5 base 953 k
Transaction Summary
==================================================================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total size: 995 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : bind [1/2]
Installing : bind-chroot [2/2]
Installed: bind-chroot.i386 30:9.3.4-10.P1.el5
Dependency Installed: bind.i386 30:9.3.4-10.P1.el5
Complete!
Installation of BIND 9 (chrooted) completed!
Press enter to continue...

تم إنهاء تركيب الحزم الان اضغط انتر للمتابعة:


Step 2: Fixing permissions, ownerships, etc...
Fixing permissions, ownerships, etc... completed!
Press enter to continue...

اضغط انتر للمتابع:


Step 3: Create a master forward zone
Please enter the zone name (ex: iac.lan): myhome.lan
Stopping named: [ OK ]
Starting named: [ OK ]

في هذه الخطوة طلب منك ادخال اسم النطاق الذي تريده، وقد قمت باختيار الاسم myhome.lan
ستلاحظ ان السكريبت قام باعادة تشغيل خدمة bind وانتهى.

الان للتأكد أن كل شيء يعمل كما يجب، قم بتنفيذ الأمر التالي:

[root@nameserver ~]# dig myhome.lan
; <<>> DiG 9.3.4-P1 <<>> myhome.lan
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9873
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;myhome.lan. IN A
;; ANSWER SECTION:
myhome.lan. 86400 IN A 172.16.1.1
;; AUTHORITY SECTION:
myhome.lan. 86400 IN NS nameserver.iac.lan.
;; Query time: 3 msec
;; SERVER: 172.16.1.1#53(172.16.1.1)
;; WHEN: Wed Jun 3 22:47:07 2009
;; MSG SIZE rcvd: 73

لاحظ الكلمة المظللة NOERROR هذا دليل أنه تم انشاء النطاق بصورة صحيحة، يمكنك أن تتأكد منه أيضا بعمل ping عليه:

[root@nameserver ~]# ping -c4 myhome.lan
PING myhome.lan (172.16.1.1) 56(84) bytes of data.
64 bytes from nameserver.iac.lan (172.16.1.1): icmp_seq=1 ttl=64 time=0.801 ms
64 bytes from nameserver.iac.lan (172.16.1.1): icmp_seq=2 ttl=64 time=0.042 ms
64 bytes from nameserver.iac.lan (172.16.1.1): icmp_seq=3 ttl=64 time=0.046 ms
64 bytes from nameserver.iac.lan (172.16.1.1): icmp_seq=4 ttl=64 time=0.046 ms
[root@nameserver ~]# dig nameserver.myhome.lan
; <<>> DiG 9.3.4-P1 <<>> nameserver.myhome.lan
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8793
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;nameserver.myhome.lan. IN A
;; ANSWER SECTION:
nameserver.myhome.lan. 86400 IN A 172.16.1.1
;; AUTHORITY SECTION:
myhome.lan. 86400 IN NS nameserver.iac.lan.
;; Query time: 4 msec
;; SERVER: 172.16.1.1#53(172.16.1.1)
;; WHEN: Wed Jun 3 23:03:42 2009
;; MSG SIZE rcvd: 84

الان في حال أحببت إضافة المزيد من الأسماء الى اسم النطاق الخاص بك، فقط قم بتحرير الملف:

/var/named/chroot/var/named/forward-zones/myhome.lan.conf

وإعادة تحميل named بإستخدام الأمر:

[root@nameserver ~]# service named reload
عدد المشاهدات »
815

الأقسام
dns, خوادم الويب
الأوسمة
, , , , ,
تابع التعليقات
تابع التعليقات
Trackback
Trackback

يوجد تعليق واحد

Cialis يعلق:
10 مارس 2010

IvTqeD Excellent article, I will take note. Many thanks for the story!

أكتب تعليق

الأوسمة التالية مسموحة:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>