كيفية مسح DNS في Linux

النقاط الرئيسية

يمكنك مسح ذاكرة التخزين المؤقتة لنظام أسماء النطاقات على جهاز كمبيوتر يعمل بنظام Linux يستند إلى systemd باستخدام الأمر “resolvectl flush-caches”. إذا كنت تستخدم dnsmasq، فيمكنك مسح ذاكرة التخزين المؤقتة لنظام أسماء النطاقات باستخدام “sudo killall -HUP dnsmasq” بدلاً من ذلك.



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


ما هي ذاكرة التخزين المؤقتة DNS؟

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

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


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

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


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

إذا تضرر أحد إدخالات ذاكرة التخزين المؤقت أو ذاكرة التخزين المؤقت بالكامل، فسوف تحصل على أداء ضعيف في أفضل الأحوال، وثغرات أمنية في أسوأ الأحوال. في هذه الحالة، قد ترغب في البحث عن “تنظيف” ذاكرة التخزين المؤقت لنظام أسماء النطاقات أو مسحها.

هل يستخدم جهاز الكمبيوتر الخاص بك ذاكرة التخزين المؤقتة DNS المحلية؟

تم تشغيل ذاكرة التخزين المؤقتة المحلية لنظام أسماء النطاقات في بعض أجهزة الكمبيوتر التي قمنا باختبارها، وتم إيقاف تشغيلها في أجهزة أخرى. تم إيقاف تشغيلها على جهاز الكمبيوتر Manjaro 21 الخاص بنا، ولكنها كانت قيد التشغيل افتراضيًا على Fedora 37 وUbuntu 22.10.

لتحديد ما إذا كان جهاز الكمبيوتر الذي يعمل بنظام Linux الخاص بك يخزن طلبات DNS مؤقتًا، استخدم is-active خيار systemctl الأمر. الديمون الذي يدير ذاكرة التخزين المؤقت لـ DNS هو مدير حل اسم الشبكة systemd، والمعروف باسم systemd-resolved.

systemctl is-active systemd-resolved


استخدام الأمر systemctl للتحقق مما إذا كان تخزين DNS نشطًا

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

resolvectl statistics

استخدام الأمر solvectl لعرض إحصائيات التخزين المؤقت لـ DNS

يمكننا أن نرى أن هناك 330 إدخالاً في ذاكرة التخزين المؤقت DNS لهذا الكمبيوتر.


مراجعة ذاكرة التخزين المؤقت لنظام DNS

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

الآن، لا توجد طريقة مباشرة لعرض هذه الإدخالات. يمكننا القيام بذلك ولكن نحتاج إلى القليل من الإبداع. USR1، أو الإشارة المحددة من قبل المستخدم رقم واحد، هي إشارة يمكن إرسالها بواسطة kill و killall الأوامر. لا تحتوي هذه الإشارة على معنى محدد مسبقًا. التطبيقات حرة في تجاهل هذه الإشارة أو الرد عليها بأي طريقة نفذها المطورون.

ال systemd-resolved يتفاعل الديمون مع USR1 من خلال كتابة ذاكرة التخزين المؤقت الخاصة به في سجلات النظام. يمكننا بعد ذلك استخدام journalctl أمر لتصفية إدخالات DNS.

سوف نستخدم killall الأمر مع USR1 لإرسال الإشارة إلى systemd-resolved daemon. لاحظ أنه على الرغم من أننا نستخدم killall الأمر، systemd-resolved يستمر تشغيل البرنامج. هذه ليست إشارة إنهاء نقوم بإرسالها.


sudo killall -USR1 systemd-resolved

إرسال إشارة USR1 إلى برنامج الديمون الذي تم حله بواسطة systemd

الآن سوف نستخدم journalctl الأمر مع -u (تصفية حسب systemd خيار (وحدة) لاستخراج إدخالات السجل التي تم إنشاؤها بواسطة systemd-resolved سوف نقوم بإعادة توجيه هذا الإخراج إلى ملفات نصية تسمى “dns.txt”.

sudo journalctl -u systemd-resolved > dns.txt

تصفية إدخالات السجل التي تم حلها بواسطة systemd وإرسالها إلى ملف

سوف نستخدم less عارض الملفات لعرض محتويات الملف.

less dns.txt


عرض ملف dns.txt باستخدام الأمر less

ستتمكن من العثور على التعيينات المخزنة مؤقتًا بين أسماء النطاق وعناوين IP عن طريق التمرير والبحث عبر النص.

تم إبراز محتويات ملف dns.txt مع اسم وعنوان IP لـ google.com

يمكننا رؤية إدخال لـ Google يحمل عنوان IP 216.58.212.196. يمكنك التحقق من ذلك عن طريق إدخال عنوان IP في متصفح الويب. يجب أن ترى الصفحة الرئيسية لبحث Google.

كيفية مسح ذاكرة التخزين المؤقت لـ DNS على Linux

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


الأمر بسيط؛ نستخدم resolvectl مع flush-caches خيار.

resolvectl flush-caches

مسح ذاكرة التخزين المؤقت DNS باستخدام الأمر solvectl

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

resolvectl statistics

إحصائيات ذاكرة التخزين المؤقت التي توضح أن حجم ذاكرة التخزين المؤقت قد تم تقليصه إلى الصفر

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


كيفية مسح ذاكرة التخزين المؤقت dnsmasq على Linux

ال dnsmasq يوفر التطبيق ذاكرة تخزين مؤقتة لنظام أسماء النطاقات وخادم DHCP. وهو شائع الاستخدام بين المستخدمين الذين يرغبون في تشغيل خادم DNS الخاص بهم، وخاصةً في التثبيتات غير التابعة لـsystemd.

غسل dnsmasq إن تخزين ذاكرة التخزين المؤقتة لـ DNS أمر سهل. نحتاج إلى إرسال SIGHUP الإشارة التي تخبر dnsmasq daemon لإعادة التهيئة بشكل فعال. يؤدي القيام بذلك إلى مسح ذاكرة التخزين المؤقت DNS الخاصة به. لإرسال الإشارة، نستخدم killall الأمر مع -HUP العلم واسم التطبيق.

sudo killall -HUP dnsmasq

مسح ذاكرة التخزين المؤقت DNS لتطبيق dnsmasq

احمر وجهي بالنجاح

بالطبع، إذا لم يكن جهاز الكمبيوتر الخاص بك يخزن البيانات مؤقتًا على الإطلاق، فلا يوجد شيء تحتاج إلى التحقق منه.

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


أضف تعليق