البدء مع خادم DNS BIND

خادم أسماء النطاقات (DNS) هو مكون حيوي من بنية الإنترنت، وبناء خادم DNS الخاص يمكن أن يكون تحديًا. حسنًا، ليس مع BIND، حيث يمكنك إنشاء خادم DNS BIND الخاص بك في وقت قصير. يتمتع BIND بسمعة ممتازة بين المسؤولين لمرونته ودعم توافره العالي.

في هذه المقالة، ستتعلم كيفية تثبيت وتكوين خادم DNS BIND الآمن والتحقق من أن النطاقات الفرعية تُحل إلى العنوان IP الصحيح.

استمر في القراءة وأنشئ خادم DNS الخاص بك بسهولة تامة!

المتطلبات المسبقة

سيكون هذا البرنامج التعليمي عبارة عن دورة تدريبية عملية. لمتابعة الخطوات، تأكد من أن لديك ما يلي.

  • A Linux server – This example uses the Ubuntu 20.04 server.
  • A non-root user with root privileges or root/administrator user.
  • A domain name pointed to the server IP address – This demo uses the atadomain.io domain and server IP address 172.16.1.10.

تثبيت حزم BIND

يوفر مستودع Ubuntu الافتراضي حزم BIND ولكنها لا تأتي مثبتة مع النظام الخاص بك. يمكنك تثبيت BIND كخادم DNS الرئيسي أو كـ “مخول فقط”. يوفر لك BIND ميزات قوية، مثل دعم التثبيت الرئيسي-العبد، ودعم DNSSEC، وقوائم التحكم في الوصول المدمجة (ACL).

للبدء في استخدام DNS BIND، ستحتاج أولاً إلى تثبيت حزم BIND على جهازك باستخدام مدير الحزم apt.

1. افتح الطرفية الخاصة بك وقم بتسجيل الدخول إلى خادمك.

2. فيما يلي، قم بتشغيل الأمر apt update أدناه لتحديث وتحديث فهرس حزم المستودع. يضمن هذا الأمر أنك تقوم بتثبيت أحدث إصدارات الحزم.

sudo apt update
Refreshing Package Index

3. بمجرد التحديث، قم بتشغيل الأمر apt install أدناه لتثبيت حزم BIND على خادم Ubuntu.

توفير حزم bind9-utils و bind9-dnsutils أدوات سطر الأوامر الإضافية لـ BIND. تعتبر هذه الحزم مفيدة لاختبار وإدارة خادم BIND DNS.

sudo apt install bind9 bind9-utils bind9-dnsutils -y
Installing BIND Packages

4. في الختام، قم بتشغيل الأمر systemctl أدناه للتحقق من خدمة BIND.

يأتي حزمة BIND مع خدمة named وتبدأ تلقائيًا وتتيح التمكين أثناء تثبيت حزمة BIND.

# تحقق مما إذا كانت خدمة named ممكّنة
sudo systemctl is-enabled named

# تحقق من حالة خدمة named
sudo systemctl status named

الآن يجب أن ترى خدمة BIND named ممكّنة بالحالة نشطة (تعمل). في هذه النقطة، ستعمل خدمة BIND تلقائيًا عند بدء تشغيل النظام.

Checking BIND named service

تكوين خادم DNS BIND

لقد قمت الآن بتثبيت حزم BIND على خادم Ubuntu، لذا حان الوقت لإعداد تثبيت BIND على خادم Ubuntu الخاص بك. كيف؟ عن طريق تحرير تكوينات BIND وخدمة named.

جميع التكوينات لـ BIND متاحة في الدليل /etc/bind/، والتكوينات لخدمة named في /etc/default/named.

1. قم بتحرير تكوين /etc/default/named باستخدام محررك المفضل وأضف الخيار -4 على السطر OPTIONS كما هو موضح أدناه. سيؤدي هذا الخيار إلى تشغيل خدمة named على IPv4 فقط.

OPTIONS="-4 -u bind"

