1. هل هو مفتوح على الإنترنت؟ شغّل هذا من جهاز ليس على النفق — هاتف على بيانات الجوال، أو VPS آخر، أو أي شيء. انتهاء المهلة هو الإجابة الصحيحة والمرغوبة. أما استجابة فعلية فتعني أن كل ماسح على الإنترنت سيجده أيضاً، وعليك العودة إلى الخطوة 02 فوراً.
dig @<public-ip-of-vps> +timeout=3 example.com
# Expected: ";; connection timed out; no servers could be reached"
2. هل يستخدمه الجهاز فعلاً؟ هذا هو الفحص الذي يفشل غالباً، والفشل غير مرئي: النفق يعمل، والإعداد يبدو صحيحاً، ولا يزال نظام التشغيل يسأل المحلل الذي منحه إياه المقهى عبر DHCP. اسأل المحلل نفسه من يظن أنك، ثم تأكد من الجانب الآخر.
# On the client — which resolver is the system actually using?
resolvectl status | grep -A2 'Current DNS' # Linux
scutil --dns | grep nameserver # macOS
# On the server — does the query actually arrive?
tail -f /var/log/syslog | grep -i unbound &
unbound-control stats_noreset | grep total.num.queries
ثم حمّل إحدى صفحات اختبار تسرب DNS العامة من الجهاز واقرأ النتيجة. إذا ذكرت مزوّد VPS الخاص بك، فالمسار صحيح. إذا ذكرت مزوّد خدمة الإنترنت لديك أو محللاً عاماً كبيراً، فثمة شيء أعلى من النفق لا يزال يجيب.
3. هل التحقق مفعّل فعلاً؟ كرّر أمري dig من الخطوة 03 عبر السلسلة بأكملها هذه المرة — العميل، فAdGuard Home، فUnbound — بدلاً من مواجهة Unbound مباشرة. يجب أن يفشل اسم بتوقيع معطوب هنا أيضاً. إذا تُرك لدى AdGuard Home منبع ثانٍ في مكان ما ضمن إعداداته، فهنا يظهر ذلك.
4. هل تقوم الذاكرة المؤقتة بعملها؟ بعد يوم من الاستخدام العادي، ينبغي أن تكون نسبة الإصابة بين سبعين وتسعين بالمئة. نسبة أقل بكثير تعني عادة أن الذاكرة المؤقتة صغيرة جداً أو أن cache-min-ttl يُتجاهل لأن كل شيء في المنبع له TTL قصير جداً؛ ونسبة أعلى بكثير على شبكة مزدحمة علامة سعيدة على أن prefetch يعمل.
unbound-control stats_noreset | grep -E 'total.num.(queries|cachehits)'
# hit rate = cachehits / queries
ثم القراران التشغيليان. أولاً: ماذا يحدث حين تُعاد تشغيل هذا الخادم. كل جهاز موجَّه إليه يفقد تحليل الأسماء، وهو ما سيبلّغ عنه الجميع في المنزل بأن الإنترنت معطّل. اضبط الخدمة على إعادة التشغيل عند الفشل والبدء عند الإقلاع، ثم أعد تشغيل VPS مرة واحدة عن قصد وراقبه يعود. ثانياً: خطة احتياطية. إما أن تُدرج محللاً عاماً كثانوي على أجهزتك وتقبل أن تلك الاستعلامات تخرج من سيطرتك أثناء الانقطاع، أو تشغّل نسخة ثانية على VPS ثانٍ في معقل مختلف. كلا الخيارين مدافَع عنه. أما اكتشاف هذا السؤال الساعة 23:00 من ليلة أحد فليس كذلك.
systemctl enable unbound AdGuardHome
systemctl show unbound -p Restart -p RestartUSec
reboot # then, from a client: dig nordbastion.com +short