Bug 1999691

Summary: bind does not listen on all addresses over TCP when listen-on/listen-on-v6 has specific IPs or any listed
Product: Red Hat Enterprise Linux 9 Reporter: Petr Menšík <pemensik>
Component: bindAssignee: Petr Menšík <pemensik>
Status: CLOSED ERRATA QA Contact: Petr Sklenar <psklenar>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 9.0CC: mruprich, pavel, pemensik, psklenar, zdohnal
Target Milestone: rcKeywords: Triaged
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: bind-9.16.20-5.el9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1999334
: 1999857 (view as bug list) Environment:
Last Closed: 2022-05-17 13:24:10 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1999334    
Bug Blocks: 1999857    
Attachments:
Description Flags
reproducer.sh none

Description Petr Menšík 2021-08-31 15:15:10 UTC
+++ This bug was initially created as a clone of Bug #1999334 +++

Description of problem:
On boot, named will not listen on TCP sockets of all specified (or any) IP addresses. This appears to be an ordering problem during startup. When service is restarted by hand, it starts listening on TCP too.

Version-Release number of selected component (if applicable):
bind-9.16.20-3.fc34.x86_64

How reproducible:
Always.

Steps to Reproduce:
1. Configure specific IPs in listen-on/listen-on-v6 directives or any.
2. Boot machine with named-chroot service enabled.
3. Named only listening on all IPs over UDP.

Actual results:
Listens on all addresses over UDP only.

Expected results:
Should listen on TCP too, not just on the loopback address.

Additional info:
I tried adding:
-----
[Unit]
Wants=network-online.target
After=network-online.target
-----

in /etc/systemd/system/named-chroot.service.d/named-chroot.conf file and that did help.

--- Additional comment from Petr Špaček on 2021-08-31 09:21:39 CEST ---

I think this is related to upstream issue #2852, please continue there.

--- Additional comment from Petr Menšík on 2021-08-31 16:15:17 CEST ---

Indeed, Petr seems to be correct, it looks related to upstream issue linked.

Can you please check journalctl would contain additionally listening?

journalctl -xeu named-chroot | grep 'additionally listening'

I were unable to reproduce this issue on my test machine. My named listens on all IPs with both UDP and TCP, checked by:
lsof -n -p $(pidof named) | grep :domain

Is this issue reproducible on every reboot on your system?
Would "rndc scan" command fix missing listeners?

--- Additional comment from Petr Menšík on 2021-08-31 17:06:24 CEST ---

I were able to reproduce this issue with reproducer script provided on upstream. It seems reliable when named starts and passes scanning of addresses in correct place.

Comment 1 Petr Menšík 2021-10-12 11:35:12 UTC
Can be fixed on 9.16 just by removing obsolete code.

Comment 2 Petr Menšík 2021-10-12 11:36:45 UTC
Created attachment 1832191 [details]
reproducer.sh

Reproducer script emulating race condition during startup.

Comment 15 errata-xmlrpc 2022-05-17 13:24:10 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (new packages: bind), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:2502