{"id":98,"date":"2023-03-31T11:58:47","date_gmt":"2023-03-31T09:58:47","guid":{"rendered":"https:\/\/dilyan.be\/?p=98"},"modified":"2023-03-31T12:03:03","modified_gmt":"2023-03-31T10:03:03","slug":"for-few-msec-less-local-unbound-dns","status":"publish","type":"post","link":"https:\/\/dilyan.be\/?p=98","title":{"rendered":"For few msec less &#8211; local Unbound DNS"},"content":{"rendered":"<div id=\"pl-98\"  class=\"panel-layout\" ><div id=\"pg-98-0\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-98-0-0\"  class=\"panel-grid-cell\" ><div id=\"panel-98-0-0-0\" class=\"so-panel widget widget_sow-editor panel-first-child panel-last-child\" data-index=\"0\" ><div class=\"panel-widget-style panel-widget-style-for-98-0-0-0\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<p>It is always the DNS!<\/p>\n<p>I have several jails and virtual machines on my Dell T5600 home lab. It is much easier to operate when each machine is having a FQDM, so I decided to play with Unbound DNS which is a kind of default for OpenBSD and FreeBSD.<br \/>\nHere is the setup - the host OS is FreeBSD 13.1 (in the example below with IP 192.168.1.115), OpenBSD 7.2 (IP 192.168.1.9) is a virtual machine with bhyve on top of the host OS.<\/p>\n<p>I have configured all my hosts with a domain name under *.dilyan.be + the reverse record. Below you'll see in the example postgres.dilyan.be, openbsd.dilyan.be, wp.dilyan.be, etc with their addresses configured.<\/p>\n<p>In OpenBSD you just have to enable it:<br \/>\n<code><br \/>\n# rcctl enable unbound<br \/>\n# rcctl start unbound<br \/>\nunbound(ok)<\/code><\/p>\n<p>the config files are under <strong>\/var\/unbound\/etc<\/strong><\/p>\n<p>here's my config:<\/p>\n<p><code><br \/>\n[root@openbsd etc]$ cat unbound.conf<br \/>\n# $OpenBSD: unbound.conf,v 1.21 2020\/10\/28 11:35:58 sthen Exp $<br \/>\nserver:<br \/>\ninterface: 127.0.0.1<br \/>\ninterface: 192.168.1.9<br \/>\ninterface: ::1<br \/>\nport: 53<br \/>\naccess-control: 0.0.0.0\/0 refuse<br \/>\naccess-control: 127.0.0.0\/8 allow<br \/>\naccess-control: ::0\/0 refuse<br \/>\naccess-control: ::1 allow<br \/>\naccess-control: 10.0.0.0\/8 allow<br \/>\naccess-control: 127.0.0.0\/8 allow<br \/>\naccess-control: 192.168.0.0\/16 allow<br \/>\nroot-hints: \"\/var\/unbound\/db\/root.hints\"<br \/>\nhide-identity: yes<br \/>\nhide-version: yes<br \/>\nauto-trust-anchor-file: \"\/var\/unbound\/db\/root.key\"<br \/>\nval-log-level: 2<br \/>\naggressive-nsec: yes<br \/>\nverbosity: 1<br \/>\nharden-glue: yes<br \/>\nharden-dnssec-stripped: yes<br \/>\nuse-caps-for-id: yes<br \/>\ndo-ip4: yes<br \/>\ndo-ip6: yes<br \/>\ndo-udp: yes<br \/>\ndo-tcp: yes<br \/>\ncache-min-ttl: 3600<br \/>\ncache-max-ttl: 86400<br \/>\nprefetch: yes<br \/>\nnum-threads: 2<br \/>\nmsg-cache-slabs: 8<br \/>\nrrset-cache-slabs: 8<br \/>\ninfra-cache-slabs: 8<br \/>\nkey-cache-slabs: 8<br \/>\nrrset-cache-size: 512m<br \/>\nmsg-cache-size: 256m<br \/>\nso-rcvbuf: 2m<br \/>\nprivate-address: 172.16.0.0\/12<br \/>\nprivate-domain: \"dilyan.be\"<br \/>\nunwanted-reply-threshold: 10000<br \/>\nval-clean-additional: yes<br \/>\nstatistics-cumulative: yes<br \/>\nextended-statistics: yes<br \/>\nuse-syslog: yes<br \/>\nlocal-zone: \"dilyan.be\" static<br \/>\nlocal-data: \"dilyan.be           IN A 52.208.215.96\"<br \/>\nlocal-data: \"www.dilyan.be       IN A 52.208.215.96\"<br \/>\nlocal-data: \"vpn.dilyan.be       IN A 212.5.153.206\"<br \/>\nlocal-data: \"django.dilyan.be    IN A 192.168.1.119\"<br \/>\nlocal-data: \"mongodb.dilyan.be   IN A 192.168.1.118\"<br \/>\nlocal-data: \"test.dilyan.be      IN A 192.168.1.120\"<br \/>\nlocal-data: \"wp.dilyan.be        IN A 192.168.1.116\"<br \/>\nlocal-data: \"postgres.dilyan.be  IN A 192.168.1.117\"<br \/>\nlocal-data: \"neo4j.dilyan.be     IN A 192.168.1.121\"<br \/>\nlocal-data: \"rpi.dilyan.be       IN A 192.168.0.115\"<br \/>\nlocal-data: \"wiki.dilyan.be      IN A 192.168.1.124\"<br \/>\nlocal-data: \"openbsd.dilyan.be   IN A 192.168.1.9\"<br \/>\nlocal-data: \"freebsd.dilyan.be   IN A 192.168.1.115\"<br \/>\nlocal-data: \"obsd.dilyan.be      IN A 192.168.1.223\"<br \/>\nlocal-data-ptr: \"192.168.1.119   django.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.1.118   mongodb.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.1.120   test.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.1.116   wp.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.1.117   postgres.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.1.121   neo4j.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.0.115   rpi.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.1.124   wiki.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.1.9     openbsd.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.1.115   freebsd.dilyan.be\"<br \/>\nlocal-data-ptr: \"192.168.1.223   obsd.dilyan.be\"<br \/>\nforward-zone:<br \/>\nname: .<br \/>\nforward-addr: 8.8.8.8\t#Google-1<br \/>\nforward-addr: 1.1.1.1   #Cloudflare-1<br \/>\nforward-addr: 9.9.9.9   #Quad9.net<br \/>\nforward-addr: 1.0.0.1   #Cloudflare-2<br \/>\nforward-addr: 8.8.4.4   #Google-2<br \/>\nforward-addr: 149.112.112.112 #Quad9-2<br \/>\nforward-addr: 208.67.222.222 #OpenDNS-1<br \/>\nforward-addr: 208.67.220.220 #OpenDNS-2<br \/>\nremote-control:<br \/>\ncontrol-enable: yes<br \/>\ncontrol-interface: \/var\/run\/unbound.sock<br \/>\n<\/code><\/p>\n<p>After completing the config, restart the service with<br \/>\n<code><br \/>\n# rcctl restart unbound<br \/>\nunbound(ok)<br \/>\n<\/code><\/p>\n<p>So, what do I gain, apart from having the local machines with DNS? Well, a couple of milliseconds :).<br \/>\nHere're are some tests from the local machine compared to Google, Cloudflare, Quad. When asking for the IP address of bbc.co.uk, Cloudflare replied in 5 msec, Google in 31 msec, the local OpenBSD in 2 ms.<\/p>\n<p>[root@openbsd etc]$ drill bbc.co.uk @1.1.1.1<\/p>\n<p>;; HEADER;- opcode: QUERY, rcode: NOERROR, id: 33177<br \/>\n;; flags: qr rd ra ; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0<br \/>\n;; QUESTION SECTION:<br \/>\n;; bbc.co.uk. IN A<br \/>\n;; ANSWER SECTION:<br \/>\nbbc.co.uk. 261 IN A 151.101.64.81<br \/>\nbbc.co.uk. 261 IN A 151.101.128.81<br \/>\nbbc.co.uk. 261 IN A 151.101.192.81<br \/>\nbbc.co.uk. 261 IN A 151.101.0.81<br \/>\n;; AUTHORITY SECTION:<br \/>\n;; ADDITIONAL SECTION:<br \/>\n;; Query time:\u00a05 msec<br \/>\n;; SERVER: 1.1.1.1<br \/>\n;; WHEN: Fri Mar 31 11:53:16 2023<br \/>\n;; MSG SIZE rcvd: 91<br \/>\n---------<br \/>\n[root@openbsd etc]$ drill bbc.co.uk @8.8.8.8<br \/>\n;; HEADER;- opcode: QUERY, rcode: NOERROR, id: 30222<br \/>\n;; flags: qr rd ra<br \/>\n; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0<br \/>\n;; QUESTION SECTION:<br \/>\n;; bbc.co.uk. IN A<br \/>\n;; ANSWER SECTION:<br \/>\nbbc.co.uk. 21 IN A 151.101.0.81<br \/>\nbbc.co.uk. 21 IN A 151.101.64.81<br \/>\nbbc.co.uk. 21 IN A 151.101.128.81<br \/>\nbbc.co.uk. 21 IN A 151.101.192.81<br \/>\n;; AUTHORITY SECTION:<br \/>\n;; ADDITIONAL SECTION:<br \/>\n;; Query time: 31 msec<br \/>\n;; SERVER: 8.8.8.8\u2028;; WHEN: Fri Mar 31 11:53:23 2023<br \/>\n;; MSG SIZE rcvd: 91<br \/>\n--------<br \/>\n[root@openbsd etc]$ drill bbc.co.uk @192.168.1.9<br \/>\n;; HEADER;- opcode: QUERY, rcode: NOERROR, id: 55555<br \/>\n;; flags: qr rd ra<br \/>\n; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0<br \/>\n;; QUESTION SECTION:<br \/>\n;; bbc.co.uk. IN A<br \/>\n;; ANSWER SECTION:<br \/>\nbbc.co.uk. 3580 IN A 151.101.128.81<br \/>\nbbc.co.uk. 3580 IN A 151.101.192.81<br \/>\nbbc.co.uk. 3580 IN A 151.101.0.81<br \/>\nbbc.co.uk. 3580 IN A 151.101.64.81<br \/>\n;; AUTHORITY SECTION:<br \/>\n;; ADDITIONAL SECTION:<br \/>\n;; Query time: 2 msec<br \/>\n;; SERVER: 192.168.1.9<br \/>\n;; WHEN: Fri Mar 31 11:53:27 2023<br \/>\n;; MSG SIZE rcvd: 91<\/p>\n<p>Now, in FreeBSD is a little bit confusing, as they have local_unbound and \"normal\" unbound. The configs are under <strong>\/var\/unbound<\/strong>, but the structure is a little different than in OpenBSD. For example, there're different files for forwarders, blocked sites, etc. that are included in the main unbound.conf at the end:<\/p>\n<p><code><br \/>\ninclude: \/var\/unbound\/forward.conf<br \/>\ninclude: \/var\/unbound\/lan-zones.conf<br \/>\ninclude: \/var\/unbound\/control.conf<br \/>\ninclude: \/var\/unbound\/conf.d\/*.conf<br \/>\ninclude: \/var\/unbound\/blocked_servers<br \/>\n<\/code><\/p>\n<p>Then the example from the OpenBSD is identical, just the forwarders (Google, Cloudflare, Quad9 DNS addresses are in the file forward.conf). I also noticed that some of the parameters in the OpenBSD are giving errors, so I had to remove the following lines from the above config to make it work:<\/p>\n<p><code><br \/>\n#       auto-trust-anchor-file: \"\/var\/unbound\/root.key\"<br \/>\n#       num-threads: 2<br \/>\n#       rrset-cache-size: 512m<br \/>\n#       msg-cache-size: 256m<br \/>\n#       so-rcvbuf: 2m<br \/>\n<\/code><\/p>\n<p>I did not have the time to play and make the FreeBSD options work, just commented them. The rest is identical with the OpenBSD config. Restart the service with:<br \/>\n<code><br \/>\n#service local_unbound restart<br \/>\n<\/code><br \/>\nN.B. <strong>local_unbound<\/strong> is different than <strong>unbound<\/strong> in FreeBSD!<\/p>\n<p>Now the test of the drill, from the FreeBSD shell, this time with cnn.com:<\/p>\n<p>[root@fbsd \/var\/unbound]# drill cnn.com @1.1.1.1<\/p>\n<p>;; HEADER opcode: QUERY, rcode: NOERROR, id: 11433<br \/>\n;; flags: qr rd ra ; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0<br \/>\n;; QUESTION SECTION:<br \/>\n;; cnn.com. IN A<br \/>\n;; ANSWER SECTION:<br \/>\ncnn.com. 58 IN A 151.101.195.5<br \/>\ncnn.com. 58 IN A 151.101.131.5<br \/>\ncnn.com. 58 IN A 151.101.3.5<br \/>\ncnn.com. 58 IN A 151.101.67.5<br \/>\n;; AUTHORITY SECTION:<br \/>\n;; ADDITIONAL SECTION:<br \/>\n;; Query time: 2 msec<br \/>\n;; SERVER: 1.1.1.1<br \/>\n;; WHEN: Fri Mar 31 12:08:20 2023<br \/>\n;; MSG SIZE rcvd: 89<br \/>\n--------<br \/>\n[root@fbsd \/var\/unbound]# drill cnn.com @8.8.8.8<br \/>\n;; HEADER opcode: QUERY, rcode: NOERROR, id: 29708<br \/>\n;; flags: qr rd ra<br \/>\n; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0<br \/>\n;; QUESTION SECTION:<br \/>\n;; cnn.com. IN A<br \/>\n;; ANSWER SECTION:<br \/>\ncnn.com. 18 IN A 151.101.195.5<br \/>\ncnn.com. 18 IN A 151.101.3.5<br \/>\ncnn.com. 18 IN A 151.101.131.5<br \/>\ncnn.com. 18 IN A 151.101.67.5<br \/>\n;; AUTHORITY SECTION:<br \/>\n;; ADDITIONAL SECTION:<br \/>\n;; Query time: 28 msec<br \/>\n;; SERVER: 8.8.8.8<br \/>\n;; WHEN: Fri Mar 31 12:08:25 2023<br \/>\n;; MSG SIZE rcvd: 89<br \/>\n--------<br \/>\n[root@fbsd \/var\/unbound]# drill cnn.com @192.168.1.115<br \/>\n;; HEADER opcode: QUERY, rcode: NOERROR, id: 62215<br \/>\n;; flags: qr rd ra<br \/>\n; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0<br \/>\n;; QUESTION SECTION:<br \/>\n;; cnn.com. IN A<br \/>\n;; ANSWER SECTION:<br \/>\ncnn.com. 3595 IN A 151.101.131.5<br \/>\ncnn.com. 3595 IN A 151.101.195.5<br \/>\ncnn.com. 3595 IN A 151.101.3.5<br \/>\ncnn.com. 3595 IN A 151.101.67.5<br \/>\n;; AUTHORITY SECTION:<br \/>\n;; ADDITIONAL SECTION:<br \/>\n;; Query time: 0 msec<br \/>\n;; SERVER: 192.168.1.115<br \/>\n;; WHEN: Fri Mar 31 12:08:37 2023\u2028;; MSG SIZE rcvd: 89<\/p>\n<p>Cloudflare replied in 2 ms, Google in 28 msec, the FreeBSD in 0 msec .. obviously it was cached \ud83d\ude42<\/p>\n<p>To be honest, the FreeBSD is _very_ fast if the DNS is in the cache and has been requested recently. If it is the first time request, it can go to 100 ms, as it asks the forwarders (Google, Cloudflare, Quad9, OpenDNS that I've configured). It is normal to see 0 msec for hours after the DNS was cached, something that I've never seen in OpenBSD, so looks like the caching mechanisms are different.<\/p>\n<p>A great how-to with more explanations is <a href=\"https:\/\/calomel.org\/unbound_dns.html\">https:\/\/calomel.org\/unbound_dns.html<\/a><\/p>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>It is always the DNS! I have several jails and virtual machines on my Dell T5600 home lab. It is much easier to operate when each machine is having a FQDM, so I decided to play with Unbound DNS which is a kind of default for OpenBSD and FreeBSD. Here is the setup &#8211; the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-98","post","type-post","status-publish","format-standard","hentry","category-bsd"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>For few msec less - local Unbound DNS - dilyan.be<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dilyan.be\/?p=98\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"For few msec less - local Unbound DNS - dilyan.be\" \/>\n<meta property=\"og:description\" content=\"It is always the DNS! I have several jails and virtual machines on my Dell T5600 home lab. It is much easier to operate when each machine is having a FQDM, so I decided to play with Unbound DNS which is a kind of default for OpenBSD and FreeBSD. Here is the setup - the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dilyan.be\/?p=98\" \/>\n<meta property=\"og:site_name\" content=\"dilyan.be\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-31T09:58:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-31T10:03:03+00:00\" \/>\n<meta name=\"author\" content=\"dilyan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"dilyan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dilyan.be\\\/?p=98#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dilyan.be\\\/?p=98\"},\"author\":{\"name\":\"dilyan\",\"@id\":\"https:\\\/\\\/dilyan.be\\\/#\\\/schema\\\/person\\\/5d995599960773a9e6162910b0fb6c6d\"},\"headline\":\"For few msec less &#8211; local Unbound DNS\",\"datePublished\":\"2023-03-31T09:58:47+00:00\",\"dateModified\":\"2023-03-31T10:03:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dilyan.be\\\/?p=98\"},\"wordCount\":844,\"articleSection\":[\"BSD\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dilyan.be\\\/?p=98\",\"url\":\"https:\\\/\\\/dilyan.be\\\/?p=98\",\"name\":\"For few msec less - local Unbound DNS - dilyan.be\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dilyan.be\\\/#website\"},\"datePublished\":\"2023-03-31T09:58:47+00:00\",\"dateModified\":\"2023-03-31T10:03:03+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/dilyan.be\\\/#\\\/schema\\\/person\\\/5d995599960773a9e6162910b0fb6c6d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dilyan.be\\\/?p=98#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dilyan.be\\\/?p=98\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dilyan.be\\\/?p=98#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dilyan.be\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"For few msec less &#8211; local Unbound DNS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dilyan.be\\\/#website\",\"url\":\"https:\\\/\\\/dilyan.be\\\/\",\"name\":\"dilyan.be\",\"description\":\"Dilyan Berkovski&#039;s site\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dilyan.be\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/dilyan.be\\\/#\\\/schema\\\/person\\\/5d995599960773a9e6162910b0fb6c6d\",\"name\":\"dilyan\",\"sameAs\":[\"https:\\\/\\\/dilyan.be\"],\"url\":\"https:\\\/\\\/dilyan.be\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"For few msec less - local Unbound DNS - dilyan.be","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:\/\/dilyan.be\/?p=98","og_locale":"en_US","og_type":"article","og_title":"For few msec less - local Unbound DNS - dilyan.be","og_description":"It is always the DNS! I have several jails and virtual machines on my Dell T5600 home lab. It is much easier to operate when each machine is having a FQDM, so I decided to play with Unbound DNS which is a kind of default for OpenBSD and FreeBSD. Here is the setup - the [&hellip;]","og_url":"https:\/\/dilyan.be\/?p=98","og_site_name":"dilyan.be","article_published_time":"2023-03-31T09:58:47+00:00","article_modified_time":"2023-03-31T10:03:03+00:00","author":"dilyan","twitter_card":"summary_large_image","twitter_misc":{"Written by":"dilyan","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dilyan.be\/?p=98#article","isPartOf":{"@id":"https:\/\/dilyan.be\/?p=98"},"author":{"name":"dilyan","@id":"https:\/\/dilyan.be\/#\/schema\/person\/5d995599960773a9e6162910b0fb6c6d"},"headline":"For few msec less &#8211; local Unbound DNS","datePublished":"2023-03-31T09:58:47+00:00","dateModified":"2023-03-31T10:03:03+00:00","mainEntityOfPage":{"@id":"https:\/\/dilyan.be\/?p=98"},"wordCount":844,"articleSection":["BSD"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/dilyan.be\/?p=98","url":"https:\/\/dilyan.be\/?p=98","name":"For few msec less - local Unbound DNS - dilyan.be","isPartOf":{"@id":"https:\/\/dilyan.be\/#website"},"datePublished":"2023-03-31T09:58:47+00:00","dateModified":"2023-03-31T10:03:03+00:00","author":{"@id":"https:\/\/dilyan.be\/#\/schema\/person\/5d995599960773a9e6162910b0fb6c6d"},"breadcrumb":{"@id":"https:\/\/dilyan.be\/?p=98#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dilyan.be\/?p=98"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dilyan.be\/?p=98#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dilyan.be\/"},{"@type":"ListItem","position":2,"name":"For few msec less &#8211; local Unbound DNS"}]},{"@type":"WebSite","@id":"https:\/\/dilyan.be\/#website","url":"https:\/\/dilyan.be\/","name":"dilyan.be","description":"Dilyan Berkovski&#039;s site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dilyan.be\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/dilyan.be\/#\/schema\/person\/5d995599960773a9e6162910b0fb6c6d","name":"dilyan","sameAs":["https:\/\/dilyan.be"],"url":"https:\/\/dilyan.be\/?author=1"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/dilyan.be\/index.php?rest_route=\/wp\/v2\/posts\/98","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dilyan.be\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dilyan.be\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dilyan.be\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dilyan.be\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=98"}],"version-history":[{"count":6,"href":"https:\/\/dilyan.be\/index.php?rest_route=\/wp\/v2\/posts\/98\/revisions"}],"predecessor-version":[{"id":104,"href":"https:\/\/dilyan.be\/index.php?rest_route=\/wp\/v2\/posts\/98\/revisions\/104"}],"wp:attachment":[{"href":"https:\/\/dilyan.be\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=98"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dilyan.be\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=98"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dilyan.be\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=98"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}