احفظ التغييرات التي قمت بها وأغلق الملف.

Configuring BIND to Run on IPv4 Only

2. بعد ذلك، قم بتحرير ملف /etc/bind/named.conf.options واملأ التكوين التالي أسفل سطر directory "/var/cache/bind";.

يعين هذا التكوين خدمة BIND للتشغيل على منفذ UDP الافتراضي 53 على localhost للخادم وعنوان IP العام (172.16.1.10). في الوقت نفسه، يسمح بالاستعلامات من أي مضيف إلى خادم DNS BIND باستخدام Cloudflare DNS 1.1.1.1 كجهة إعادة توجيه.

    // listen port and address
    listen-on port 53 { localhost; 172.16.1.10; };

    // for public DNS server - allow from any
    allow-query { any; };

    // define the forwarder for DNS queries
    forwarders { 1.1.1.1; };

    // enable recursion that provides recursive query
    recursion yes;

في الأسفل، قم بتعليق سطر listen-on-v6 { any; }; كما هو موضح أدناه لتعطيل خدمة named من التشغيل على IPv6.

Editing the BIND Configuration Options

3. أخيرًا، قم بتشغيل الأمر التالي للتحقق من تكوين BIND.

sudo named-checkconf

إذا لم يكن هناك مخرجات، فإن تكوينات BIND صحيحة بدون أي خطأ.

Verifying BIND Configurations

إعداد مناطق DNS

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

في هذا الدليل، ستقوم بإنشاء خادم اسم جديد (ns1.atadomain.io) والنطاقات الفرعية (www.atadomain.io، mail.atadomain.io، vault.atadomain.io).

1. قم بتحرير ملف /etc/bind/named.conf.local باستخدام المحرر المفضل لديك وأضف التكوين التالي.

هذا التكوين يعرف منطقة الإرسال (/etc/bind/zones/forward.atadomain.io)، ومنطقة العكس (/etc/bind/zones/reverse.atadomain.io) لاسم نطاق atadomain.io.

zone "atadomain.io" {
    type master;
    file "/etc/bind/zones/forward.atadomain.io";
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/reverse.atadomain.io";
};

احفظ التغييرات وأغلق الملف.

Defining Forward Zone and Reverse Zone BIND

2. بعد ذلك، قم بتشغيل الأمر أدناه لإنشاء دليل جديد (/etc/bind/zones) لتكوينات مناطق DNS النصية.

mkdir -p /etc/bind/zones/

3. قم بتشغيل كل أمر أدناه لنسخ تكوينات مناطق الإرسال والعكس الافتراضية إلى دليل /etc/bind/zones.

# نسخ منطقة الإرسال الافتراضية
sudo cp /etc/bind/db.local /etc/bind/zones/forward.atadomain.io

# نسخ منطقة العكس الافتراضية
sudo cp /etc/bind/db.127 /etc/bind/zones/reverse.atadomain.io

# عرض محتويات دليل /etc/bind/zones/
ls /etc/bind/zones/
Copying Default Zones Configurations

4. الآن، قم بتحرير تكوين منطقة الإرسال (/etc/bind/zones/forward.atadomain.io) باستخدام المحرر المفضل لديك وأدخل التكوين أدناه.

تكوين المنطقة الأمامية هو المكان الذي تعرّف فيه اسم النطاق الخاص بك وعنوان IP للخادم. سيقوم هذا التكوين بترجمة اسم النطاق إلى العنوان IP الصحيح للخادم.

التكوين أدناه ينشئ خادم الأسماء التالي والنطاقات الفرعية:

  • ns1.atadomain.io – الخادم الرئيسي للأسماء الخاص بنطاقك بعنوان IP 172.16.1.10.
  • سجل MX لنطاق atadomain.io الذي يتم التعامل معه بواسطة mail.atadomain.io. يتم استخدام سجل MX لخادم البريد.
  • النطاقات الفرعية للتطبيقات: www.atadomain.io، mail.atadomain.io، و vault.atadomain.io.
