recent
أخبار ساخنة

شرح تثبيت Local DNS Resolver باستخدام Dnsmasq على Ubuntu ... بالخطوات

الصفحة الرئيسية
Dnsmasq

Dnsmasq

هي اختصار لـ DNS masquerade

 هو أداة إعادة توجيه DNS بسيطة وسهلة الاستخدام تستخدم للشبكات الصغيرة.

 يمكن إعداده كخادم DNS مؤقت وخادم DHCP.

يدعم بروتوكول IPv4 و IPv6. 

عندما يتلقى أي استعلامات DNS فإنه سوف يجيب عليها من ذاكرة التخزين المؤقت الخاصة به (cache) أو يعيد توجيهها إلى خادم DNS اخر.

يتكون Dnsmasq من ثلاثة أنظمة فرعية:

نظام DNS الفرعي (DNS subsystem):

 يتم استخدامه للتخزين المؤقت (caching) لأنواع السجلات المختلفة بما في ذلك A و AAAA و CNAME و PTR.

نظام DHCP الفرعي (DHCP subsystem):

يدعم DHCPv4 و DHCPv6 و BOOTP و PXE

النظام الفرعي لإعلان جهاز التوجيه (Router Advertisement subsystem)

يقدم الإعادات الأساسية لمضيفي IPv6.

يمكن استخدامه بشكل مستقل أو بالاشتراك مع DHCPv6.

سنشرح إعداد خادم local DNS باستخدام Dnsmasq على خادم Ubuntu 20.04.

شاهد خطوات تثبيت واعداد Dnsmasq بالفيديو



المتطلبات الأساسية لتثبيت 
Dnsmasq

خادم يعمل بنظام التشغيل Ubuntu 20.04.

إعداد كلمة مرور الـ  root للخادم.


قم بتحديث حزم النظام إلى أحدث إصدار.

يمكنك تحديث جميع الحزم عن طريق تشغيل الأمر التالي:

apt-get update -y


ستحتاج إلى إيقاف خدمة Systemd-resolved.

يتم استخدام خدمة Systemd-resolved لتحليل اسم الشبكة (name resolution) للتطبيقات.

يمكنك ايقافها عن طريق الأمر التالي:

systemctl disable --now systemd-resolved


قم بإزالة ملف resolv.conf الافتراضي وإنشاء ملف جديد باستخدام تفاصيل خادم DNS المخصص.

يمكنك إزالة ملف resolv.conf الافتراضي باستخدام الأمر التالي:

rm -rf /etc/resolv.conf


أضف خادم Google DNS إلى ملف resolv.conf بالأمر التالي:

echo "nameserver 8.8.8.8" > /etc/resolv.conf


تثبيت Dnsmasq

يتوفر Dnsmasq في Ubuntu 20.04 بشكل افتراضي.

يمكنك تثبيته بتشغيل الأمر التالي:

apt-get install dnsmasq dnsutils ldnsutils -y


سيتم بدء خدمات Dnsmasq تلقائيًا.

تحقق من حالة Dnsmasq باستخدام الأمر التالي:

systemctl status dnsmasq


ستحصل على النتيجة التالية:

dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server

     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)

     Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago

   Main PID: 17726 (dnsmasq)

      Tasks: 1 (limit: 2282)

     Memory: 868.0K

     CGroup: /system.slice/dnsmasq.service

             ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e>

Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...

Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK.

Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150

Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets

Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>

Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf

Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53

Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses

Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

إعداد Dnsmasq

قم بإعداد Dnsmasq كخادم local DNS.

 يمكنك القيام بذلك عن طريق تعديل ملف الإعداد الرئيسي لـ Dnsmasq:

nano /etc/dnsmasq.conf


قم بتغيير الأسطر التالية:

port=53

domain-needed

bogus-priv

listen-address=127.0.0.1,your-server-ip

expand-hosts

domain=dns-example.com

cache-size=1000


احفظ وأغلق الملف.

ستحتاج إلى إضافة عنوان IP للخادم الخاص بك كخادم primary nameserver في ملف resolv.conf.

يمكنك إضافته بالأمر التالي:

nano /etc/resolv.conf


أضف السطر التالي فوق السطر nameserver 8.8.8.8:

nameserver your-server-ip


احفظ وأغلق الملف.

تحقق من الخادم بحثًا عن أخطاء باستخدام الأمر التالي:

dnsmasq --test


ستحصل على النتيجة التالية:

dnsmasq: syntax check OK.


أعد تشغيل خدمة Dnsmasq لتطبيق التغييرات:

systemctl restart dnsmasq


تم بدء تشغيل Dnsmasq على المنفذ 53.

تحقق من ذلك باستخدام الأمر التالي:

ss -alnp | grep -i :53


ستحصل على النتيجة التالية:

udp     UNCONN   0        0                                             0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=4))                                             

udp     UNCONN   0        0                                                [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=6))                                             

tcp     LISTEN   0        32                                            0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=5))                                             

tcp     LISTEN   0        32                                               [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=7))   

أضافة سجلات DNS إلى خادم Dnsmasq

قم بتعديل ملف / etc / hosts وإضافة إدخال خادم local DNS.

nano /etc/hosts


أضف السطر التالي:

your-server-ip host1.dns-example.com


احفظ وأغلق الملف.

التحقق من Dnsmasq Server Resolution

يمكنك استخدام الأمر dig للتحقق من DNS resolution:

dig host1.dns-example.com +short


يجب أن ترى عنوان IP الخاص بالخادم:

your-server-ip


يمكنك أيضًا التحقق من DNS resolution الخارجي باستخدام الأمر التالي:

dig howtoforge.com +short


ستحصل على النتيجة التالية:

172.67.68.93

104.26.3.165

104.26.2.165

إعداد  Remote Client لاستخدام خادم DNS Dnsmasq

قم بتثبيت أدوات DNS باستخدام الأمر التالي:

apt-get install dnsutils ldnsutils -y


قم بتعديل الملف /etc/resolv.conf وإدخال خادم Dnsmasq DNS.

nano /etc/resolv.conf


أضف السطر التالي في بداية الملف:

nameserver your-server-ip


احفظ وأغلق الملف.

تحقق من local DNS resolution باستخدام الأمر التالي:

dig host1.dns-example.com


ستحصل على النتيجة التالية:

; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com

;; global options: +cmd

;; Got answer:

;; HEADER opcode: QUERY, status: NOERROR, id: 26401

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;host1.dns-example.com. IN A

;; ANSWER SECTION:

host1.dns-example.com. 0 IN A 45.58.32.165

;; Query time: 301 msec

;; SERVER: 45.58.32.165#53(45.58.32.165)

;; WHEN: Mon Nov 02 16:49:37 IST 2020

;; MSG SIZE  rcvd: 66


تحقق من خادم DNS الخاص بك للتخزين المؤقت (caching).

 يمكنك التحقق من ذلك باستخدام drill.

قم بتشغيل الأمر التالي:


drill google.com | grep "Query time"


ستحصل على النتيجة التالية:

;; Query time: 290 msec


قم بتشغيل الأمر مرة أخرى للتحقق مما إذا كان التخزين المؤقت يعمل أم لا:

drill google.com | grep "Query time"


يجب أن ترى أن وقت الاستعلام يتناقص الآن إلى 4 مللي ثانية:

;; Query time: 4 msec

google-playkhamsatmostaqltradent