كيفية تشغيل خادم DNS الخاص بك على شبكتك المحلية

يعد تشغيل خادم DNS الخاص بك طريقة رائعة لتسريع استجابة شبكتك، وتقليل اعتمادك على البنية الأساسية العامة، والاستفادة من الوظائف الإضافية مثل توجيه اسم المضيف. فيما يلي كيفية إعداد خادم DNS على جهاز Linux باستخدام Dnsmasq.




ما هو DNS؟

DNS هو النظام الذي يترجم اسم المجال مثل example.com إلى عنوان IP الرقمي لخادمه. قد يبدو هذا مثل

127.0.0.1 

عندما تقوم بإجراء طلب شبكة باستخدام اسم المجال، سيقوم نظامك بإجراء بحث DNS لتحديد عنوان الخادم الذي يجب الاتصال به.

يؤدي هذا إلى زيادة العبء على كل طلب تقوم به. ورغم أن جهازك سوف يخزن استجابات DNS مؤقتًا، فإن الزيارات إلى المجالات الجديدة سوف تتسبب في حدوث عملية ذهاب وعودة عبر DNS قبل بدء الطلب الفعلي. ويحدث هذا على مستوى مجموعة الشبكات في نظام التشغيل، وهو أمر غير مرئي بالنسبة لك باعتبارك المستخدم.

عادةً ما يقوم مزودو خدمة الإنترنت بتشغيل خوادم DNS. ربما تعتمد على خادم مزود خدمة الإنترنت الخاص بك إذا كنت تستخدم الإعدادات الافتراضية على جهاز التوجيه والأجهزة. تتوفر خوادم DNS عامة أخرى من مقدمي خدمات مثل كلاود فلير و جوجل.


لماذا تقوم بتشغيل DNS الخاص بك؟

يمنحك تشغيل خادم DNS الخاص بك مزيدًا من التحكم في شبكتك. أحد الدوافع الشائعة هو القدرة على تكوين تعيينات النطاق على مستوى الشبكة، مثل web-server ل 192.168.0.101سيؤدي تكوين جهاز التوجيه الخاص بك لاستخدام DNS الخاص بك إلى تمكين أي من أجهزتك المتصلة من الوصول إلى 192.168.0.101 عبر .

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

يمكن لخادم DNS الداخلي أيضًا تحسين الأداء وتوفير طبقة إضافية من المرونة. انقطاعات DNS واسعة النطاق ليست غير مسموعةإن استخدام خادم مخصص مزود بذاكرة تخزين مؤقتة طويلة الأمد للخدمات الهامة التي تتفاعل معها قد يساعدك في تجاوز وقت التوقف لدى مزود الخدمة الأساسي الذي اخترته.

DNS مع Dnsmasq

dnsmasq.com هو خادم DNS خفيف الوزن يأتي مع معظم توزيعات Linux. كما أنه سهل التكوين بشكل رائع.


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

سيبدو تدفق التوجيه على النحو التالي:

  • يتلقى جهاز توجيه الشبكة طلبًا من أحد الأجهزة المتصلة. سيتم تكوين جهاز التوجيه لاستخدام مضيف Dnsmasq كخادم DNS الخاص به.
  • سيتحقق Dnsmasq مما إذا كان لديه مسار محدد لاسم المجال، مثل web-server ل 192.168.0.101. إذا كان الطلب ل
    http: 

    سوف يتم ارساله 192.168.0.101 العودة إلى جهاز التوجيه.

  • عندما لا يكون لدى Dnsmasq مسار مطابق، فسوف يقوم بإعادة توجيه طلب DNS إلى Google 8.8.8.8، مما يتيح لك إمكانية الوصول إلى شبكة الإنترنت العامة. وهذا يضمن لك إمكانية الوصول إلى شبكة الويب الأوسع عند استخدام DNS الخاص بك.


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

ابدء

سنفترض أنك تمتلك بالفعل جهاز Linux جاهزًا لاستضافة Dnsmasq. لا يتطلب Dnsmasq الكثير من الموارد – إذا كان لديك عدد قليل من أجهزة العميل، فسوف يعمل بسهولة على Raspberry Pi.

يجب أن يكون لدى المضيف الخاص بك عنوان IP ثابت معين. من هنا، سيتم تعيين عنوان IP 192.168.0.1 يشير إلى خادم Dnsmasq.

تأكد من تثبيت Dnsmasq:

# Assuming a Debian system 

apt update

apt install dnsmasq


يوجد ملف تكوين Dnsmasq عادةً في /etc/dnsmasq.conf. يتم ملء هذا مسبقًا بالإعدادات الأولية. يلزم إجراء بعض التغييرات لكي يعمل Dnsmasq بشكل فعال في سيناريو الشبكة المحلية. قم بتشغيل sudo nano /etc/dnsmasq.conf لفتح الملف، استخدم اختصار لوحة المفاتيح Ctrl+W للعثور على الأسطر التالية وإلغاء التعليق عليها:

#domain-needed 

#bogus-priv