;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            2         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Define the default name server to ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.

; Resolve ns1 to server IP address
; A record for the main DNS
ns1     IN      A       172.16.1.10


; Define MX record for mail
atadomain.io. IN   MX   10   mail.atadomain.io.


; Other domains for atadomain.io
; Create subdomain www - mail - vault
www     IN      A       172.16.1.10
mail    IN      A       172.16.1.20
vault   IN      A       172.16.1.50

احفظ التغييرات وأغلق الملف.

Configuring Forward Zone BIND

5. مثل المنطقة الأمامية، عدّل ملف تكوين المنطقة العكسية (/etc/bind/zones/reverse.atadomain.io) واملأ التكوين التالي.

تقوم المنطقة العكسية بترجمة عنوان IP للخادم إلى اسم النطاق. المنطقة العكسية أو سجل PTR ضرورية لخدمات مثل خادم البريد، والتي تؤثر على سمعة خادم البريد.

يستخدم سجل PTR الكتلة الأخيرة من عنوان IP، مثل سجل PTR بالرقم 10 لعنوان IP للخادم 172.16.1.10.

هذا التكوين ينشئ المنطقة العكسية أو سجل PTR للنطاقات التالية:

  • خادم الأسماء ns1.atadomain.io مع المنطقة العكسية أو سجل PTR 172.16.1.10.
  • سجل PTR للنطاق mail.atadomain.io إلى عنوان IP للخادم 172.16.1.20.
;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            1         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Name Server Info for ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.


; Reverse DNS or PTR Record for ns1.atadomain.io
; Using the last number of DNS Server IP address: 172.16.1.10
10      IN      PTR     ns1.atadomain.io.


; Reverse DNS or PTR Record for mail.atadomain.io
; Using the last block IP address: 172.16.1.20
20      IN      PTR     mail.atadomain.io.

قم بحفظ التغييرات وإغلاق الملف.

Configuring Reverse Zone BIND

6. الآن، قم بتشغيل الأوامر التالية لفحص والتحقق من إعدادات BIND.

# التحقق من التكوين الرئيسي لـ BIND
sudo named-checkconf

# التحقق من منطقة الإرسال forward.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/forward.atadomain.io

# التحقق من منطقة العكس reverse.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/reverse.atadomain.io

عندما يكون التكوين صحيحًا، سترى إخراجًا مماثلًا للمثال التالي.

Checking and Verifying BIND configurations

7. في الختام، قم بتشغيل الأمر التالي باستخدام الأمر systemctl لإعادة تشغيل والتحقق من خدمة named. بهذه الطريقة، يتم تطبيق التغييرات الجديدة على خدمة named.

# إعادة تشغيل خدمة named
sudo systemctl restart named

# التحقق من خدمة named
sudo systemctl status named

أدناه، يمكنك رؤية حالة خدمة named كمفعلة (جارية).

Restarting Named Service and Verifying Named Service Status

فتح منفذ DNS باستخدام جدار الحماية UFW

في هذه المرحلة، لقد أكملت تثبيت خادم BIND DNS. ولكن لا تزال عليك تأمين خادم DNS الخاص بك. ستقوم بإعداد جدار الحماية UFW وفتح منفذ DNS لأي استعلامات إلى الخادم. بهذه الطريقة، يمكن للعملاء إجراء استعلام إلى خادم BIND DNS.

من أجل الأمان، يُفضل تشغيل وتمكين جدار الحماية UFW على خادم Ubuntu الخاص بك.

1. قم بتشغيل الأمر ufw أدناه لفحص التطبيقات المتاحة على جدار الحماية UFW.

sudo ufw app list

يجب عليك رؤية Bind9 في قائمة التطبيقات على تطبيق UFW أدناه.

Listing Available Applications on the UFW Firewall

2. الآن قم بتشغيل الأمر أدناه لـ السماح لـ Bind9 بجدار الحماية UFW.

sudo ufw allow Bind9
Adding UW Rule

