Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-6510

bind9.16 named does not restart when binding to secondary ipv4 or ipv6 address

    • None
    • Moderate
    • rhel-sst-cs-net-perf-services
    • ssg_core_services
    • None
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • If docs needed, set a value
    • None

      Description of problem:

      bind9 does not start at bootup if binding to secondary ip addresses

      Version-Release number of selected component (if applicable):

      9.16.23-0.7.el8

      How reproducible:

      always

      Steps to Reproduce:
      1. create secondary IPv4 and IPv6 addresses in /etc/sysconfig/network-scripts/ifcfg-eth0

      IPADDR=192.168.2.29
      IPADDR1=192.168.2.19
      [...]
      IPV6ADDR=xxxx::29/64
      IPV6ADDR_SECONDARIES=xxxx::19/64

      2. verify that those are created when the system is fully online:

      ip addr show
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
      link/ether e4:5f:01:98:ba:57 brd ff:ff:ff:ff:ff:ff
      inet 192.168.2.29/24 brd 192.168.2.255 scope global noprefixroute eth0
      valid_lft forever preferred_lft forever
      inet 192.168.2.19/24 brd 192.168.2.255 scope global secondary noprefixroute eth0
      valid_lft forever preferred_lft forever
      inet6 xxxx:6b1f:325b:899f:3772/64 scope global dynamic noprefixroute
      valid_lft 2591901sec preferred_lft 14301sec
      inet6 xxxx::19/64 scope global noprefixroute
      valid_lft forever preferred_lft forever
      inet6 xxxx::29/64 scope global noprefixroute
      valid_lft forever preferred_lft forever
      inet6 fe80::c3a:706d:ea57:181e/64 scope link noprefixroute
      valid_lft forever preferred_lft forever

      3. bind named to the secondary ip addresses: (named.conf):

      [...]
      listen-on port 53

      { 127.0.0.1; 192.168.2.19; }

      ;

      listen-on-v6 port 53

      { xxxx::19; ::1; }

      ;

      options {
      [...]
      query-source address 192.168.2.19;
      notify-source 192.168.2.19;
      transfer-source 192.168.2.19;
      query-source-v6 address xxxx::19;
      notify-source-v6 xxxx::19;
      transfer-source-v6 xxxx::19;
      [...]
      }
      [...]

      4. restart the system

      5. check journalctl -e -u named

      [...]
      Aug 25 22:06:32 thing2.intermeta.com named[367]: listening on IPv4 interface lo, 127.0.0.1#53
      Aug 25 22:06:32 thing2.intermeta.com named[367]: listening on IPv6 interface lo, ::1#53
      Aug 25 22:06:32 thing2.intermeta.com named[367]: generating session key for dynamic DNS
      Aug 25 22:06:32 thing2.intermeta.com named[367]: sizing zone task pool based on 11 zones
      Aug 25 22:06:32 thing2.intermeta.com named[367]: none:89: 'max-cache-size 90%' - setting to 7031MB (out of 7812MB)
      Aug 25 22:06:32 thing2.intermeta.com named[367]: could not get query source dispatcher (192.168.2.19#0)
      Aug 25 22:06:32 thing2.intermeta.com named[367]: loading configuration: address not available
      Aug 25 22:06:32 thing2.intermeta.com named[367]: exiting (due to fatal error)
      Aug 25 22:06:32 thing2.intermeta.com systemd[1]: named.service: Control process exited, code=exited status=1
      Aug 25 22:06:32 thing2.intermeta.com systemd[1]: named.service: Failed with result 'exit-code'.
      Aug 25 22:06:32 thing2.intermeta.com systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).

      6. tweak named.service file:

      • remove After=network.target
      • add After=network-online.target
      • Add Wants=network-online.target

      7. check journalctl -e -u named

      Aug 25 22:11:42 thing2.intermeta.com named[581]: listening on IPv4 interface lo, 127.0.0.1#53
      Aug 25 22:11:42 thing2.intermeta.com named[581]: listening on IPv4 interface eth0, 192.168.2.19#53
      Aug 25 22:11:42 thing2.intermeta.com named[581]: listening on IPv6 interface lo, ::1#53
      Aug 25 22:11:42 thing2.intermeta.com named[581]: listening on IPv6 interface eth0, xxxx::19#53
      Aug 25 22:11:42 thing2.intermeta.com named[581]: generating session key for dynamic DNS
      Aug 25 22:11:42 thing2.intermeta.com named[581]: sizing zone task pool based on 11 zones
      Aug 25 22:11:42 thing2.intermeta.com named[581]: none:89: 'max-cache-size 90%' - setting to 7031MB (out of 7812MB)
      Aug 25 22:11:42 thing2.intermeta.com named[581]: could not get query source dispatcher (xxxx::19#0)
      Aug 25 22:11:42 thing2.intermeta.com named[581]: loading configuration: address not available
      Aug 25 22:11:42 thing2.intermeta.com named[581]: exiting (due to fatal error)
      Aug 25 22:11:42 thing2.intermeta.com systemd[1]: named.service: Control process exited, code=exited status=1
      Aug 25 22:11:42 thing2.intermeta.com systemd[1]: named.service: Failed with result 'exit-code'.
      Aug 25 22:11:42 thing2.intermeta.com systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).

      Actual results:

      Rebooting a system where named listens on secondary addresses fails to start named. When using "network.target", the service is started before the secondary IPv4 address is online. When using "network-online.target", the service is started before the secondary IPv6 address is online. In any case, named does not start. Logging into the system and running `systemctl restart named` starts the named reliably.

      Expected results:

      named should start reliably after reboot when binding to secondary IP addresses.

      Additional info:

              pemensik@redhat.com Petr Mensik
              jira-bugzilla-migration RH Bugzilla Integration
              Petr Mensik Petr Mensik
              rhel-cs-infra-services-qe rhel-cs-infra-services-qe rhel-cs-infra-services-qe rhel-cs-infra-services-qe
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated: