Software-update: Unbound 1.24.0

Unbound logo (79 pix) Als je een DNS-lookup uitvoert, begint een recursor in eerste instantie met het stellen van de lookupvraag aan een DNS-rootserver. Deze kan dan doorverwijzen naar andere servers, vanaf waar weer doorverwezen kan worden naar andere servers enzovoort, totdat uiteindelijk een server is bereikt die het antwoord weet, of weet dat de lookup niet mogelijk is. Van dit laatste kan sprake zijn als de naam niet bestaat of de servers niet reageren. Het proces van het langslopen van verschillende authoritative servers heet recursie. Unbound is een DNS-recursor met ondersteuning voor moderne standaarden, zoals Query Name Minimisation, Aggressive Use of Dnssec-Validated Cache en authority zones. Versie 1.24.0 is uitgebracht en hierin zijn de volgende veranderingen en verbeteringen aangebracht:

Features
  • Increase default to `num-queries-per-thread: 2048`, when unbound is compiled with libevent. It makes saturation of the task queue more resource intensive and less practical. Thanks to Shiming Liu, Network and Information Security Lab, Tsinghua University for the report.
  • Merge #1276: Auto-configure '-slabs' values.
  • Change default for so-sndbuf to 1m, to mitigate a cross-layer issue where the UDP socket send buffers are exhausted waiting for ARP/NDP resolution. Thanks to Reflyable for the report.
  • Adjusted so-sndbuf default to 4m.
  • Merge #1289 from Roland van Rijswijk-Deij: Add extra statistic to track the number of signature validation operations. Adds 'num.valops' to extended statistics.
  • Fix #1303: [FR] Disable TLSv1.2.
  • unbound-control cache_lookup <domains> prints the cached rrsets and messages for those.
  • unbound-control cache_lookup +t allows tld and root names. And subnet cache contents are printed.
  • Fix #1319: [FR] zone status for Unbound auth-zones.
