Jellyfin reachability is layered: discovery, name resolution, routing, firewall policy, and remote NAT can fail independently.
A client may fail to discover a server while a direct local URL works, or reach the LAN while remote access fails outside the home. Those symptoms look similar at the screen but belong to different network layers. Test the shortest path first and add layers only when the earlier one is known to work.
Discovery Is Not Basic Reachability
Automatic discovery helps a client find a server, but a direct address and service port can work even when discovery does not. Treating discovery as proof of total reachability creates the wrong test.
The layered reachability model model separates local discovery from direct access and shows why the two results can diverge.
A failed discovery result should narrow the test to multicast, client isolation, or local policy rather than immediately implicating the server process.
DNS and Routing Are Separate Layers
A name can resolve to an address while the client still lacks a route, firewall permission, or usable interface. VPNs, split DNS, and multiple network interfaces make this separation especially important.
Use DNS routing to distinguish DNS resolution from packet routing and path selection.
If the name resolves but the port is unreachable, the evidence has moved past DNS.
Remote Reachability Adds NAT and Policy
Remote sessions add public addressing, NAT behavior, firewall rules, proxy or VPN paths, and often a different upload budget. A local success does not prove that the external path can reach the same service.
The layered reachability model architecture explains how remote layers extend the local path rather than replacing it.
The boundary flips when the failure appears only outside the LAN; investigate NAT, firewall, proxy, or upload conditions before local discovery.
Use a Shortest-Path Reachability Map
Test direct local address, local name, remote name, service port, and then the full client workflow. Record which layer first changes from reachable to unreachable.
Use DNS and routing to keep the test layer-specific and avoid changing several network variables at once.
Stop once one layer explains the failure. A successful lower layer is evidence to move upward, not permission to rewrite the whole network.
Tech & AI HUB
More to Read

Can Home Cameras Synchronize Events Without Cloud Time Services?
A mechanism-first explanation of camera time without cloud, its shared-resource tradeoffs, three query-fanout FAQs, and a practical verification protocol.

Can a Local AI Service Detect Corrupted Model Layers Before Inference?
A mechanism-first explanation of corrupted model-layer detection, its shared-resource tradeoffs, three query-fanout FAQs, and a practical verification protocol.

Can a RAG System Be Restored Without Regenerating Every Embedding?
A mechanism-first explanation of rag restore without reembedding, its shared-resource tradeoffs, three query-fanout FAQs, and a practical verification protocol.