3. في النهاية، قم بتشغيل الأمر التالي للتحقق من القواعد الممكّنة على جدار الحماية UFW.

sudo ufw status

يجب عليك رؤية تطبيق Bind9 في القائمة كما هو موضح في اللقطة أدناه.

Verifying List of Rules

التحقق من تثبيت خادم DNS BIND

لقد أكملت الآن تثبيت BIND DNS وتكوين جدار الحماية UFW. ولكن كيف يمكنك التحقق من تثبيت خادم DNS الخاص بك؟ سيقوم الأمر dig بذلك.

Dig هو أداة سطر الأوامر لحل مشاكل تثبيت خادم DNS. يقوم dig بإجراء بحث DNS لاسم النطاق المعطى وعرض إجابات مفصلة للهدف بالاسم نطاق. على نظام Ubuntu، dig هو جزء من حزمة bind9-dnsutil.

للتحقق من تثبيت خادم DNS BIND الخاص بك:

1. قم بتشغيل كل أمر dig أدناه للتحقق من النطاقات الفرعية www.atadomain.io، mail.atadomain.io، و vault.atadomain.io.

إذا كانت عملية تثبيت خادم DNS الخاص بك ناجحة، سيتم حل كل فرع فرعي إلى العنوان IP الصحيح بناءً على تكوين forward.atadomain.io.

# فحص أسماء النطاقات
dig @172.16.1.10 www.atadomain.io
dig @172.16.1.10 mail.atadomain.io
dig @172.16.1.10 vault.atadomain.io

أدناه هو إخراج الفرع الفرعي www.atadomain.io الذي تم حله إلى عنوان IP للخادم 172.16.1.10.

Checking sub-domain www.atadomain.io

وأدناه هو الفرع الفرعي mail.atadomain.io الذي تم حله إلى عنوان IP للخادم 172.16.1.20.

Checking sub-domain mail.atadomain.io

وأدناه هو الفرع الفرعي vault.atadomain.io الذي تم حله إلى عنوان IP للخادم 172.16.1.50.

Checking sub-domain vault.atadomain.io

2. بعد ذلك، قم بتشغيل الأمر dig أدناه للتحقق من سجل MX لنطاق atadomain.io.

dig @172.16.1.10 atadomain.io MX

يجب أن ترى أن لديها سجل MX mail.atadomain.io.

Checking MX record for atadomain.io

3. أخيرًا، قم بتشغيل الأوامر التالية للتحقق من سجل PTR أو منطقة الانعكاس لعناوين IP للخادم 172.16.1.10 و 172.16.1.20.

إذا كانت عملية التثبيت الخاصة بـ BIND ناجحة، سيتم حل كل عنوان IP إلى اسم النطاق المحدد في تكوين reverse.atadomain.io.

# فحص سجل PTR أو DNS العكسي
dig @172.16.1.10 -x 172.16.1.10
dig @172.16.1.10 -x 172.16.1.20

يمكنك أن ترى أدناه، تم حل عنوان IP للخادم 172.16.1.10 إلى اسم النطاق ns1.atadomain.io.

Checking PTR record for IP address 172.16.1.10

كما ترى أدناه، تم حل عنوان IP للخادم 172.16.1.20 إلى اسم النطاق mail.atadomain.io.

Checking PTR record for IP address 172.16.1.20

الختام

في جميع أنحاء هذا البرنامج التعليمي، تعلمت كيفية إنشاء وإعداد خادم BIND DNS آمن على خادم Ubuntu الخاص بك. كما قمت بإنشاء منطقة إرشاد ومنطقة عكسية لإضافة نطاقك وقمت بالتحقق من خوادم DNS عبر تشغيل أوامر dig.

الآن، كيف يمكنك تنفيذ خادم BIND DNS في بيئتك؟ ربما تنفيذ BIND كـ خادم مخول؟ أو إعداد توفر عالي باستخدام تثبيت BIND كـ سيد-عبد؟

Source:
https://adamtheautomator.com/bind-dns-server/