Bug Fixes
  • Fix #1272: assertion failure testcode/unitverify.c:202.
  • Merge #1275: Use macros for the fr_check_changed* functions.
  • Fix for parallel build of dnstap protoc-c output.
  • Fix dnstap to use protoc.
  • Sync unbound and unbound-checkconf log output for unknown modules.
  • Fix #1281: forward-zone "name: ." conflicts with auth-zone "name: ." in 1.23.0, but worked in 1.22.0.
  • Fix #1283: Unsafe usage of atoi() while parsing the configuration file.
  • Merge #1280: Fix auth nsec3 code. Fixes NSEC3 code to not break on broken auth zones that include unsigned out of zone (above apex) data. Could lead to hang while trying to prove a wildcard answer.
  • Fix #1284: NULL pointer deref in az_find_nsec_cover() (latent bug) by adding a log_assert() to safeguard future development.
  • Fix #1282: log-destaddr fail on long ipv6 addresses.
  • Fix config of slab values when there is no config file.
  • Fix for cname chain length with qtype ANY and qname minimisation. Thanks to Jim Greenwood from Nominet for the report.
  • Merge #1285: RST man pages. It introduces restructuredText man pages to sync the online and source code man page documentation. The templated man pages (*.in) are still part of the repo but generated with docutils from their .rst counterpart. Documentation on how to generate those (mainly for core developers) is in README.man.
  • Add more checks about respip in unbound-checkconf. Also fixes #310: unbound-checkconf not reporting RPZ configuration error.
  • Fix #1288: [FR] Improve fuzzing of unbound by adapting the netbound program.
  • Small manpage corrections for the 'disable-dnssec-lame-check' option.
  • Fix unbound-anchor certificate file read for line ends and end of file.
  • Fix comment for the dname_remove_label_limit_len function.
  • iana portlist updated.
  • Fix bitwise operators in conditional expressions with parentheses.
  • Fix conditional expressions with parentheses for bitwise and.
  • Fix header return value description for skip_pkt_rrs and parse_edns_from_query_pkt.
  • Fix to check control-interface addresses in unbound-checkconf.
  • Fix #1295: Windows 32-bit binaries download seems to be missing dll dependency.
  • Fix for consistent use of local zone CNAME alias for configured auth zones. Now it also applies to downstream configured auth zones.
  • Fix #1296: DNS over QUIC depends on a very outdated version of ngtcp2. Fixed so it works with ngtcp2 1.13.0 and OpenSSL 3.5.0.
  • Merge #1297: edns-subnet: fix NULL_AFTER_DEREF on subnetmod.
  • Fix rrset cache create allocation failure case.
  • Fix #1293: EDE 6 is attached to insecure cached answers when client sends the CD bit.
  • Fix #1247: forward-first: ssl handshake failed on root nameservers.
  • For #1247, turn off fetch-policy for delegation when looking into parent side name servers that may not update the addresses and hit NXNS limits.
  • For #1247, replay test (added tcp_transport to outnet_serviced_query).
  • Merge #1299: Fix typos.
  • Generate ltmain.sh and configure again.
  • Fix #1300: Is 'sock-queue-timeout' a linux only feature.
  • For #1300: implement sock-queue-timeout for FreeBSD as well.
  • Fix layout of comm_point_udp_ancil_callback.
  • Fix to improve dnstap discovery on Fedora.
  • Fix detection of SSL_CTX_set_tmp_ecdh function.
  • For #1301: configure cant find SSL_is_quic in OpenSSL 3.5.1.
  • For #1289: test num.valops in existing stat_values.tdir.
  • For #1289: add num.valops in the unbound-control man page.
  • Add unit tests for non-ecs aggregation.
  • Fix to not set rlimits in the unit tests.
  • iana portlist updated.
  • Redis checks for server down and throttles reconnects.
  • Fix redis cachedb module gettimeofday init failure.
  • Fix testbound test program to accurately output packets from hex.
  • Fix #1309: incorrectly reclaimed tcp handler can cause data corruption and segfault.
  • Fix to use assertions for consistency checks in #1309 reclaimed tcp handlers.
  • Fix edns subnet, so that the subquery without subnet is stored in global cache if the querier used 0.0.0.0/0 and the name and address do not receive subnet treatment. If the name and address are configured for subnet, it is stored in the subnet cache.
  • Fix dname_str for printout of long names. Thanks to Jan Komissar for the fix.
  • Fix that edns-subnet failure to create a subquery errors as servfail, and not formerror.
  • Fix to whitespace in dname_str.
  • Fix that unbound-control dump_cache releases the cache locks every so often, so that the server stays responsive.
  • Fix to remove debug from cache_lookup.
  • Fix to unlock cache_lookup message for malformed records.
  • Fix to increase responsiveness of dump_cache.
  • Fix to decouple file descriptor activity and cache lookups in dump_cache.
  • Fix cache_lookup subnet printout to wipe zero part of the prefix.
  • Fix cache_lookup subnet print to not print messages without rrsets and perform in-depth check on node in the addrtree.
  • Fix to check for extraneous command arguments for unbound-control, when the command takes no arguments but there are arguments present.
  • Fix #1317: Unbound starts too early. Add Wants=network-online.target under [Unit] in unbound.service.
  • Fix for #1317: Fix contrib/unbound.service comment path for systemd network configuration.
  • For #1318: Fix compile warnings for DoH compile on windows.
  • Fix sha1 enable environment variable in test code on windows.
  • Fix that the zone acquired timestamp is set after the zonefile is read.
  • Fix ports workflow to install expat for macos.
  • Fix unbound-control dump_cache for double unlock of lruhash table.
  • Fix setup_listen_sslctx warning for nettle compile.
  • Limit the number of consecutive reads on an HTTP/2 session. Thanks to Gal Bar Nahum for exposing the possibility of infinite reads on the session.
  • Fix for #1324: Fix to free edns options scratch in ratelimit case.
  • Fix #1235: Outdated Python2 code in unbound/pythonmod/examples/log.py.
  • Fix #1324: Memory leak in 'msgparse.c' in 'parse_edns_options_from_query(...)'.
  • Fix indentation in tcp-mss option parsing.
  • For #1328: make depend.
  • Update documentation for using "SET ... EX" in Redis.
  • Document max buffer sizes for Redis commands.
  • Update man pages.
  • Fix #1332: CNAME chains are sometimes not followed when RPZs add a local CNAME rewrite.
  • Update contrib/aaaa-filter-iterator.patch so it applies on 1.24.0.
  • Small debug output improvement when attaching an EDE.
  • Fix to print warning for when so-sndbuf setsockopt is not granted.
  • Too many quotes for the EDE message debug printout.

Unbound

Versienummer 1.24.0
Releasestatus Final
Besturingssystemen Linux, BSD, macOS, Solaris, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11, Windows Server 2022, Windows Server 2025
Website Unbound
Download https://nlnetlabs.nl/projects/unbound/download/
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Bart van Klaveren

Downloads en Best Buy Guide

18-09-2025 • 18:00

11

Bron: Unbound

Update-historie

Reacties (11)

11
11
3
0
0
8
Wijzig sortering
Heb al heel lang unbound in een docker container draaien icm met pi-hole. Werkt altijd prima.
Jammer dat de mvance docker image al een tijd niet meer ge-update is. Laatste versie is 1.22 van 17 oktober 2024. De klutchell image wordt meestal wel snel ge-update.

[Reactie gewijzigd door Toet3r op 18 september 2025 20:53]

