When it breaks, it isn't always obvious or easy to fix, but can cause problems for anything that has to talk to anything else. The biggest thorn it puts in my side is that short names [ThisPC] are served differently than fqdn [ThisPC.MyDomain.com]. Does NotMyApp use short or FQDN to resolve other machines? I don't find out until the Wireshark.
Okey, I understand this is fundamental and when not working can cause the service to stop working.
But I don't yet know how does it break or is not easy to troubleshoot?
Haven't hosted anything big yet, so I always just had to check the records via "dig" command if they are served correctly.
DNS setups can get fairly complicated with enterprise VPNs and stuff, but the main thing is probably just that DNS is built entirely around caching, so when something does go wrong or you’re trying to update something it’s easy for there to be a stale value somewhere. It’s also really fundamental, so when it breaks it can break anything.
Overall, though, DNS isn’t terribly complex. It’s mostly just a key-value store with some caching. Running your own nameservers is pretty cool and will give you a much better understanding of how it all fits together and scales.
Really annoying is when recent devices don't respect the DNS you're advertising or allow configuration (Android...)
My site is behind CGNAT on IPv4 with recently added fully routed IPv6. There are legacy control devices all over it that don't speak IPv6, with local DNS records that allow them to be readily accessed while walking around with a mobile device... Allowed them to be accessed that is, until IPv6.
The Android IPv6 stack ignores the RA for my local DNS and also resolves via v6 by default, forwarding local queries upstream and returning no results. Then it doesn't bother to fall back to v4. Unrooted Android has no exposed configuration for IPv6 of any sort to modify its behaviour, no hosts file to override or any way I can see to fix this. I can't even disable IPv6 on my phone.
So to access my local devices from Android I need to use their full IPv4 address or VPN back into my own network... Oh wait, the stack is so broken that despite setting DNS in Wireguard, it still tries to resolve through upstream v6 first!
Apparently recent smart TVs are doing similar even on IPv4, hard-coded to 1.1.1.1 or 8.8.8.8 to dodge ad blocking, which is plain malicious and ignores all standards...