For Pi-hole on Ubuntu Server 24.04, route its upstream requests through dnscrypt-proxy and point Pi-hole to the local listener at 127.0.0.1#5053. This encrypts DNS traffic between your server and the selected upstream resolver with DNS-over-HTTPS (DoH), while Pi-hole continues to answer your LAN clients and apply its blocklists. Pi-hole itself does not provide DoH transport to its upstream by default; the local proxy supplies that encrypted connection.
There is a current-version detail to know first: Cloudflare removed the cloudflared proxy-dns command from new releases starting February 2, 2026. Older tutorials that install that command may not work with a current cloudflared release. The steps below use dnscrypt-proxy, following Pi-hole’s current DoH guide. This setup is suitable when Pi-hole and the proxy run on the same Ubuntu host. A Docker or multi-host setup needs different listener addressing and firewall rules.
What this setup does and what it does not do
Normal DNS usually sends queries from your resolver to an upstream DNS provider without transport encryption. DoH carries DNS requests inside HTTPS, making it harder for a network observer between your Pi-hole server and the resolver to read or alter those requests. Pi-hole remains the DNS server advertised to devices on your local network; only its upstream path changes.
DoH does not make DNS activity invisible to the resolver you choose. The upstream provider still receives queries from your server, and Pi-hole may retain client query history according to its privacy and logging settings. HTTPS also does not encrypt unrelated web traffic. If your goal is to use a particular resolver, check its privacy policy and choose its DoH entry from the supported resolver list.
Before you begin
- Confirm that Pi-hole is already installed and working on Ubuntu Server 24.04. This walkthrough configures an existing Pi-hole rather than installing it.
- Make sure the server has a stable LAN address. If the address changes, router DHCP clients may lose their DNS server.
- Have administrator access and a way to reach the Pi-hole host if DNS temporarily stops working. Avoid making this change remotely over a connection that depends on the same Pi-hole for name resolution.
- Record the current Pi-hole upstream settings so you can restore them during rollback.
The proxy will bind only to loopback on port 5053, leaving port 53 for Pi-hole. This avoids competing with Pi-hole’s DNS service and Ubuntu’s local resolver. Do not disable systemd-resolved just to make this design work; the proxy’s separate loopback port avoids that conflict.
1. Install dnscrypt-proxy from Ubuntu’s package repositories
يوثّق مشروع dnscrypt-proxy مسار تثبيت حزمة أوبونتو. تأكد من أن مستودعات أوبونتو المُهيأة لديك تحتوي على حزمة مُرشّحة قبل التثبيت.
sudo apt update
apt-cache policy dnscrypt-proxy
إذا أظهرت المخرجات إصدارًا مرشحًا، فقم بتثبيته:
sudo apt install dnscrypt-proxy
إذا لم يظهر أي مرشح، فلا تُضِف مستودعًا تابعًا لجهة خارجية غير ذات صلة لمجرد المتابعة. استخدم طريقة التثبيت المذكورة في دليل لينكس الرسمي لمشروع dnscrypt-proxy، وتحقق من الإصدار والبنية، وقم بتكييف إعداد الخدمة مع هذا التثبيت. تنطبق وحدة مقبس systemd ومسارات التكوين أدناه على إعداد حزمة أوبونتو الموثق من قِبل Pi-hole.
2. انقل مستمع الوكيل إلى المنفذ 5053 على المضيف المحلي
يستخدم Pi-hole بالفعل منفذ DNS القياسي 53. قم بتهيئة مقبس الوكيل للاستماع على كلٍ من TCP وUDP على المنفذ المحدد 127.0.0.1:5053، بحيث لا يمكن الوصول إليه إلا من نفس المضيف. أنشئ ملفًا إضافيًا لـ systemd.
sudo systemctl edit dnscrypt-proxy.socket
أدخل هذه الأسطر في المحرر واحفظها:
[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:5053
ListenDatagram=127.0.0.1:5053
ListenStream=تُزيل الأسطر الفارغة ListenDatagram=القيم الافتراضية للحزمة قبل تعيين عناوين الاستبدال. لا تحذفها: وإلا فقد يحتفظ systemd بالمنفذ الافتراضي بالإضافة إلى المستمع المخصص.
3. اختر محلل DoH
افتح ملف تهيئة الحزمة:
sudoedit /etc/dnscrypt-proxy/dnscrypt-proxy.toml
لتفعيل مقبس systemd، استخدم قائمة مستمعين فارغة في إعدادات الوكيل. اختر اسم محلل من قائمة المحللات العامة الموقعة الحالية. على سبيل المثال، يحدد ما يلي محلل Cloudflare القياسي؛ كما يوضح دليل Pi-hole cloudflare-securityمثالًا على الحالات التي يُراد فيها تصفية البرامج الضارة عند محلل المصدر:
listen_addresses = []
server_names = ['cloudflare']
احتفظ بباقي إعدادات الحزمة كما هي. الأسماء المذكورة server_namesهي مُعرّفات سجل النظام، وليست أسماء مضيفين أو مسارات عناوين URL عشوائية. إذا كنت تفضل موفرًا آخر، فتأكد من أن مُدخل المُحلِّل الحالي لديه يدعم بروتوكول DoH، وانسخ اسمه بدقة. قد يُنتج مُحلِّل يُصفّي البرامج الضارة أو فئات أخرى نتائج مختلفة عن مُحلِّل غير مُصفّى.
4. قم بتوجيه Pi-hole إلى الخادم الوكيل المحلي
قم بتعيين عنوان DNS الخاص بـ Pi-hole إلى المستمع المحلي:
sudo pihole-FTL --config dns.upstreams '["127.0.0.1#5053"]'
اللاحقة #5053هي صيغة Pi-hole لمنفذ DNS غير القياسي. يمكنك أيضًا التحقق من واجهة إدارة Pi-hole ضمن الإعدادات > DNS . قم بإلغاء تحديد خيارات الخادم العام المُسبقة، واترك الخادم المُخصص 127.0.0.1#5053كخادم رئيسي. قد يسمح تحديد مُحلل عام كخادم رئيسي إضافي بتجاوز الاستعلامات للوكيل المُشفّر، لذا قم بإزالة هذه الإدخالات إذا كنت ترغب في أن تستخدم جميع استعلامات Pi-hole الرئيسية بروتوكول DNS عبر HTTPS (DoH).
5. أعد تشغيل الخدمات وتحقق من حل المشكلة
أعد تشغيل المقبس وخدمة الوكيل وبرنامج Pi-hole FTL daemon حتى يتم تحميل التكوين الجديد:
sudo systemctl restart dnscrypt-proxy.socket
sudo systemctl restart dnscrypt-proxy.service
sudo systemctl restart pihole-FTL.service
مراجعة حالة الخدمة:
sudo systemctl status dnscrypt-proxy.socket
sudo systemctl status dnscrypt-proxy.service
sudo systemctl status pihole-FTL.service
يجب أن يكون كل منهما نشطًا دون حدوث خطأ في الربط أو فشل في بدء تشغيل المُحلِّل. اختبر الوكيل مباشرةً عبر مُستمع نظام أسماء النطاقات المحلي الخاص به:
dig @127.0.0.1 -p 5053 example.com
تشير استجابة نظام أسماء النطاقات (DNS) إلى أن الخادم الوكيل المحلي يستجيب. ثم اختبر Pi-hole على المنفذ 53:
dig @127.0.0.1 example.com
تحقق من سجل استعلامات Pi-hole أو لوحة التحكم للتأكد من وصول الطلب إلى Pi-hole، وراجع سجل الوكيل إذا فشل الاختبار:
sudo journalctl -u dnscrypt-proxy.service -b --no-pager
للتأكد، راجع سجل بدء تشغيل الخادم الوكيل أو سجل النظام الخاص بالمُحلِّل المُختار وحالة بروتوكول DoH. digيُثبت نجاح العملية وحدها أن تحليل DNS يعمل، لكنها لا تُثبت بالضرورة أن الطلب استخدم HTTPS.
المشاكل الشائعة والتعافي الآمن
- "العنوان قيد الاستخدام": قد يكون هناك برنامج آخر يشغل المنفذ 5053، أو لم يتم تحميل تجاوز المقبس. تحقق من المستمعين باستخدام الأمر `resource`
sudo ss -lntup، وراجع ملف الإدخال باستخدام الأمر `drop-in` systemctl cat dnscrypt-proxy.socket، وتأكد من أن أسطر إعادة الضبط الفارغة تسبق إدخالات 5053.
- الخادم الوكيل نشط، لكن عمليات البحث تنتهي بمهلة زمنية: تحقق من الوصول الصادر عبر HTTPS، واسم المُحلِّل، وسجلات الخادم الوكيل. بعض الشبكات تحظر اتصالات DNS عبر HTTPS أو تقيّد منفذ TCP رقم 443.
- يعمل اختبار البروكسي، لكن Pi-hole لا يستقبل استجابة من الخادم الرئيسي: تأكد من ضبط Pi-hole على القيمة المطلوبة بالضبط
127.0.0.1#5053، ثم أعد تشغيله pihole-FTL. تأكد من أن مربعات اختيار الخادم الرئيسي القياسية لا توفر مسارًا بديلًا بشكل غير مُفعّل.
- لا يستطيع نظام أوبونتو نفسه حلّ أسماء النطاقات بعد هذا التغيير: هذا الإعداد يُغيّر مسار Pi-hole، وليس مسار المضيف
/etc/resolv.conf. تجنّب استبدال هذا الملف أو تعطيله systemd-resolvedكحلّ سريع للمشاكل.
للتراجع، استعد إعدادات نظام أسماء النطاقات (DNS) الأصلية التي سجلتها في Pi-hole وأعد تشغيل الخادم pihole-FTL. بمجرد أن يتوقف Pi-hole عن استخدام الخادم الوكيل، يمكنك تعطيله أو إزالته dnscrypt-proxyباستخدام مدير الحزم. إذا كان هذا الخادم يستخدم Pi-hole أيضًا لحل أسماء النطاقات الخاصة به، فاحتفظ بنسخة احتياطية محلية متاحة قبل تغيير الخدمات.
أي خيار يناسب شبكتك؟
استخدم هذا الإعداد للوكيل أحادي المضيف عندما ترغب في تصفية مركزية لنظام أسماء النطاقات (DNS) في Pi-hole وتشفير حركة البيانات من Pi-hole إلى مُحلِّل أسماء نطاقات مُحدد. يسهل فحصه نسبيًا لأن الوكيل له عنوان ومنفذ محليان فقط. إذا كنت تُشغِّل Pi-hole في Docker، أو على خادم آخر، أو عبر شبكات متعددة، فقد تحتاج إلى عنوان شبكة حاوية بدلًا من عنوان الاسترجاع، ويجب عليك تقييد مُستمع الوكيل حتى لا يكون مُعرَّضًا كمُحلِّل أسماء نطاقات مفتوح. إذا كنت بحاجة إلى تصفية قائمة على السياسات، أو هوية لكل جهاز، أو نظام أسماء نطاقات مُشفَّر للأجهزة المُتجولة خارج المنزل، فقم بتكوين هذه العملاء أو بوابة مُدارة بشكل منفصل؛ لا يقوم اتصال DoH الخاص بـ Pi-hole بتشفير مسار كل عميل إلى Pi-hole تلقائيًا.
أخيرًا، تذكر أن جهاز التوجيه أو العميل قد يتجاوز Pi-hole إذا أعلن عن خادم DNS ثانٍ. لتصفية الشبكة بأكملها، امنح العملاء عنوان Pi-hole فقط عبر DHCP، وراعِ إعلانات DNS الخاصة بـ IPv6 بالإضافة إلى IPv4. تحقق من ذلك على عدة أجهزة بعد تغيير إعدادات جهاز التوجيه، حيث أن إعداد الوكيل الصحيح على الخادم لا يمنع العميل من استخدام مُحلِّل أسماء نطاقات آخر مباشرةً.
المراجع الرسمية