Blog
Same machine, same network: Safari opens it by name, Chrome says the name does not exist. It is not the local network permission, and not secure DNS. It is a difference in where each browser asks.
You put a machine on the office network so that people can reach it as something.local. Safari opens it. Chrome does not — and the error is not “server not found” but DNS_PROBE_FINISHED_NXDOMAIN, which means a DNS server actively answered “no such name.”
We hit this while installing our own AI server, and tracked the cause down on real hardware. Here is what we found.
The local network permission. macOS asks an app for permission before it may discover devices on the same network. Chrome already had it. And if permission were the problem you would get a connection error, not “this name does not exist.”
Secure DNS (DoH) in the browser. With it enabled, lookups go to an encrypted resolver instead of the system one. This was our main suspect at first. Turning it off changed nothing.
We stopped guessing and queried the name directly, changing only who we asked.
| Who we asked | Answer |
|---|---|
| The office router’s DNS | No such name (NXDOMAIN) |
| Two public DNS services | No such name (NXDOMAIN) |
| The machine’s own mDNS responder | Returns the correct address |
The pattern is unambiguous: every ordinary DNS server says the name does not exist, and only the machine itself can answer for it.
.local is not a name you look up in ordinary DNS. It is reserved for multicast DNS (RFC 6762), in which devices on the same network segment answer for themselves. Queries go out as multicast, and routers play no part in it.
This is not a misconfiguration, then. It is a difference in design: one browser delegates name resolution to the OS, the other does it itself. Neither is wrong, but the consequence lands on whoever ships the device.
There are only two ways to publish a name on a network: mDNS, or a DNS server. mDNS can serve .local and nothing else, and the Windows-oriented alternatives (LLMNR, NetBIOS) do nothing on macOS. However hard the device tries, it cannot reach a browser that insists on asking ordinary DNS.
Worth adding: mDNS cannot cross an L3 VPN either (L2TP/IPsec, WireGuard and the like), because multicast does not leave the local segment. Reaching a device by name from outside the office is not something that can be made to work.
Our AI server shows the address you should connect to on a small display on the unit itself. The standard procedure is now simply to open the address shown on that display. It depends on no name at all, so there is nothing to get stuck on.
We had in fact built a mechanism for issuing a per-customer name from our side. Then we decided not to use it, for two reasons.
The hook for using a name is still there. Register your own domain in your own DNS and the address line on the display becomes that name, falling back to the IP automatically when the name will not resolve. A name is something you bring yourself, if you want one.
While the name was the headline, people typed exactly what the display told them and still could not get in. That is the worst kind of failure, because the product itself was giving the wrong instruction. Whether a name resolves depends on the visitor’s device and its settings — something a vendor does not control — so a product must not assume one.
Giving a machine a friendly name feels like a kindness. Printing an address that does not open is not. Keep the name as a convenience, and let the address that always works be the one you put first.