Unrecognized domain / IP when connecting to fqdn Carrier NAT space

I ran into a situation where I was using a non-routable address space, but not RFC-1918. There is a block that I use for my ISP that is reserved for carrier NAT (RFC-6598 100.64.0.0/10). This is also a non-routable space and should probably be added to the ones Plex recognizes. If not at least this post will keep anyone from wasting a day figuring it out.

Are you suggesting that if Plex notices the ā€œInternetā€ is using a CGNAT range address, it should provide a warning?

Plex has added the ā€œRelayā€ to make remote playback work, with limitations but at least somewhat magically, for this type of scenario. There are lots of other ways it can be approached. What did you end up doing?

Note: the Plex support doc for this is pretty good!

This range and cgnat are documented under double Nat on troubleshooting remote access

1 Like

This wasn’t causing a remote access issue. For reasons that are mostly historic now my internal home network uses 100.64.0.0/24. The Plex server was giving an unrecognized domain error when accessed via an ip address in this range and ā€œno soup for youā€ resulted. When the NAS finishes syncing with it’s remote counterpart I’ll re-ip to the 192.168 space and expect to see it work. I posted it more for the possible case that someone else is using an RFC-6598 address space internally.

Oh - you’ve piqued my curiosity. If it wasn’t about remote access, how was the address range the source of problems?

I’m trying hard not to ask why you were using those addresses. :slight_smile:

That address range is not recognized as a nonroutable block like the rfc1918 ranges. There seems to be a check in the server code that will only allow local access to rfc1918 ranges. When I re-ip’d it to a 192.168… address anything on that subnet could adopt it.

I owned a wisp and made extensive use of the 100.64 block for just this reason. If the client router had it on the wan almost nothing detected it as a nat. As I said for historic reasons I have an overlay network at my house that used the same space.

I was under the impression that Plex looked at its current IP address and subnet, and considered other devices on that subnet to be ā€œlocalā€.

I’m not under the impression that Plex considers all RFC-1918 space to be ā€œlocalā€, and I don’t think it does by default. When running on RFC-1918 space I have configured additional RFC-1918 subnets in Plex as LAN Networks and in ...allowed without auth.

I do see this:

https://support.plex.tv/articles/200430283-network/

  • Private/LAN addresses can be specified either as a range or as an individual IP address. Public addresses can only be specified as an individual IP address (using ranges/netmasks with public addresses will fail/be ignored). Do not include spaces or tabs.

Maybe that was biting you, or a version of it?

I don’t think Plex should treat CGNAT addresses any differently from public address space. The CGNAT allocation isn’t intended for ā€œendā€ networks.

Plex appears to treat the rfc6598 space as a public address and will not allow access on the subnet (found the error message in the log which was what clued me in). Strictly speaking this is incorrect behavior. rfc6598 is conceptually no different than rfc1918. It is called cgnat because that is why it was originally allocated, but it is no different in practice since they should never be routed across a public network.

   Shared Address Space is distinct from RFC 1918 private address space
   because it is intended for use on Service Provider networks.
   However, it may be used in a manner similar to RFC 1918 private
   address space on routing equipment that is able to do address
   translation across router interfaces when the addresses are identical
   on two different interfaces.  Details are provided in the text of
   this document.

Of course the chances of this affecting anyone other than me are small. I only made this post on the outside chance that it saved someone in a similar situation some time.

I agree that it’s nice to post it for that reason!

I see that Plex treats 100.64.0.0/10 the same as other public addresses in the allowed without auth field, and gives the same error:

Jul 27, 2020 11:44:33.047 [0x812b73b00] ERROR - Illegal whitelist covers multiple WAN IPs

I think that’s correct behavior, in context.

It’s annoying when software makes guesses based on IP address range. I’d prefer to be able to use ranges or CIDR notation for the ...allowed without auth setting. I also understand why Plex does it.

I disagree with your premise. The motivation for RFC-6598 was to avoid collisions with RFC-1918 users. Before RFC-6598 there was a lot of CGNAT being done from 172.16/12 because it was the least-used RFC-1918 space. That was just the least painful option.

The fundamental guidance for RFC-6598 is that it’s for service provider networks and CGNAT hijinks, not end users. It even warns against using it for other purposes.

   Shared Address Space is IPv4 address space designated for Service
   Provider use with the purpose of facilitating CGN deployment.

