Unbound 1.12.0rc1 pre-release

Hi,

Unbound 1.12.0rc1 pre-release is available:
https://nlnetlabs.nl/downloads/unbound/unbound-1.12.0rc1.tar.gz
sha256 96ad65adb9937bba44e1ee13d1644858043c88b3c4096c86cb737ead58dc0ded
pgp https://nlnetlabs.nl/downloads/unbound/unbound-1.12.0rc1.tar.gz.asc

This release contains the DNS Flag Day 2020 changes. This sets the
default EDNS buffer size to 1232, that should reduce fragmentation.
https://dnsflagday.net/2020/

There is inclusive language in the configuration. There is caps-exempt,
ipsecmod-allow and primary server options for auth-zones. The older
terms are accepted to keep configuration working.

DNS-over-HTTPS is supported in this release. The DoH is enabled when
Unbound is compiled with the nghttp2 library, with configure
--with-libnghttp2. Then have an interface on the https port, that can
be configured with the https-port option. Also have a cert and key
available with the tls-service-key and tls-service-pem options. Further
settings can be configured for the http-endpoint, http-max-streams,
http-query-buffer-size, http-response-buffer-size and http-nodelay
options. The max streams sets the maximum concurrent streams, the
buffer size options the number of bytes in buffers, and the nodelay
option can turn on TCP_NODELAY for DNS-over-HTTPS service. In the
statistics the memory used is reported in mem.http.query_buffer and
mem.http.response_buffer. The number of queries is reported in
num.query.https, they are also included in the tcp and tls counts
because https uses TLS and TCP.

The DLV options and code to handle DLV lookups have been removed from
the code base. The DLV repository is empty nowadays, it has been
decommissioned.

There is a new feature where it is possible to use interface names to
bind to the IP addresses on that interface. It pulls in the addresses
at the start of the server, if the addresses change, use the existing
freebind and other socket options to register for addresses before they
appear, or the interface-automatic option that copies them from queries
to answers with ancillary data.

There is a new option for the edns-tag draft specification. It can be
enabled if you need the tentative implementation to add those tags to
outgoing messages.

Features
- DNS Flag Day 2020: change edns-buffer-size default to 1232.
- Merge PR #255: DNS-over-HTTPS support.
- Use inclusive language in configuration
- Merge PR #284 and Fix #246: Remove DLV entirely from Unbound.
  The DLV has been decommisioned and in unbound 1.5.4, in 2015, there
  was advise to stop using it. The current code base does not contain
  DLV code any more. The use of dlv options displays a warning.
- Similar to NSD PR#113, implement that interface names can be used,
  eg. something like interface: eth0 is resolved at server start and
  uses the IP addresses for that named interface.
- Merge PR #272: Add EDNS client tag functionality.
- Add edns-client-tag-opcode option

Bug Fixes
- Merge PR #270 from cgzones: munin plugin: always exit 0 in autoconf
- Merge PR #269, Fix python module len() implementations, by Torbjörn
  Lönnemark
- Merge PR #268, draft-ietf-dnsop-serve-stale-10 has become RFC 8767 on
  March 2020, by and0x000.
- Fix doxygen comment for no ssl for tls session ticket key callback
  routine.
- Fix mini_event.h on OpenBSD cannot find fd_set.
- Improve error log message when inserting rpz RR.
- Merge PR #280, Make tvOS & watchOS checks verify truthiness as well as
  definedness, by Felipe Gasper.
- contrib/aaaa-filter-iterator.patch file renewed diff content to
  apply cleanly to the current coderepo for the current code version.
- Fix #287: doc typo: "Additionaly".
- Merge (modified) PR #277, use EVP_MAC_CTX_set_params if available,
  by Vítězslav Čížek.
