DHCP failing to update DNS
SUGGESTION: You need to make sure that the reverse DNS is properly setup for the zone. I believe DNS auto-update populates both the forward (name to IP) and the reverse (IP to name) zones. If the reverse zone is not setup properly, the update could fail and give this errors. Bed reverse DNS can also trigger other strange behavior.
ALSO: It is not a problem to have DC, DNS and DHCP on the same server, unless the network is huge. However, you absolutely need to setup a second DC. Without a working DC, your network becomes a bunch of paperweights.
I had this similar issue and performed the below checks before coming up with a fix.
Verify if the server or the service account that is used to dynamically update dns from DHCP is added into the inbuilt security group "DnsUpdateProxy". The latter option would be the suggested and preferred one.
Make sure that the dhcp credentials are present on the server to dynamically update the dns. You can verify it using the command "netsh dhcp server show dnscredentials". If the credentials are not updated ,you can do the same using command "netsh dhcp server set dnscredentials". Also note that the correct credentials have to be updated here same as they have been updated through the rest of the domain environment.
Verify if the service account has adequate permissions on the PTR record for which the dynamic update is failing. This in my case fixed the issue. I had a check on the ACL permissions of one PTR record on the reverse lookup zone for which the dynamic update was failing. It only had read permissions. I manually updated the permissions for the service account with write privileges on the PTR record. Later I flushed the dns of the client machine running under that ip using "ipconfig /flushdns", registered it back with "ipconfig /regdns" and BAAM !!!, the dynamic update passed. Later i was able to correct the security settings for the service account on the reverse lookup zone where the dns update was failing and the issue has now been resolved.