Subject: | Mishandling of illegal/null hostname in DHCP v4/v6 - including changing the hostname mid-lease |
From Support ticket #10815, bug ticket #43786:
Part and parcel of the same thing, Bluecat have also observed:
> We should also check the behavior of option 39 in dhcpv6 and option 81
> in v4 as there could be similar issues around handling those options
> when client sends an illegal value.
Then it starts to get more interesting... Fernando said:
> Another case to be considered is if DHCP is doing DNS updates and a
> client requests a renewal of a lease that originally had a hostname
> set and the renewal comes with an empty hostname. In that case, I
> believe the DHCP should remove the record from DNS, so not always we
> want to ignore an empty hostname. I think it should be treated as if
> the option was not set at all.
And then they went off and tested what happened - and it was not good - at least, it was not good for DHCPv6:
> First scenario - comparing v4 and v6:
> =================
> This is DHCPv4 behavior:
> 1. Client sends DHCP request with client FQDN.
> 2. DHCP server sends DDNS update to add DNS records.
> 3. Client sends DHCP request, without client FQDN.
> 4. DHCP server sends DDNS update to remove DNS records.
> 5. Client sends DHCP request with the same client FQDN.
> 6. DHCP server sends DDNS update to add DNS records.
>
> This is DHCPv6 behavior:
> 1. Client sends DHCP request with client FQDN.
> 2. DHCP server sends DDNS update to add DNS records.
> 3. Client sends DHCP request, without client FQDN.
> 4. DHCP server does not send DDNS update to remove DNS records.
> 5. Client sends DHCP request with the same client FQDN.
> 6. DHCP server does not send DDNS update to add DNS records.
>
> =====================
>
> Step #4 in v6 seems to be an issue, right?
> Step #6 could be an issue only if step #4 had removed the record.
> So what if the client updates the fqdn on a renewal?
> See below:
>
> =================
> DHCPv4 behavior:
> 1. Client sends DHCP request with FQDN-1.
> 2. DHCP server sends DDNS update to add DNS records for FQDN-1.
> 3. Client sends DHCP request with FQDN-2.
> 4. DHCP server sends DDNS update to remove DNS records for FQDN-
> 1.
> 5. DHCP server sends DDNS update to add DNS records for FQDN-2;
> 6. Client sends DHCP release.
> 7. DHCP server sends DDNS update to remove DNS records for FQDN-
> 2.
>
> DHCPv6 behavior:
> 1. Client sends DHCP request with FQDN-1.
> 2. DHCP server sends DDNS update to add DNS records for FQDN-1.
> 3. Client sends DHCP request with FQDN-2.
> 4. DHCP server does not send DDNS update to remove DNS records
> for FQDN-1.
> 5. DHCP server does not send DDNS update to add DNS records for
> FQDN-2.
> 6. Client sends DHCP release.
> 7. DHCP server sends DDNS update to remove DNS records for FQDN-
> 1.
> =================
>
> Steps #4 and #5 are issues in dhcpv6