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

Why Does Home Assistant Architecture Change as a Home Server Adds More Services?
More services change Home Assistant architecture when they add shared state, queues, devices, update cycles, or failure domains—not merely more containers.

How to Measure Home Assistant Performance Without Mistaking Cache for Capacity
A warm result proves reuse, not capacity. Measure cold start, warm steady state, repeated load, tail latency, and the first resource that saturates.

How Much Automation Concurrency Does Home Assistant Need for Whole-Home Control?
Most whole-home automations need only bounded overlap; size concurrency from run duration × trigger rate, then cap it at downstream-safe capacity.

