[{"data":1,"prerenderedAt":199},["ShallowReactive",2],{"post-\u002Fblog\u002Fdns-that-stays-up":3,"surround-\u002Fblog\u002Fdns-that-stays-up":193},{"id":4,"title":5,"body":6,"date":179,"description":180,"draft":181,"extension":182,"meta":183,"navigation":184,"path":185,"readTime":186,"seo":187,"stem":188,"tags":189,"__hash__":192},"blog\u002Fblog\u002Fdns-that-stays-up.md","A resolver that stays up",{"type":7,"value":8,"toc":174},"minimark",[9,13,18,35,38,41,97,100,142,149,153,159,170],[10,11,12],"p",{},"When DNS breaks, everything looks broken. A small local resolver is worth the effort, as long as it is treated like the critical service it is.",[14,15,17],"h2",{"id":16},"the-layout","The layout",[19,20,21,29],"ul",{},[22,23,24,28],"li",{},[25,26,27],"strong",{},"Unbound"," resolves names recursively and listens on a local port.",[22,30,31,34],{},[25,32,33],{},"Pi-hole"," filters and caches, and uses Unbound as its only upstream.",[10,36,37],{},"That keeps queries out of third-party resolvers and gives you one place to see what your network is doing.",[14,39,27],{"id":40},"unbound",[42,43,49],"pre",{"className":44,"code":45,"filename":46,"language":47,"meta":48,"style":48},"language-ini shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","server:\n    interface: 127.0.0.1\n    port: 5335\n    do-ip6: no\n    hide-identity: yes\n    hide-version: yes\n    prefetch: yes\n","\u002Fetc\u002Funbound\u002Funbound.conf.d\u002Fpi-hole.conf","ini","",[50,51,52,61,67,73,79,85,91],"code",{"__ignoreMap":48},[53,54,57],"span",{"class":55,"line":56},"line",1,[53,58,60],{"class":59},"sftqT","server:\n",[53,62,64],{"class":55,"line":63},2,[53,65,66],{"class":59},"    interface: 127.0.0.1\n",[53,68,70],{"class":55,"line":69},3,[53,71,72],{"class":59},"    port: 5335\n",[53,74,76],{"class":55,"line":75},4,[53,77,78],{"class":59},"    do-ip6: no\n",[53,80,82],{"class":55,"line":81},5,[53,83,84],{"class":59},"    hide-identity: yes\n",[53,86,88],{"class":55,"line":87},6,[53,89,90],{"class":59},"    hide-version: yes\n",[53,92,94],{"class":55,"line":93},7,[53,95,96],{"class":59},"    prefetch: yes\n",[10,98,99],{},"Restart it and check that it answers:",[42,101,105],{"className":102,"code":103,"language":104,"meta":48,"style":48},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","sudo systemctl restart unbound\ndig example.com @127.0.0.1 -p 5335\n","bash",[50,106,107,123],{"__ignoreMap":48},[53,108,109,113,117,120],{"class":55,"line":56},[53,110,112],{"class":111},"sYn-s","sudo",[53,114,116],{"class":115},"sTbE_"," systemctl",[53,118,119],{"class":115}," restart",[53,121,122],{"class":115}," unbound\n",[53,124,125,128,131,134,138],{"class":55,"line":63},[53,126,127],{"class":111},"dig",[53,129,130],{"class":115}," example.com",[53,132,133],{"class":115}," @127.0.0.1",[53,135,137],{"class":136},"sz9Cv"," -p",[53,139,141],{"class":140},"s7CZa"," 5335\n",[10,143,144,145,148],{},"In Pi-hole, set the custom upstream to ",[50,146,147],{},"127.0.0.1#5335"," and untick everything else.",[14,150,152],{"id":151},"habits-that-keep-it-alive","Habits that keep it alive",[154,155,156],"note",{},[10,157,158],{},"Run a second resolver if anyone else lives in the house. A single Raspberry Pi rebooting for updates is enough to cause complaints.",[19,160,161,164,167],{},[22,162,163],{},"Give the resolver a fixed address and hand it out through DHCP.",[22,165,166],{},"Keep the configuration in version control.",[22,168,169],{},"Test after every change with a query from a different machine.",[171,172,173],"style",{},"html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}",{"title":48,"searchDepth":63,"depth":63,"links":175},[176,177,178],{"id":16,"depth":63,"text":17},{"id":40,"depth":63,"text":27},{"id":151,"depth":63,"text":152},"2026-08-21","Pi-hole in front of Unbound, and the small habits that stop DNS from taking the whole house offline.",false,"md",{},true,"\u002Fblog\u002Fdns-that-stays-up",null,{"title":5,"description":180},"blog\u002Fdns-that-stays-up",[190,191],"homelab","networking","ve5940-35aMzPZnKAmIEqI2MwWWHRAmJ4LPCEE8VUlY",[194,186],{"title":195,"path":196,"stem":197,"description":198,"children":-1},"Recording guitar direct, a practical chain","\u002Fblog\u002Frecording-guitar-direct","blog\u002Frecording-guitar-direct","An interface, an amp simulator and a few habits that make direct recording sound less like a compromise.",1793217406446]