I'm confused by this too. I use the default mDNS/DNS-SD and access my hosts with the .local TLD. It's not as robust as real DNS (looking at you Android) but works fine on the Windows and Linux hosts.
How did you make it work with Windows hosts? Apple Bonjour? Windows out of the box works fine with LLMNR, but mDNS/DNS-SD is a problem and is available only for "modern" apps, it is not integrated with system resolver.
My use case is accessing Samba shares on a Linux server from a Windows desktop, and it works with Windows Explorer and even older apps like the original Windows Media Player with no configuration or installation of any additional software.
SMB has its own discovery protocol, that powered the "Network Neighbourhood" since Windows 95 - and it is part of the deprecated SMB1, so modern Samba has a special mode, where the discovery part is enabled, but the rest is disabled. Additionally, Windows can discover SMB shares via WS-Discovery. Samba itself does not support WSD, but there are third-party utilities like wsdd, that will do it instead. Some linux-based NAS-es, like those from Synology, also ship with WSD support enabled out of the box.
My experience with Windows 10 and mDNS/DNS-SD mirrors that from the linked article. As a result, I have now a real DNS domain, with devices with their own A records :/
It's not that. I confirmed with Wireshark mDNS queries are being sent from the Windows side and answered from Linux using the Avahi service. Furthermore, web hosting I have on that Linux server also works in Firefox just by visiting the server's host name.
DNS issues have, more often than not, caused networking slow downs for me. Running a recursive DNS server on a home network is quite a bit slower than using a public DNS server on a high speed network; the slowdown with a local cache is less, but still there. Just directly using 8.8.8.8/8.8.4.4 or 9.9.9.9 or 1.1.1.1 or 4.2.2.1 is best (faster, more reliable) in my experience: Fewer moving parts. There are significant privacy and security issues with using DDNS addresses which can be resolved by public DNS servers.
For the record, I have written a DNS server from scratch. Three times, actually (try 1, which is still the authoritative DNS server I use for my domains, try 2 which is a tiny caching DNS server, and try 3 -- which, yes, reuses code from try 2 -- is a very flexible DNS server which uses Lua for configuration).
Your external DNS server is quicker than a local cache? My local cache adds less than 1 millisecond latency to an uncached lookup, and answers queries for all LAN computers in less than 1 millisecond as well.
My DNS server is pretty fast under ideal circumstances (under 0.07ms per reply using 2000 era hardware as per https://maradns.samiam.org/speed.comparison.html ). I’m sure you’re not getting 1ms in less-than-ideal circumstances (router overloaded and dropping packets, which sometimes happens on my home network), where that extra DNS server starts to really slow things down.
Ya my network never drops packets, at least for congestion reasons. Seems like congestion will affect external servers at least as much as internal ones, though.
(Access to my DNS server is not routed on my LAN, it's a flat network.)
Isn't this solved by using dynamic dns updates?
I've been running a native ipv6 home network for a few years and have not run into any issues. I access my servers by their hostnames.