Ik draai zelf de klutchell image al enkele jaren, die update altijd vrij rap inderdaad en draait altijd stabiel.
Ik heb ietsv ergelijkbaars. Vroeger had ik Pihole draaien, maar nu heb ik Adguard Home, met vervolgens Unbound DNSSEC als resolver. Werkt echt heel lekker, de lookup time is veelal < 1ms. Websites laden behoorljk snappy. En de belangrijkste crap wordt gefilterd. Jammer alleen dat dingen zoals Youtube apps de dans ontspringen door hun eigen DNS resolver te benaderen via https.
Je zou kunnen kijken of je router DoH kan blokkeren, of alleen specifieke resolvers toestaan. Ik weet dat pfSense/OPNsense en Ubiquiti die mogelijkheid wel hebben. Andere merken zoals MicroTik, TP-Link etc mogelijk ook wel.
Zou standaard in windows moeten zitten het liefst met caching en dnssec aan.
Een operating systeem volgt in de regel de geadviseerde methodes van de protocollen en dergelijke. Een dns-recursor werkt precies omgekeerd aan de methode van het protocol.

Als je zelf bewust een dns-recursor wilt gebruiken dan stel je die het beste zelf bewust in als dns-server in je eigen infrastructuur.
Standaard wordt het gateway addres van je router gebruikt die op zijn beurt de dns servers gebruikt van de provider. Er is niets mis mee om dit te veranderen. Veiliger zou zijn om standaard een chaching resolver te installeren die dns over https of tls gebruikt. Dit is eenvouding aan te passen in de adapter settings. Alleen heb je dan nog geen chaching. Nu zou je unbound kunnen installeren voor windows. Alleen werkt die niet zo lekker als bijvoorbeeld unbound op linux.
De dns standaard is er op gebaseerd dat een systeem naar 1 dns server kijkt. De netwerk configuratie die in veel gevallen via dhcp naar jou systeem komt (of handmatig wordt ingesteld) heeft in de regel 1 of 2 dns-servers. En ja, in de thuis situatie werkt de router als dns-server voor de interne systemen. De dns-server van jouw provider is in de regel de standard dns-server voor de routers van de klanten.

Het dns systeem is standaard zo ingesteld dat de dns adressen gecacht worden zo lang als de time-to-live aangeeft. Dat doet elke dns server in de cascade van dns servers tot de dns servers van/voor de tld-s. Deze caching is vooral om dns-stormen (zoiets als een dns-ddos) te voorkomen.

De dns-recursor negeert de cache van de tussenliggende dns-servers. Dat is niet iets wat je standaard in een operating systeem in wilt bouwen. Daarmee genereer je veel te veel kans op dns-stormen.

Er is inderdaad niets mis met veranderen. Maar er is ook niets mis met het huidige dns systeem als er gebruik gemaakt wordt van nette dns-servers. Toegegeven, er zijn (vooral buiten Europa) veel isp-s die hun eigen dns-server zodanig misbruiken dat dns-over-https als valide internet protocol is opgestaan...

En ja, als je een caching resolver wilt gebruiken, dan installeer je er 1 in je netwerk of je gebruikt een publieke implementatie. Dan kan je op elk eigen systeem die gewoon als de dns-server configureren. Hoeft er niet te veel in het operating systeem te worden aangepast.

[Reactie gewijzigd door beerse op 19 september 2025 12:24]

Moet je eens yoga dns installeren op een windows client en zien wat voor onzin dns voorbij komt.
Waarom is yoga-dns bij tweakers in de downloads niet bekend? Heb je het daar nog niet voorgesteld?

Frappant is dat de documentatie begint met te stellen dat dns problemen heeft (dat ontken ik niet). En vervolgens stelt ze dat de dns configuratie van een systeem niet omgezet hoeft te worden, dat ze die zelf wel afvangt.... Dat is naar mijn idee dus blond gebruik maken van de problemen om ze te omzeilen. Dat kan de nerd/autist in mij even niet bevatten. De techneut in mij zet deze software meteen buiten spel.

Tel daarbij dat de documentatie (terecht) meteen stelt dat er wel wat aan administratie en beheer gedaan moet worden. Sorry, maar ik werk in de automatisering, niet in de administratie.

Mijn systemen gebruiken de dns server die bij het netwerk geconfigureerd zijn waar ze op zijn aangesloten. Daarbij vertrouw ik mijn isp (freedom.nl) dat ze een nette dns-service biedt.
Yoga dns is leuk omdat je een live venster hebt wat betreft de dns aanvragen. Het is opmerkelijk hoeveel telemetry aanvragen er gedaan worden. Grootste min punt voor mij is dat yoda dns geen caching doet.

Gelukkig doet unbound op opnsense dit wel.


Om te kunnen reageren moet je ingelogd zijn