Server Version#: 1.18.7.2457
Player Version#: N/A
I’ve noticed that I have the following ERROR in my logs every hour when Plex is re-requesting a port be opened for remote access via UPNP (IP Address replaced with X’s):
Mar 22, 2020 14:45:59.014 [0x7fd28f5ca700] DEBUG - HTTP requesting GET https://XX-XXX-XX-XXX.73e167975696474d89b06d28a5c66b8e.plex.direct:28548/identity
Mar 22, 2020 14:45:59.026 [0x7fd28d541700] DEBUG - NAT: UPnP, mapped port 28548 to 192.168.1.51:32400.
Mar 22, 2020 14:46:02.015 [0x7fd28f5ca700] ERROR - Error issuing curl_easy_perform(handle): 28
Mar 22, 2020 14:46:02.015 [0x7fd28f5ca700] DEBUG - HTTP simulating 408 after curl timeout
In this case, the above domain “XX-XXX-XX-XXX.73e167975696474d89b06d28a5c66b8e.plex.direct” resolves to the public IP address of my gateway which makes sense. It gives Plex a convenient way to reference and secure remote traffic using a wildcard certificate.
I took a while to look into this as I’ve been trying to spend some time tracking down errors in my server logs. It turns out that this is because the linuxigd upnp daemon only opens up the remote port on the internet interface, so there is no way that this curl will ever succeed from my Synology server on the LAN.
This can be seen by looking at iptables:
iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 32985 packets, 3704K bytes)
pkts bytes target prot opt in out source destination
13 796 DNAT tcp -- netext * 0.0.0.0/0 0.0.0.0/0 tcp dpt:28548 to:192.168.1.51:32400
Above “netext” is my internet facing interface. This means that it will only destination NAT the Plex port (28548) if the traffic ingresses through the internet facing interface.
For reference the traffic looks like this:
Synology Server (192.X) -> Gateway (192.X internal interface) -> Gateway (199.X:28548 external interface) -> blocked by iptables (as the traffic originates from the internal interface and not the external interface).
While I haven’t specifically tested other upnp clients (like miniupnp) I would expect them to work similarly which means that this check likely doesn’t succeed often when it needs to use upnp to establish remote connectivity.
So my main question is: It’s an error in the log, but my server not being able to hit the /identity path doesn’t seem to have any bad effects. Is this true? Can I safely ignore this error? Or are there side-effects to it not being able to hit the /identity endpoint?
Additionally, would Plex be open to changing how this mechanism works? For instance, I think that it would be better in almost all cases for this check to be carried out by a server on the internet (i.e. a Plex owned server) that could give better results. The way that it is currently, it will always have to hairpin on the gateway in order for this check to work correctly, which I would expect to fail in most cases? If it doesn’t provide substantial functionality to the Plex Server could we just disable the check altogether? Or at the very least reduce it’s verbosity level to info or debug?
Finally, I am able to see all of this information about why this wouldn’t work because I run my own Linux gateway and have terminal access to it. While most residential routers run the exact same setups, most users don’t have this much access to their gateway and would be unable to understand why they get errors in their logs.


