{"id":447,"date":"2026-09-07T07:50:00","date_gmt":"2026-09-07T05:50:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?p=447"},"modified":"2026-10-24T00:58:26","modified_gmt":"2026-10-23T22:58:26","slug":"zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/","title":{"rendered":"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC"},"content":{"rendered":"<p>Pi-hole and Unbound perform different jobs: Pi-hole filters DNS names against rules, while Unbound resolves allowed queries and validates DNSSEC. A central public resolver is no longer the upstream collection point. Root, TLD and authoritative DNS infrastructure remains necessary. This combination alone does not establish a complete zero-trust architecture.<\/p>\n<h2>1. Filtering, recursion and DNSSEC<\/h2>\n<p>DNS maps names such as <code>example.com<\/code> to addresses. A public resolver can record received names, but ordinary DNS requests do not include complete URL paths, page contents or every piece of network metadata.<\/p>\n<ul>\n<li><strong>Pi-hole:<\/strong> handles requests from devices actually configured to use Pi-hole. Domain blocklists are not comprehensive advertising or malware detection. Browsers using a separate DoH service can bypass the local filter.<\/li>\n<li><strong>Unbound:<\/strong> resolves allowed requests that cannot be answered from cache. Referrals lead from root to TLD to authoritative servers; cached records can shorten this process.<\/li>\n<li><strong>DNSSEC:<\/strong> validates signed DNS data through a chain of trust. Invalid signatures cause rejection. Zones securely identified as unsigned remain usable, without cryptographic authentication of their answers. DNSSEC does not encrypt requests.<\/li>\n<\/ul>\n<figure class=\"lw-diagram\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/quality-447-20261024.png\" width=\"1120\" height=\"560\" alt=\"Pi-hole filters configured clients; Unbound resolves and validates signed DNS data. Direct recursion normally uses unencrypted transport.\"><figcaption>Pi-hole filters configured clients; Unbound resolves and validates signed DNS data. Direct recursion normally uses unencrypted transport.<\/figcaption><\/figure>\n<h2>2. Example for Debian or Raspberry Pi OS<\/h2>\n<p>This example assumes Pi-hole and Unbound share a host and network namespace, without separate container networks. Changes to an active DNS service can interrupt name resolution, so the existing configuration and an accessible administration route need to be preserved. Recursion requires outbound UDP and TCP port 53.<\/p>\n<p>Installation from maintained distribution packages:<\/p>\n<pre><code>sudo apt update\nsudo apt install unbound dnsutils<\/code><\/pre>\n<p>The existing package configuration under <code>\/etc\/unbound\/<\/code> needs checking before adding settings. Debian packages normally configure root hints and the DNSSEC trust anchor. An existing <code>auto-trust-anchor-file<\/code> declaration must not be duplicated for the same file. The Unbound service needs write access to the automatically maintained anchor. If this setup is absent, the distribution package instructions take precedence.<\/p>\n<p>The following fragment for <code>\/etc\/unbound\/unbound.conf.d\/pi-hole.conf<\/code> supplements that package configuration:<\/p>\n<pre><code>server:\n    interface: 127.0.0.1\n    port: 5335\n    verbosity: 0\n    do-ip4: yes\n    do-ip6: no\n    do-udp: yes\n    do-tcp: yes\n    harden-glue: yes\n    harden-dnssec-stripped: yes\n    use-caps-for-id: no\n    edns-buffer-size: 1232\n    prefetch: yes\n    qname-minimisation: yes\n    hide-identity: yes\n    hide-version: yes\n    private-address: 10.0.0.0\/8\n    private-address: 172.16.0.0\/12\n    private-address: 192.168.0.0\/16\n    private-address: 169.254.0.0\/16\n    private-address: fc00::\/7\n    private-address: fe80::\/10<\/code><\/pre>\n<p><code>do-ip6: no<\/code> selects IPv4 transport here; AAAA records remain available. Working native IPv6 connectivity can justify <code>yes<\/code>. This fragment deliberately omits a second trust-anchor declaration and is not a complete standalone configuration.<\/p>\n<p>A successful configuration check must precede a restart. These commands are separate steps; a failed first check means the restart must not proceed:<\/p>\n<pre><code>sudo unbound-checkconf\nsudo systemctl restart unbound\nsystemctl is-enabled unbound\ndig @127.0.0.1 -p 5335 fail01.dnssec.works\ndig @127.0.0.1 -p 5335 dnssec.works +ad<\/code><\/pre>\n<p>The first DNS test should return <code>SERVFAIL<\/code>; the second should return <code>NOERROR<\/code> with <code>ad<\/code> among the flags. A single <code>SERVFAIL<\/code> does not prove validation works: connectivity failures can cause the same result. Accurate system time is required for DNSSEC. <code>restart<\/code> does not enable startup at boot; <code>is-enabled<\/code> checks the existing setting.<\/p>\n<h2>3. Connecting Pi-hole and checking the actual path<\/h2>\n<p>In <code>Settings &gt; DNS<\/code>, the custom upstream becomes <code>127.0.0.1#5335<\/code>. Other upstreams are removed for exclusively local recursion. After saving, a test request to Pi-hole should show Unbound as the forwarding destination in the query log. With separate containers, <code>127.0.0.1<\/code> refers to each container itself and is unsuitable for this connection.<\/p>\n<p><code>Use DNSSEC<\/code> enables additional validation inside Pi-hole; this is not merely status-flag forwarding. Unbound validates independently. If the extra validation is enabled, both DNSSEC tests need repeating through Pi-hole. Existing <code>openresolv<\/code> or <code>unbound-resolvconf<\/code> integration also needs checking: a resolver entry using port 53 must not create a loop back to the local service.<\/p>\n<h2>4. DoH is a different operating mode<\/h2>\n<p>Ordinary direct recursion sends unencrypted DNS requests outside the network. QNAME minimisation reduces the name components disclosed to individual servers, but an observer on the internet connection can still read requests.<\/p>\n<p>A deliberately configured DoH upstream encrypts the connection to a selected resolver. That resolver receives the forwarded names. This is an alternative architecture, not an automatic fallback. Adding another Pi-hole upstream does not establish a guaranteed failover order. Certificate verification, bootstrap resolution and outage behaviour require their own configuration.<\/p>\n<p><code>cloudflared proxy-dns<\/code> was removed starting with version 2026.2.0 and is no longer a current installation option. Unbound&#8217;s documented DoH support for incoming client requests must also be distinguished from outgoing DoH forwarding.<\/p>\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n<h3>Does this prevent observation by the internet provider?<\/h3>\n<p>Direct recursion alone does not. DoH protects the contents of the corresponding DNS connection; destination IP addresses of later connections generally remain visible. DNSSEC protects signed data against undetected modification, but prevents neither blocking nor attacks on unsigned DNS data. Encrypted client connections to a private recursive resolver are possible; this does not automatically encrypt the resolver-to-authoritative-server path.<\/p>\n<h3>Why do answers containing private IP addresses disappear?<\/h3>\n<p><code>private-address<\/code> prevents public DNS answers from introducing the listed private addresses. A deliberately internal name may need a narrow exception such as <code>private-domain: \"internal.example.com\"<\/code>. An exception for an entire domain also covers subdomains and weakens rebinding protection within that scope. Local records answered directly by Pi-hole do not pass through Unbound.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.pi-hole.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pi-hole documentation<\/a><\/li>\n<li><a href=\"https:\/\/docs.pi-hole.net\/guides\/unbound\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pi-hole: Unbound<\/a><\/li>\n<li><a href=\"https:\/\/unbound.docs.nlnetlabs.nl\/en\/latest\/manpages\/unbound.conf.html\" target=\"_blank\" rel=\"noopener noreferrer\">Unbound configuration<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/pi-hole\/web\/blob\/master\/settings-dns.lp\" target=\"_blank\" rel=\"noopener noreferrer\">Pi-hole DNSSEC settings<\/a><\/li>\n<li><a href=\"https:\/\/developers.cloudflare.com\/changelog\/post\/2025-11-11-cloudflared-proxy-dns\/\" target=\"_blank\" rel=\"noopener noreferrer\">cloudflared proxy-dns removal<\/a><\/li>\n<li><a href=\"https:\/\/unbound.docs.nlnetlabs.nl\/en\/latest\/topics\/privacy\/dns-over-https.html\" target=\"_blank\" rel=\"noopener noreferrer\">Unbound DoH<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>A technical guide on setting up a sovereign Zero-Trust DNS infrastructure using Pi-hole and Unbound with DNSSEC validation and query minimization.<\/p>\n","protected":false},"author":1,"featured_media":14007,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[137],"tags":[91279,91142,91321,91143,91237,91219],"class_list":["post-447","post","type-post","status-publish","format-standard","hentry","category-tutorials-en-it-networks","tag-prywatnosc-danych-pl","tag-dns","tag-network-security","tag-pi-hole","tag-self-hosting","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Connect Unbound with Pi-hole: recursive DNS resolution, DNSSEC, query minimization and the role of a DoH fallback.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Connect Unbound with Pi-hole: recursive DNS resolution, DNSSEC, query minimization and the role of a DoH fallback.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-07T05:50:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T22:58:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-447-zero-trust-dns-infrastructure-unboun-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC\",\"datePublished\":\"2026-09-07T05:50:00+00:00\",\"dateModified\":\"2026-10-23T22:58:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/\"},\"wordCount\":772,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-447-zero-trust-dns-infrastructure-unboun-g.png\",\"keywords\":[\"Data Privacy\",\"DNS\",\"Network Security\",\"Pi-hole\",\"Self-Hosting\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/\",\"name\":\"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-447-zero-trust-dns-infrastructure-unboun-g.png\",\"datePublished\":\"2026-09-07T05:50:00+00:00\",\"dateModified\":\"2026-10-23T22:58:26+00:00\",\"description\":\"Connect Unbound with Pi-hole: recursive DNS resolution, DNSSEC, query minimization and the role of a DoH fallback.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-447-zero-trust-dns-infrastructure-unboun-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-447-zero-trust-dns-infrastructure-unboun-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Zero-Trust DNS Infrastructure: Unbound & Pi-hole with DoH and DNSSEC\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/it-networks\\\/tutorials-en-it-networks\\\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC | Lukas Wojcik","description":"Connect Unbound with Pi-hole: recursive DNS resolution, DNSSEC, query minimization and the role of a DoH fallback.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/","og_locale":"en_US","og_type":"article","og_title":"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC | Lukas Wojcik","og_description":"Connect Unbound with Pi-hole: recursive DNS resolution, DNSSEC, query minimization and the role of a DoH fallback.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-07T05:50:00+00:00","article_modified_time":"2026-10-23T22:58:26+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-447-zero-trust-dns-infrastructure-unboun-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC","datePublished":"2026-09-07T05:50:00+00:00","dateModified":"2026-10-23T22:58:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/"},"wordCount":772,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-447-zero-trust-dns-infrastructure-unboun-g.png","keywords":["Data Privacy","DNS","Network Security","Pi-hole","Self-Hosting","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/","name":"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-447-zero-trust-dns-infrastructure-unboun-g.png","datePublished":"2026-09-07T05:50:00+00:00","dateModified":"2026-10-23T22:58:26+00:00","description":"Connect Unbound with Pi-hole: recursive DNS resolution, DNSSEC, query minimization and the role of a DoH fallback.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-447-zero-trust-dns-infrastructure-unboun-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-447-zero-trust-dns-infrastructure-unboun-g.png","width":1200,"height":630,"caption":"Zero-Trust DNS Infrastructure: Unbound & Pi-hole with DoH and DNSSEC"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/it-networks\/tutorials-en-it-networks\/zero-trust-dns-infrastructure-unbound-pi-hole-with-doh-and-dnssec\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Zero-Trust DNS Infrastructure: Unbound &amp; Pi-hole with DoH and DNSSEC"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=447"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/447\/revisions"}],"predecessor-version":[{"id":22898,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/447\/revisions\/22898"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/14007"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}