And:

   Because CGN service requires non-overlapping address space on each
   side of the home NAT and CGN, entities using Shared Address Space for
   purposes other than for CGN service, as described in this document,
   are likely to experience problems implementing or connecting to CGN
   service at such time as they exhaust their supply of public IPv4
   addresses.

So I definitely don’t think Plex should treat CGNAT/RFC-6598 space the same as RFC-1918 space.

  1. End users shouldn’t be using it internally.
  2. From the perspective of a user network (or Plex Server), CGNAT addresses are usually ā€œexternalā€ anyway - most likely customers of the same ISP.

I do notice that the Plex UI, parsing, and error handling for List of IP addresses and networks that are allowed without auth is poor.

No matter what you put in that field, the UI reports Your changes have been saved.

That’s true if it’s good, bad, or ā€œabracadabraā€.

It’s also very serious about being comma separated - it’s even allergic to whitespace.

This works: 192.168.0.0/16,10.0.0.0/8
But this generates an error: 10.0.0.0/8, 192.168.0.0/16

Jul 27, 2020 12:01:04.570 [0x812b73b00] ERROR - Error parsing allowedNetworks ’ 192.168.0.016’: Invalid argument

That’s funky.

You make valid points, but protecting users from themselves is a problematic stance to take and should at least be well documented.

I will maintain that if it is not routable across the public internet it is not a public address. Strictly speaking 169.254.0.0/16 should also be valid.

These are corner cases and will affect very few users so I think this conversation is enough for anyone who searches looking for a similar problem. I don’t think the developers need to worry about edge cases like this.

I agree with you though that the parsing and error messages should be clear. The error I got in the log was:

Request came in with unrecognized domain / IP '100.64.0.10' in header Host; treating as non-local

I agree completely. I dislike that type of ā€œclassfulā€ behavior. Best case, I think, is to make a safe guess, show or warn the user, and then allow them to do what they want.

I wondered if this could be edited directly in Preferences.xml. It can be, but that’s not helpful. Whatever you enter via the UI is saved in Preferences.xml anyway. It’s PMS that parses and enforces those restrictions.

Sure - we’re both using nice broad definitions of ā€œpublic internetā€ and ā€œpublic addressā€. :slight_smile:

No animosity here - this is just an interesting topic.

I think we’re on the same page that the real issue, for ā€œunusualā€ configurations, is that Plex has constraints on how you can configure it. It would be super annoying if you were using public addressing internally, for instance.

For better or worse, I think Plex divides the universe into ā€œPrivateā€ (RFC-1918, localhost) and ā€œPublicā€ (everything else).

I don’t think all of the other special allocations and non-public networks should also be lumped in with ā€œPrivateā€ and RFC-1918.

I’m willing to agree that 169.254/16 isn’t public, and is more like RFC-1918 space. It’s fundamentally ā€œprivateā€, and also fundamentally ā€œnot publicā€. (I’m relieved that there doesn’t seem to be anybody trying to use this.)

But 100.64/12 definitely isn’t like RFC-1918. Service providers should be filtering it from ingress/egress, so it’s ā€œnot publicā€. But from the perspective of an end-user network, it’s almost always more like ā€œPublicā€ than ā€œPrivateā€.

Since 99% of people won’t ever assign themselves addresses from RFC-6598, the most common situation is that any CGNAT addresses they see are other ISP customers, external to them.

I appreciate that you called it ā€œCarrier NATā€, by the way.

I’ve been using the term CGNAT because that’s what I’m used to. I actually hate everything about it. ā€œCarrier Gradeā€ implies that it’s ā€œbetterā€ in some way, and really everything about Carrier NAT is awful.

Pretty much agree with you straight down the line. As I said, corner case, just needs proper docs and move on.

As to NAT it’s an expedient because IPv6 has spotty adoption and requires much more knowledge to configure correctly. Because NAT is so prevalent the unfortunate side effects have been mitigated to some extent and it does make it easier for the carriers to manage the connection and provides a little bit of extra protection for the end user if they turn off abominations like like UPnP.

Like everything else, if you know what you are doing you can make it work. If you don’t its plug and pray.

1 Like

I’ve never really understood the amount of animosity against UPnP.

If I was a (residential) service provider deploying CGNAT I’d go out of my way to enable PCP. Otherwise the calls from gamers saying ā€œMy Xbox says ā€˜Moderateā€™ā€ would drive me insane.

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