- Create and init edns tags data for libunbound.
- Fix stats double count issue (#289).
- Fix that dnstap reconnects do not spam the log with the repeated
  attempts. Attempts on the timer are only logged on high verbosity,
  if they produce a connection failure error.
- Fix to apply chroot to dnstap-socket-path, if chroot is enabled.
- Change configure to use EVP_sha256 instead of HMAC_Update for
  openssl-3.0.0.
- Update documentation in python example code.
- Review fix interface, doxygen and assign null in case of error free.
- Merge PR #293: Add missing prototype. Also refactor to use the new
  shorthand function to clean up the code.
- Refactor to use sock_strerr shorthand function.
- Fix #296: systemd nss-lookup.target is reached before unbound can
  successfully answer queries. Changed contrib/unbound.service.in.
- Fix num.expired statistics output.
- Remove x file mode on ipset/ipset.c and h files.
- Spelling fix.
- Introduce test for statistics.
- Fix that prefer-ip4 and prefer-ip6 can be get and set with
  unbound-control, with libunbound and the unbound-checkconf option
  output function.
- Merge PR #311 by luismerino: Dynlibmod leak.
- Error message is logged for dynlibmod malloc failures.
- iana portlist updated.
- Fix #304: dnstap logging not recovering after dnstap process restarts
- Fix edns-client-tags get_option typo
- Fix #305: dnstap logging significantly affects unbound performance
  (regression in 1.11).
- Fix #305: only wake up thread when threshold reached.
- Fix to ifdef fptr wlist item for dnstap.
- Fix memory leak of edns tags at libunbound context delete.
- Fix double loopexit for unbound-dnstap-socket after sigterm.

Best regards, Wouter

Unbound 1.12.0rc1 pre-release is available:

compiled & work in my lab environment

DNS-over-HTTPS is supported in this release.

also tested with Firefox to be working

btw:
will there be any sort of support for
https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-01 (TYPE65)
if not, could I add TYPE65 records as local-data?

Andreas

reply on-list again...

Could you please elaborate on how DoH in Unbound is working with Firefox for you?

unbound.conf

  server:
    interface: 0.0.0.0@443
          interface: ::@443
          https-port: 443
          tls-service-pem: "/path/to/cert+intermediate.pem"
          tls-service-key: "/path/to/key.pem"

use a recent version of curl, for now 7.64.0
curl -I -v --doh-url https://your.unbound.example/dns-query https://nlnetlabs.nl

use a recent version of Firefox, for now 81.0.1

settings -> proxy
-> enable "DNS over HTTPS"
-> custom
-> https://your.unbound.example/dns-query

use "https://your.unbound.example:port/dns-query" if running DoH not on 443

close firefox
start firefox

access some random websites

about:networking#dns
-> check that "trr" is shown as yes
-> see "false" for your.unbound.example

Now, Firefox will use DoH if available or Do53. Whatever works. You will not notice any fallback to Do53.
But disabling Do53 at all is possible:
- https://wiki.mozilla.org/Trusted_Recursive_Resolver
- https://support.mozilla.org/de/kb/firefox-dns-über-https

about:config
network.trr.mode = 3

as no "classical" resolver should be used, you've to provide some glue:
the address of your.unbound.example...

about:config
network.trr.bootstrapAddress = IPv4 or IPv6 of your.unbound.example

close firefox
start firefox

access some other random websites

check about:networking#dns again
notice no entry for your.unbound.example
notice no traffic on Do53

:slight_smile:

Can't build with errors:

Undefined first referenced
symbol in file
SHA512Update /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Final /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Init /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
ld: fatal: symbol referencing errors. No output written to unbound-host
collect2: error: ld returned 1 exit status
Undefined first referenced
symbol in file
SHA512Update /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Final /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Init /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
ld: fatal: symbol referencing errors. No output written to unbound-anchor
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:358: unbound-host] Error 1
gmake: *** Waiting for unfinished jobs....
gmake: *** [Makefile:361: unbound-anchor] Error 1
libtool: link: gcc -I. -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/opt/csw/include -DSRCDIR=. -O3 -m64 -flto -std=c99 -D_REENTRANT -pthreads -m64 -flto -o unbound .libs/acl_list.o .libs/cachedump.o .libs/daemon.o .libs/shm_main.o .libs/remote.o .libs/stats.o .libs/unbound.o .libs/worker.o .libs/dns.o .libs/infra.o .libs/rrset.o .libs/dname.o .libs/msgencode.o .libs/as112.o .libs/msgparse.o .libs/msgreply.o .libs/packed_rrset.o .libs/iterator.o .libs/iter_delegpt.o .libs/iter_donotq.o .libs/iter_fwd.o .libs/iter_hints.o .libs/iter_priv.o .libs/iter_resptype.o .libs/iter_scrub.o .libs/iter_utils.o .libs/localzone.o .libs/mesh.o .libs/modstack.o .libs/view.o .libs/outbound_list.o .libs/alloc.o .libs/config_file.o .libs/configlexer.o .libs/configparser.o .libs/fptr_wlist.o .libs/edns.o .libs/locks.o .libs/log.o .libs/mini_event.o .libs/module.o .libs/net_help.o .libs/random.o .libs/rbtree.o .libs/regional.o .libs/rtt.o .libs/dnstree.o .libs/lookup3.o .libs/lruhash.o .libs/slabhash.o .libs/tcp_conn_limit.o .libs/timehist.o .libs/tube.o .libs/winsock_event.o .libs/autotrust.o .libs/val_anchor.o .libs/rpz.o .libs/validator.o .libs/val_kcache.o .libs/val_kentry.o .libs/val_neg.o .libs/val_nsec3.o .libs/val_nsec.o .libs/val_secalgo.o .libs/val_sigcrypt.o .libs/val_utils.o .libs/dns64.o .libs/cachedb.o .libs/redis.o .libs/authzone.o .libs/respip.o .libs/netevent.o .libs/listen_dnsport.o .libs/outside_network.o .libs/ub_event.o .libs/keyraw.o .libs/sbuffer.o .libs/wire2str.o .libs/parse.o .libs/parseutil.o .libs/rrdef.o .libs/str2wire.o -L/usr/local/lib -L/opt/csw/lib/64 -L/opt/csw/lib /usr/local/lib/libssl.a /usr/local/lib/libevent.a -lsendfile /usr/local/lib/libcrypto.a -lnsl -lsocket -lresolv -lrt -ldl -pthreads -R/usr/local/lib
Undefined first referenced
symbol in file
SHA512Update /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Final /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Init /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
ld: fatal: symbol referencing errors. No output written to unbound-control
collect2: error: ld returned 1 exit status
Undefined first referenced
symbol in file
SHA512Update /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Final /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Init /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
ld: fatal: symbol referencing errors. No output written to unbound-checkconf
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:355: unbound-control] Error 1
gmake: *** [Makefile:352: unbound-checkconf] Error 1
Undefined first referenced
symbol in file
SHA512Update /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Final /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
SHA512Init /usr/local/lib/libcrypto.a(getentropy_solaris.o) (symbol belongs to implicit dependency /lib/amd64/libmd.so.1)
ld: fatal: symbol referencing errors. No output written to unbound
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:349: unbound] Error 1