إزالة # حرف من بداية كل سطر. إليك ما تمكّنه هذه الإعدادات:

  • domain-needed – يمنع هذا Dnsmasq من إعادة توجيه الأسماء المحلية بدون جزء المجال إلى خادم DNS الأصلي. في التثبيت الخاص بنا، يعني هذا example.com ستكون مؤهلة للحل عبر Google ولكن example أو web-server لن يفعل ذلك. فهو يحتفظ بأسماء بدون نقاط لشبكتك المحلية.
  • bogus-priv – يمنع إعادة توجيه استعلامات البحث العكسي لـ DNS إلى خادم DNS الأصلي. وهذا يعني عناوين IP الداخلية مثل 192.168.0.101 لن يتم الكشف عنها أبدًا لشركة Google. قد يؤدي عدم تمكين هذا إلى تسريب بنية شبكتك الداخلية عن غير قصد إلى مزود الخدمة لديك.

لتعيين خادم DNS الأصلي، أضف سطرًا جديدًا إلى ملف التكوين الخاص بك:


server=8.8.8.8 

server=4.4.4.4

يؤدي هذا إلى توجيه Dnsmasq لإعادة توجيه الاستعلامات غير المحلولة إلى 8.8.8.8إذا كان هذا الخادم غير متاح، 4.4.4.4 سيتم استخدامها بدلاً من ذلك. هذه العناوين هي الحلول الأساسية والثانوية لخدمة DNS الخاصة بـ Google.

بعد ذلك، اضبط حجم ذاكرة التخزين المؤقت. يتم تعيين هذا افتراضيًا على قيمة منخفضة نسبيًا تبلغ 150 طلبًا مخزنًا مؤقتًا. ستسمح زيادة هذا لـ Dnsmasq بتقديم المزيد من عمليات البحث من ذاكرة التخزين المؤقت، مما يقلل من زمن انتقال الشبكة. ابحث عن cache-size السطر، قم بإلغاء التعليق عليه، وقم بتغيير قيمته:

cache-size=1000

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

تعيين أسماء المضيفين إلى عناوين IP

هناك عدة طرق مختلفة لربط أسماء المضيفين بعناوين IP الخاصة بهم. الطريقة الأبسط هي إضافة إدخالات إلى ملف تعريف الخادم الحالي الخاص بك. /etc/hosts يقوم Dnsmasq تلقائيًا بتحميل القواعد من هذا الملف كجزء من تكوينه الافتراضي.

يفتح /etc/hosts وأضف مساراتك إلى أسفل الملف. يأتي عنوان IP أولاً، متبوعًا بالاسم الذي سيتم تعيينه:


192.168.0.101 web-server 

192.168.0.105 gateway.lan

هذه السطور تعني أي طلب لـ سيتم توجيهه إلى 192.168.0.101 بينما سوف ينتهي في 192.168.0.5احفظ الملف وأغلقه عند الانتهاء من تعيين أجهزتك.

اختبار الخادم الخاص بك

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

sudo service dnsmasq restart

تحقق من تشغيل الخادم بشكل صحيح:

sudo service dnsmasq status

ينبغي عليك أن ترى active (running) يتم عرضها باللون الأخضر. إذا لم يكن الأمر كذلك، فتحقق من أسطر السجل الموجودة أسفل معلومات الحالة لمعرفة الخطأ.

لقطة شاشة للجري "حالة خدمة dnsmasq" على خادم مباشر

أنت الآن جاهز لاختبار الخادم الخاص بك. يمكنك إجراء محاولات بحث DNS يدويًا باستخدام dig الأداة. قد تحتاج إلى تثبيت dnsutils الحزمة أولا.


dig google.com @localhost 

dig gateway.lan @localhost

يجب أن يظهر كلا الأمرين عنوان IP في ANSWER SECTION. في حالة gateway.lan، النتيجة يجب أن تكون 192.168.0.5 وفقًا لقاعدة التوجيه المحددة في /etc/hosts. ال @localhost جزء من الأوامر يوجه dig للاستعلام عن خادم DNS المحلي الخاص بك.

تكوين الشبكة الخاصة بك

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

بمجرد العثور على صفحة الإعدادات الصحيحة، قم بتعيين عنوان IP الخاص بخادمك (192.168.0.1 في هذا الدليل) كخادم DNS الأساسي لجهاز التوجيه. من الجيد تكوين موفر DNS عام، مثل موفر DNS الخاص بشركة Google 8.8.8.8، كخادم ثانوي. وهذا يضمن لك استمرار قدرتك على الوصول إلى الإنترنت في حالة تعطل خادم DNS وانقطاع الاتصال بالإنترنت.


الآن، ستقوم جميع الأجهزة المتصلة بجهاز التوجيه الخاص بك بإجراء استعلامات DNS عبر مثيل Dnsmasq الخاص بك. وسوف تتمكن من الوصول إلى أجهزتك من خلال الأسماء المخصصة لها، مثل web-server و gateway.lanوالاستفادة من تخزين DNS على مستوى الشبكة.

خاتمة

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

لا يحتاج Dnsmasq عادةً إلى الكثير من التدخل اليدوي بمجرد تشغيله. يمكنك مراقبة السجلات باستخدام service dnsmasq status أو systemctl status dnsmasqأنت الآن جاهز للاستفادة من خادم DNS المستضاف ذاتيًا، مما يعمل على تحسين الأداء ويسمح لك باستخدام أسماء النطاقات الداخلية للوصول إلى أجهزة الشبكة المحلية.

أضف تعليق