CG-NAT Blocks IPv4 Remote Streaming. I want to enable exclusive remote streaming over IPv6

Server Version#: 1.41.7.9717 (Windows)
Player Version#: 10.26.0.2578 (6cc7ea1a) Android TV and Phone

Since I currently have broadband service at home with the small ISP TeleCentro in Argentina, which unfortunately uses the CG-NAT system, direct remote streaming is blocked by CG-NAT. Since it’s highly unlikely my ISP will agree to my constant requests and complaints to be removed from CG-NAT and placed on the public Dynamic IP system, I need you to explain in detail how to configure my Plex server and remote client apps outside my home on Android TV/smartphone devices so that remote streaming is done exclusively using the IPv6 protocol. This way, I can bypass the CG-NAT block on the obsolete IPv4 protocol. I’m wondering what the “Enable IPv6 Support” configuration option is for on my Plex server, if it only uses the obsolete IPv4 protocol. Both my home internet connection and my remote office connections outside my home already support IPv6, and ISPs already assign public IPv6 internet numbers. For this reason, I would like you to explain all the details for achieving remote live streaming using the excellent IPv6 protocol exclusively, and abandoning the obsolete IPv4.
With remote live streaming exclusively over IPv6, I will once again have 4K (2160p) HDR quality on my remote devices.
Thank you.

1 Like

I believe you need to set up a custom access URL but I may be wrong about this.

  1. Purchase a domain name (if you don’t already have one)
  2. Set up a Cloudflare account (free plan is sufficient) to manage DNS records
  3. Create an AAAA record for your domain pointing to your server’s IPv6 address
  4. Install a reverse proxy (such as Caddy, Nginx, or Traefik) on your Plex server
  5. Configure the proxy to handle HTTPS connections and forward them to your local Plex server
  6. Set up automatic SSL certificate generation through Let’s Encrypt

To address the issue of changing IPv6 addresses, you can implement an automated solution using this script: GitHub - cetteup/update-plex-ipv6-access-url: DynDNS-like tool for keeping your Plex IPv6 custom access URL up to date

Unfortunately, everything you’re explaining was done by my ISP technician at my home and at the ISP’s central office, but to no avail.
And the worst part is that apparently, my ISP no longer has or doesn’t have any public IPv4 numbers available outside of the CG-NAT.
I also forgot to mention that direct remote streaming doesn’t work with Tailscale tunnel either.

Do you know of a way to configure remote streaming identical to how it’s used with IPv4 in IPv6, but completely turning off IPv4 in Plex and having it only detect and use IPv6 by default?

1 Like

You can try to force plex to bind exclusively to ipv6.

  • Navigate to Plex’s Preferences.xml (typically at %LOCALAPPDATA%\Plex Media Server\)
  • Add/modify these lines:
<NetworkInterface>IPv6</NetworkInterface>
<AllowHighOutputBitrates>true</AllowHighOutputBitrates>
<CustomConnections>http://[full-ipv6-address]:32400</CustomConnections>

Critical: Use full 128-bit IPv6 address without compression (e.g., 2001:0db8:85a3:0000:0000:8a2e:0370:7334 not 2001:db8:85a3::8a2e:370:7334)

For dynamic IPv6 Address Management, use the update-plex-ipv6-access-url script (GitHub) with these customizations:

# Set interface to your primary IPv6 NIC
INTERFACE="Ethernet" 
# Force IPv6-only mode
PLEX_PREFERENCES="C:\Users\[USER]\AppData\Local\Plex Media Server\Preferences.xml"
  • Schedule task to run every 5 minutes using Windows Task Scheduler

You may need to adjust your Firewall & Router Configuration:

  • Windows Firewall: Create explicit inbound/outbound rules for TCP 32400 (IPv6 only)
  • Router: Enable DHCPv6 prefix delegation and set static IPv6 suffix for your Plex server

This configuration completely bypasses IPv4 at the protocol level. Note that some Plex clients (particularly Android TV) may still require workarounds due to incomplete IPv6 stack implementations in the apps themselves. For persistent issues, consider using Nginx Reverse Proxy with dual-stack support as a fallback.

Plex Media Server on Windows uses registry settings, not Preferences.xml, which is used on Linux.

The settings are in HKEY_CURRENT_USER\Software\Plex, Inc.\Plex Media Server\.

No idea how the referenced Preferences.xml entries map to the Windows registry.

1 Like

It’s a real disappointment that Plex Server for Windows doesn’t have native support for remote streaming exclusively over IPv6, and that we continue to rely on the obsolete IPv4, even though it’s already public knowledge that in just a few months or even a few years, there won’t be a single fixed residential Internet connection in homes around the world that isn’t under the CG-NAT system.

And practically, to establish a direct remote streaming connection exclusively over IPv6, I would have to learn how to practically edit the lines of code on my server to use IPv6 exclusively for direct remote streaming. I don’t have the extremely advanced knowledge to edit the code of my server and broken client apps to use IPv6 by default. For now, the only thing I can continue using in indirect remote streaming is low-bitrate music files, and we have to forget about remote streaming for 1080p HD videos, let alone 4K, 2160p, and HDR.

Chances are your server is already publishing its IPv6 connection information to Plex’s servers, assuming it is correctly configured to do so.

Assuming your server has a valid IPv6 address from your ISP, in the Plex Web app navigate to Settings -> Network and ensure Enable server support for IPv6 is checked. If it isn’t, enable it, save the settings, and then restart Plex Media Server. Also ensure remote access is enabled (or that you have a custom server access URL correctly configured).

Next, navigate to the following page in your browser:
https://plex.tv/api/resources?includeIPv6=1&includeHttps=1&X-Plex-Token=your_plex_token

Replace your_plex_token with your Plex online token. Instructions to determine what your token is can be found here (click the orange text).

The XML body which loads will show you all of your signed-in devices, and the connection information for each. Find your server in the list and check that one of its published connections points to your IPv6 address.


The biggest limitation right now regarding IPv6 connectivity is not on the server side. It’s actually the clients. Very few Plex apps support IPv6 connections to the server at this time. As far as I know, only the legacy (not the new) Apple iOS, iPadOS, and tvOS based apps support IPv6. And perhaps the Plex Web app, but I’ve not tested that.

There’s also no need to try to force an IPv6 connection; it wouldn’t help even if you could. If IPv6 is available and an IPv4 connection cannot be established, the IPv6 connection info will be used if the client supports it.

On my Plex server, the “Enable IPv6 support” configuration option is always enabled. The serious problem is that in the remote access section, the server never detects the public IPv6 number of my Internet connection; it only displays the IPv4 number. Apparently, neither the Plex server nor the client apps for Android Phone and Android TV are able to detect or search for connectivity exclusively via IPv6, and they seem to rely on the IPv4 blocked by the CG-NAT. If I disable IPv4 in the network card configuration option on the computer where my Plex server is installed, I can still access all the pages and services on the Internet that support IPv6, and the only pages I can’t access are those that are still only in IPv4. The same thing happens in my remote office outside my home, where remote streaming is required, and there is also support for IPv6. If the Plex server detects the public IPv6 number assigned by the ISP and the private IPv6 number assigned by the router, it would have to display them in the “Remote Access” section. So the only solution is for the server to have real support for connecting exclusively via IPv6 at some point in future updates for the Windows operating system and the Android Phone/TV client app. In the hypothetical case of a firewall blocking the Windows operating system or the router, the Plex server should still write the public and tested IPv6 number in the “Remote Access” section. However, Plex always only writes the public and private IPv4 numbers, never the IPv6 numbers.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.