Problem: DHCP "not authoritative for..."

Kudos @ahrnke and @pepe

Problem

/var/log/daemon.log shows entries like

Oct 19 20:09:02 ucs42 dhcpd[7640]: DHCPINFORM from 192.168.156.xx1 via eth0: not authoritative for subnet 192.168.156.0

Environment

The configuration is missing the “authoritative” statement

from man 5 dhcpd.conf:

The authoritative statement

         authoritative;

         not authoritative;

         The DHCP server will normally assume that the configuration information about a given network segment is not known to be correct and is not authoritative.  This is so that if a  naive  user
         installs  a  DHCP server not fully understanding how to configure it, it does not send spurious DHCPNAK messages to clients that have obtained addresses from a legitimate DHCP server on the
         network.

         Network administrators setting up authoritative DHCP servers for their networks should always write authoritative; at the top of their configuration file to indicate that  the  DHCP  server
         should  send  DHCPNAK  messages  to misconfigured clients.  If this is not done, clients will be unable to get a correct IP address after changing subnets until their old lease has expired,
         which could take quite a long time.

         Usually, writing authoritative; at the top level of the file should be sufficient.  However, if a DHCP server is to be set up so that it is aware of some networks for which it is authorita‐
         tive and some networks for which it is not, it may be more appropriate to declare authority on a per-network-segment basis.

         Note  that  the  most specific scope for which the concept of authority makes any sense is the physical network segment - either a shared-network statement or a subnet statement that is not
         contained within a shared-network statement.  It is not meaningful to specify that the server is authoritative for some subnets within a shared network, but not  authoritative  for  others,
         nor is it meaningful to specify that the server is authoritative for some host declarations and not others.

Solution

Command Line

Given that the the DHCP-Service provided by UCS should act as authoritative it is required to add a “DHCP statements” policy as mentioned in Further DHCP policies which at least should contain the “authoritative” configuration.
Example:

$ udm policies/dhcp_statements list

DN: cn=default dhcp statements,cn=statements,cn=dhcp,cn=policies,dc=...
  authoritative: yes
  boot-unknown-clients: None
  getLeaseHostnames: None
  ldapFilter: None
  name: default dhcp statements
  pingCheck: None
  serverIdentifier: None
  serverName: None

If there is no policy with an “authoritative” variable you have to create it. Use either web based UMC or use udm as follows:

udm policies/dhcp_statements create --position "cn=policies,dc=domain,dc=de" --set name="DHCP authoritative" --set authoritative=yes

Once the policy is created, attach it to the DHCP service (Again, through UMC or udm):


udm dhcp/service modify --dn "cn=domain.de,cn=dhcp,dc=domain,dc=de" --policy-reference  "cn=DHCP authoritative,cn=policies,dc=domain,dc=de"
$ udm dhcp/service list

DN: cn=servicename,cn=dhcp,...
  service: servicename
  [...]
  univentionPolicyReference: cn=DHCP authoritative,cn=policies,dc=domain,dc=de

Web based with UMC as Web-UI

Navigate to Domain --> DHCP --> RIGHT click on Domain --> select Policies
Select Policy "DHCP Statement” and RIGHT click to Edit Policy
Set “Authoritative” to “Yes

image

Mastodon