Fix: Plex Offline Download Not Working

The issue of Plex downloads not working on devices has been ongoing for years and has been a frustration for many Plex users.

Many are wondering why Plex has issues downloading media for offline use. Plex has no issues transcoding, direct streaming, and direct playing media from their server, but for some reason, it can't download the files.

This article will briefly explain the issue as well as some solutions you can use to correct the problem.

Fix: Plex Media Server Offline Download Not Working

The Plex offline download issue

For those that don't know, the issue is that a user isn't able to download media from a Plex server to their client so the media can be played offline. When a user attempts to download the media, the download fails.

The root cause of this issue is Plex uses DNS rebinding for its plex.direct domain, which is used to download media for offline viewing. The reason the download features work this way is that Plex establishes a secure connection to the Plex server.

If you were to examine the DNS requests made when downloading media to a client, you will notice requests in the format: https://{ip_address}.{string_value}.plex.direct.

The workaround to resolve this issue depends on how the DNS is configured on your network. Below are several fixes for common routers and DNS services.

Change the router DNS servers

The first solution is to change the DNS servers that are defined by your router. Many users may be using their ISP DNS server, which would mitigate DNS rebinding attacks. These mitigations would prevent Plex from downloading media for offline viewing.

To resolve this, try changing the DNS settings in your router to one of the following:

After changing the DNS, you may need to flush the DNS cache on your client, if possible, or wait some time for the cache to expire.

Router settings

Your router may also have a DNS rebinding setting that is enabled. Each router is different so attempting to provide steps would be impossible. Check your router settings - it could be in a section labeled DNS - for a DNS rebind setting and disable it.

OpenDNS

The OpenDNS DNS service was one of the recommended services to use for DNS, however, there is an option that could mitigate DNS rebinding. If you find that changing to OpenDNS still won't allow you to download your media, do the following:

  1. Log into your OpenDNS account.
  2. Click the Settings tab.
  3. Select your network from the list.
  4. From the menu on the left, click the Security link.
  5. Uncheck the Block internal IP addresses checkbox.
  6. Click the Apply button.

You may need to wait a few minutes for the setting to take effect, and also wait for your local DNS cache to expire.

pfSense

pfSense includes an internal DNS resolver service that could prevent DNS rebinding. You will want to adjust that setting, by doing the following:

  1. From the pfSense administrative Web UI, go to Services->DNS Resolver.
  2. Click the Display Custom Options button if the Custom options edit field isn't displayed.
  3. Enter the following in the Custom options edit field:
    server:private-domain: "plex.direct"
  4. Click the Save button.

OPNSense

You will need to add the plex.direct domain to the Alternate Hostnames by doing the following:

  1. From the OPNSense Web UI, navigate to System->Settings->Administration.
  2. In the Alternate Hostnames field enter:
    plex.direct

You may also need to check the Disable DNS Rebinding Checks if you are still having issues downloading media to your client.

dnsmasq

If you are using dnsmasq, such as with DD-WRT, you can add the following to your dnsmasq configuration file:

rebind-domain-ok=/plex.direct/

For DD-WRT users, you can add it to the Advanced Settings edit field in the dnsmasq settings.

Unbound

Unbound is a popular upstream DNS option that can be self-hosted on a local device. If you use unbound, you can create a new config file in /etc/unbound/unbound.conf.d/plex.conf and then add the following:

rebind-domain-ok=/plex.direct

Pi-hole

If you use Pi-hole on your network for DNS you can add the plex.direct URL for your Plex server to the list of local DNS domains. This will have Pi-hole resolve the plex.direct URL to your server without having to worry about other upstream DNS servers.

To add your server's plex.direct URL to Pi-hole use the following steps:

  1. You will need to first get the Plex token for your server.
  2. Next, you can get a client ID by making a request to the Get Devices API and look for an ID in the clientIdentifier attribute.
  3. With the token and client identifier you will need to make the following API request to plex.tv:
    https://plex.tv/api/v2/resources?X-Plex-Client-Identifier={client_id}&X-Plex-Token={plex_token}&includeHttps=1
  4. In the response, use the value in the uri attribute in the connection element. You will just use the domain without the https:// and the port number.
  5. Log into your Pi-hole and navigate to Local DNS->DNS Records.
  6. Enter the domain in the Domain: field at the top and the IP address of your Plex server in the IP Address: field.
  7. Click the Add button to add the plex.direct server domain to Pi-hole.

You Pi-hole will now automatically resolve your server's plex.direct domain to the IP address of your server.

Any of the above solutions require you to make changes to your local network settings, which means you will need access to the network. Once the changes are made, however, you should not need to make them again.

If you do plan on downloading media for offline viewing, you should do so while on your local network instead of downloading the files remotely. This will ensure that if there is an issue, you can diagnose it locally rather than from the Internet.

Subscribe
Display