uses libressl 3.2.1.

Config string:

./configure --prefix=/usr/local --with-conf-file=/usr/local/etc/unbound/unbound.conf --with-username=unbound --with-ssl=/usr/local --with-libevent=/usr/local --with-libexpat=/opt/csw --with-pthreads --enable-tfo-client --disable-dsa --with-pidfile=/tmp/unbound.pid 'CFLAGS=-O3 -m64 -flto' 'CPPFLAGS=-I/usr/local/include' 'LDFLAGS=-m64 -L/usr/local/lib -L/opt/csw/lib/64 -flto' --enable-fully-static

GCC 5.5

What the principal difference with previous release which breaks build?

01.10.2020 14:12, Wouter Wijngaards via Unbound-users пишет:

Same shame with OpenSSL 1.0.2u:

Undefined first referenced
symbol in file
DSA_set0_pqg .libs/keyraw.o
DSA_set0_key .libs/keyraw.o
RSA_set0_key .libs/keyraw.o
ld: fatal: symbol referencing errors. No output written to unbound-host
collect2: error: ld returned 1 exit status
Undefined first referenced
symbol in file
DSA_set0_pqg /patch/tmp2/unbound-1.12.0rc1/.libs/libunbound.a(keyraw.o)
DSA_set0_key /patch/tmp2/unbound-1.12.0rc1/.libs/libunbound.a(keyraw.o)
RSA_set0_key /patch/tmp2/unbound-1.12.0rc1/.libs/libunbound.a(keyraw.o)
ld: fatal: symbol referencing errors. No output written to unbound-anchor
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:358: unbound-host] Error 1
gmake: *** Waiting for unfinished jobs....
gmake: *** [Makefile:361: unbound-anchor] Error 1
libtool: link: gcc -I. -I/opt/csw/include -I/opt/csw/include -I/usr/local/include -I/opt/csw/include -DSRCDIR=. -O3 -m64 -flto -std=c99 -D_REENTRANT -pthreads -m64 -flto -o unbound-checkconf .libs/unbound-checkconf.o .libs/worker_cb.o .libs/dns.o .libs/infra.o .libs/rrset.o .libs/dname.o .libs/msgencode.o .libs/as112.o .libs/msgparse.o .libs/msgreply.o .libs/packed_rrset.o .libs/iterator.o .libs/iter_delegpt.o .libs/iter_donotq.o .libs/iter_fwd.o .libs/iter_hints.o .libs/iter_priv.o .libs/iter_resptype.o .libs/iter_scrub.o .libs/iter_utils.o .libs/localzone.o .libs/mesh.o .libs/modstack.o .libs/view.o .libs/outbound_list.o .libs/alloc.o .libs/config_file.o .libs/configlexer.o .libs/configparser.o .libs/fptr_wlist.o .libs/edns.o .libs/locks.o .libs/log.o .libs/mini_event.o .libs/module.o .libs/net_help.o .libs/random.o .libs/rbtree.o .libs/regional.o .libs/rtt.o .libs/dnstree.o .libs/lookup3.o .libs/lruhash.o .libs/slabhash.o .libs/tcp_conn_limit.o .libs/timehist.o .libs/tube.o .libs/winsock_event.o .libs/autotrust.o .libs/val_anchor.o .libs/rpz.o .libs/validator.o .libs/val_kcache.o .libs/val_kentry.o .libs/val_neg.o .libs/val_nsec3.o .libs/val_nsec.o .libs/val_secalgo.o .libs/val_sigcrypt.o .libs/val_utils.o .libs/dns64.o .libs/cachedb.o .libs/redis.o .libs/authzone.o .libs/respip.o .libs/netevent.o .libs/listen_dnsport.o .libs/outside_network.o .libs/ub_event.o .libs/keyraw.o .libs/sbuffer.o .libs/wire2str.o .libs/parse.o .libs/parseutil.o .libs/rrdef.o .libs/str2wire.o .libs/explicit_bzero.o.libs/reallocarray.o .libs/arc4random.o .libs/arc4random_uniform.o .libs/arc4_lock.o .libs/getentropy_solaris.o .libs/strsep.o -L/opt/csw/lib/64 -L/opt/csw/lib -L/usr/local/lib -lssl /usr/local/lib/libevent.a -lsendfile -lrt -lsocket -lnsl -lcrypto -lmd -pthreads -R/opt/csw/lib -R/usr/local/lib
libtool: link: gcc -I. -I/opt/csw/include -I/opt/csw/include -I/usr/local/include -I/opt/csw/include -DSRCDIR=. -O3 -m64 -flto -std=c99 -D_REENTRANT -pthreads -m64 -flto -o unbound-control .libs/unbound-control.o .libs/worker_cb.o .libs/dns.o .libs/infra.o .libs/rrset.o .libs/dname.o .libs/msgencode.o .libs/as112.o .libs/msgparse.o .libs/msgreply.o .libs/packed_rrset.o .libs/iterator.o .libs/iter_delegpt.o .libs/iter_donotq.o .libs/iter_fwd.o .libs/iter_hints.o .libs/iter_priv.o .libs/iter_resptype.o .libs/iter_scrub.o .libs/iter_utils.o .libs/localzone.o .libs/mesh.o .libs/modstack.o .libs/view.o .libs/outbound_list.o .libs/alloc.o .libs/config_file.o .libs/configlexer.o .libs/configparser.o .libs/fptr_wlist.o .libs/edns.o .libs/locks.o .libs/log.o .libs/mini_event.o .libs/module.o .libs/net_help.o .libs/random.o .libs/rbtree.o .libs/regional.o .libs/rtt.o .libs/dnstree.o .libs/lookup3.o .libs/lruhash.o .libs/slabhash.o .libs/tcp_conn_limit.o .libs/timehist.o .libs/tube.o .libs/winsock_event.o .libs/autotrust.o .libs/val_anchor.o .libs/rpz.o .libs/validator.o .libs/val_kcache.o .libs/val_kentry.o .libs/val_neg.o .libs/val_nsec3.o .libs/val_nsec.o .libs/val_secalgo.o .libs/val_sigcrypt.o .libs/val_utils.o .libs/dns64.o .libs/cachedb.o .libs/redis.o .libs/authzone.o .libs/respip.o .libs/netevent.o .libs/listen_dnsport.o .libs/outside_network.o .libs/ub_event.o .libs/keyraw.o .libs/sbuffer.o .libs/wire2str.o .libs/parse.o .libs/parseutil.o .libs/rrdef.o .libs/str2wire.o .libs/explicit_bzero.o .libs/reallocarray.o .libs/arc4random.o .libs/arc4random_uniform.o .libs/arc4_lock.o .libs/getentropy_solaris.o .libs/strsep.o -L/opt/csw/lib/64 -L/opt/csw/lib -L/usr/local/lib -lssl /usr/local/lib/libevent.a -lsendfile -lrt -lsocket -lnsl -lcrypto -lmd -pthreads -R/opt/csw/lib -R/usr/local/lib
libtool: link: gcc -I. -I/opt/csw/include -I/opt/csw/include -I/usr/local/include -I/opt/csw/include -DSRCDIR=. -O3 -m64 -flto -std=c99 -D_REENTRANT -pthreads -m64 -flto -o unbound .libs/acl_list.o .libs/cachedump.o .libs/daemon.o .libs/shm_main.o .libs/remote.o .libs/stats.o .libs/unbound.o .libs/worker.o .libs/dns.o.libs/infra.o .libs/rrset.o .libs/dname.o .libs/msgencode.o .libs/as112.o .libs/msgparse.o .libs/msgreply.o .libs/packed_rrset.o .libs/iterator.o .libs/iter_delegpt.o .libs/iter_donotq.o .libs/iter_fwd.o .libs/iter_hints.o .libs/iter_priv.o .libs/iter_resptype.o .libs/iter_scrub.o .libs/iter_utils.o .libs/localzone.o .libs/mesh.o .libs/modstack.o .libs/view.o .libs/outbound_list.o .libs/alloc.o .libs/config_file.o .libs/configlexer.o .libs/configparser.o .libs/fptr_wlist.o .libs/edns.o .libs/locks.o .libs/log.o .libs/mini_event.o .libs/module.o .libs/net_help.o .libs/random.o .libs/rbtree.o .libs/regional.o .libs/rtt.o .libs/dnstree.o .libs/lookup3.o .libs/lruhash.o .libs/slabhash.o .libs/tcp_conn_limit.o .libs/timehist.o .libs/tube.o .libs/winsock_event.o .libs/autotrust.o .libs/val_anchor.o .libs/rpz.o .libs/validator.o .libs/val_kcache.o .libs/val_kentry.o .libs/val_neg.o .libs/val_nsec3.o .libs/val_nsec.o .libs/val_secalgo.o .libs/val_sigcrypt.o .libs/val_utils.o .libs/dns64.o .libs/cachedb.o .libs/redis.o .libs/authzone.o .libs/respip.o .libs/netevent.o .libs/listen_dnsport.o .libs/outside_network.o .libs/ub_event.o .libs/keyraw.o .libs/sbuffer.o .libs/wire2str.o .libs/parse.o .libs/parseutil.o .libs/rrdef.o .libs/str2wire.o .libs/explicit_bzero.o .libs/reallocarray.o .libs/arc4random.o .libs/arc4random_uniform.o .libs/arc4_lock.o .libs/getentropy_solaris.o .libs/strsep.o -L/opt/csw/lib/64 -L/opt/csw/lib -L/usr/local/lib -lssl /usr/local/lib/libevent.a -lsendfile -lrt -lsocket -lnsl -lcrypto -lmd -pthreads -R/opt/csw/lib -R/usr/local/lib
Undefined first referenced
symbol in file
DSA_set0_pqg .libs/keyraw.o
DSA_set0_key .libs/keyraw.o
RSA_set0_key .libs/keyraw.o
ld: fatal: symbol referencing errors. No output written to unbound-checkconf
collect2: error: ld returned 1 exit status
Undefined first referenced
symbol in file
DSA_set0_pqg .libs/keyraw.o
DSA_set0_key .libs/keyraw.o
RSA_set0_key .libs/keyraw.o
ld: fatal: symbol referencing errors. No output written to unbound-control
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:352: unbound-checkconf] Error 1
gmake: *** [Makefile:355: unbound-control] Error 1
Undefined first referenced
symbol in file
DSA_set0_pqg .libs/keyraw.o
DSA_set0_key .libs/keyraw.o
RSA_set0_key .libs/keyraw.o
ld: fatal: symbol referencing errors. No output written to unbound
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:349: unbound] Error 1

06.10.2020 22:07, Yuri пишет:

Ooops, forgot about my own workaround. :slight_smile:

(on Solaris) To avoid with LibreSSL require to add -lmd to LDFLAGS:

./configure --prefix=/usr/local --with-conf-file=/usr/local/etc/unbound/unbound.conf --with-username=unbound --with-ssl=/usr/local --with-libevent=/usr/local --with-libexpat=/opt/csw --with-pthreads --enable-tfo-client --disable-dsa --with-pidfile=/tmp/unbound.pid 'CFLAGS=-O3 -m64 -flto' 'CPPFLAGS=-I/usr/local/include' 'LDFLAGS=-m64 -L/usr/local/lib -L/opt/csw/lib/64 -flto -lmd' --enable-fully-static

(however better to add it in configure by auto, of course)

06.10.2020 22:12, Yuri пишет: