يعد تشغيل خادم 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 systemapt 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.8server=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-server192.168.0.105 gateway.lan
هذه السطور تعني أي طلب لـ سيتم توجيهه إلى
192.168.0.101
بينما سوف ينتهي في
192.168.0.5
احفظ الملف وأغلقه عند الانتهاء من تعيين أجهزتك.
اختبار الخادم الخاص بك
أعد تشغيل Dnsmasq لتطبيق كافة التغييرات:
sudo service dnsmasq restart
تحقق من تشغيل الخادم بشكل صحيح:
sudo service dnsmasq status
ينبغي عليك أن ترى active (running)
يتم عرضها باللون الأخضر. إذا لم يكن الأمر كذلك، فتحقق من أسطر السجل الموجودة أسفل معلومات الحالة لمعرفة الخطأ.
أنت الآن جاهز لاختبار الخادم الخاص بك. يمكنك إجراء محاولات بحث DNS يدويًا باستخدام dig
الأداة. قد تحتاج إلى تثبيت dnsutils
الحزمة أولا.
dig google.com @localhostdig 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 المستضاف ذاتيًا، مما يعمل على تحسين الأداء ويسمح لك باستخدام أسماء النطاقات الداخلية للوصول إلى أجهزة الشبكة المحلية.