How to Set Up Pi-hole DNS-over-HTTPS on Ubuntu Server 24.04

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. تحقق من ذلك على عدة أجهزة بعد تغيير إعدادات جهاز التوجيه، حيث أن إعداد الوكيل الصحيح على الخادم لا يمنع العميل من استخدام مُحلِّل أسماء نطاقات آخر مباشرةً.

المراجع الرسمية

اترك تعليقاً

كيفية استعادة الأقسام المفقودة وبيانات القرص الصلب بأمان

كيفية استعادة الأقسام المفقودة وبيانات القرص الصلب بأمان

تعرّف على كيفية استعادة الأقسام والملفات المفقودة باستخدام برنامجي TestDisk و PhotoRec. احمِ محرك الأقراص المصدر، وقم بإجراء مسح ضوئي آمن، واحفظ البيانات المستعادة على قرص آخر.

كيفية مسح رموز QR على سطح مكتب لينكس

كيفية مسح رموز QR على سطح مكتب لينكس

امسح رموز QR على نظام Linux باستخدام CoBang عبر كاميرا الويب أو ملف صورة. راجع خيارات التثبيت وخطوات الإعداد والحلول المتعلقة بالوصول إلى كاميرا Flatpak.

كيفية تغيير إعدادات كاميرا الويب على نظام لينكس باستخدام Cameractrls

كيفية تغيير إعدادات كاميرا الويب على نظام لينكس باستخدام Cameractrls

قم بتغيير إعدادات كاميرا الويب على نظام التشغيل Linux باستخدام Cameractrls: اضبط التعريض واللون وتقليل الوميض وعناصر التحكم الأخرى المدعومة، ثم تحقق من أوضاع الفيديو المتوافقة.

كيفية تثبيت PhpStorm على نظام Linux: Toolbox، Tar.gz، Snap، وAUR

كيفية تثبيت PhpStorm على نظام Linux: Toolbox، Tar.gz، Snap، وAUR

قم بتثبيت PhpStorm على نظام Linux باستخدام JetBrains Toolbox أو ملف tar.gz المستقل، بالإضافة إلى خيارات Snap وArch AUR. يأتي Java مُضمّنًا بالفعل.

كيفية إعداد لوحتين على XFCE 4

كيفية إعداد لوحتين على XFCE 4

قم بإنشاء لوحة XFCE 4 منفصلة لكل شاشة، وقم بتعيين اللوحة الثانية إلى المخرج الصحيح، وقم بتحديد موضعها وحجمها، وأضف المشغلات وعناصر الحالة التي تحتاجها.

كيفية قص صورة على نظام لينكس باستخدام برنامج جيمب

كيفية قص صورة على نظام لينكس باستخدام برنامج جيمب

إزالة خلفية الصورة على نظام لينكس باستخدام برنامج GIMP: تتبع العنصر، وحذف الخلفية المحددة، والحفاظ على الشفافية، وتصدير ملف PNG قابل لإعادة الاستخدام.

كيفية تثبيت برنامج Cisco Packet Tracer على نظام Linux

كيفية تثبيت برنامج Cisco Packet Tracer على نظام Linux

قم بتنزيل Cisco Packet Tracer 9.0.1 لنظام Ubuntu 64 بت، وقم بتثبيت حزمة DEB باستخدام APT، واقبل الترخيص في Terminal، وقم بتسجيل الدخول لبدء المختبر.

كيفية نسخ قرص مضغوط كملف ISO على نظام لينكس

كيفية نسخ قرص مضغوط كملف ISO على نظام لينكس

أنشئ ملف ISO لقرص مضغوط على نظام لينكس باستخدام GNOME Disks أو dd. حدد محرك الأقراص الضوئية، وراقب عملية النسخ، وتحقق من الصورة، واعرف متى يحتاج القرص التالف أو قرص الصوت إلى أداة أخرى.

حمّل لعبة FlightGear مجاناً: دليل التثبيت الرسمي

حمّل لعبة FlightGear مجاناً: دليل التثبيت الرسمي

حمّل برنامج FlightGear مجاناً من الموقع الرسمي. قارن بين حزم Windows و macOS و Linux، وثبّت ملفات البيانات، وابدأ رحلتك الأولى.

أو كي سامبلر: برنامج مجاني وبسيط لأخذ عينات موسيقية لإيقاعات لوحة المفاتيح

أو كي سامبلر: برنامج مجاني وبسيط لأخذ عينات موسيقية لإيقاعات لوحة المفاتيح

يقوم برنامج OKSampler بربط مقاطع MP3 بمفاتيح لوحة المفاتيح، كما يتيح تكرار الصوت. تعرّف على وظائف هذا البرنامج المجاني القديم، وحدود ميزاته القديمة، وما يجب التحقق منه قبل التنزيل.