Remote Access stopped working yesterday

Server Version#: 1.42.2.10156
Player Version#: All

I’ve had remote access up and running for a very long time. Yesterday my wife told me she couldn’t get Plexamp to load anything on her drive to work, then my sister told me she couldn’t access the server, then a friend told me the same.

After a reboot they were able to access, but only with transcoding - and now not again at all. It seems to say it is up if I ‘retry’ but then in a few seconds goes back to saying not available. It turned green for a few minutes once, now is back to red again and doing the thing where it goes green if I ‘retry’ then red again a few seconds later.

I haven’t changed anything and checked to make sure that port forwarding is still set on the router.

Any ideas what is going on or what I can try?

Thanks!!

So looking through past posts I’m seeing quite a few others with similar issues, but the threads all just end with no solution.

I’ve quadruple checked everything and like i said, made no changes to anything beforehand - at a loss here at what to do.

A couple of examples:

There’s many reasons why remote access might fail… many of those happen outside your control (e.g. changes triggered by your ISP).
Sadly, Plex is using an „optimistic“ approach with its remote access status indicator. The remote access status will be listed as „green“ while Plex is still performing the status check… this will usually take a few seconds, but in certain circumstances it could also take several minutes.

Have you verified your manual port forward is still accessible from outside your home network? You can test this using a service like canyouseeme.org. It’s also worth to compare the public IP identified by canyouseeme.org with that seen in your server‘s remote access settings and the WAN IP listed in your router.

IP matches but I’m getting a timeout on the port on canyouseeme. I’ll look through that troubleshooting link again and see if anything is helpful. Thanks!

I’ve seen some folks have to change their port from the default 32400 to something else due to their ISP.

Sounds like there’s an issue between “the internet” (a.k.a your ISP) and your router.
If you’ve verified the port forward is configured properly and active, it’s most likely outside your own control.

As veeejay pointed out, you could try to go with a different public port for your forward – sometimes, ISPs block specific ports or port-ranges (usually “for security reasons”). If other ports also won’t work, you could still reach out to your ISP and ask them about this.

1 Like

It’s also always a good idea to restart Router and server after a configuration change. I would also try restarting your ISP’s connection Box.

Another would be using a solid DNS like 1.1.1.1

Contacted my ISP today, they said they still have a ‘no port blocking’ policy. I still tried a few different ports to see if that would help, but no luck :frowning:

Restarted both a few times after trying different things, still no luck. Also changed DNS on the router to cloudflare’s but that made no difference either unfortunately.

Not sure if there’s any way to tell if it is getting blocked at the ISP level or the router level.

Thanks again for this, unfortunately I’ve gone through everything on these again and nothing seems to be helping. I feel like my ISP must be doing the blocking, though they are denying it and saying they never block any ports - not sure if there’s a way I can prove that it is them and not my router. A tracert never seems to make it to my public IP - though I don’t know enough about networking to know if that says anything useful or not.

Here is a very simple powershell script that should show if your ISP is blocking. I know that spectrum has “played” with my connection in the past. They never really blocked it, but I think they were messing with things and causing plex remote issues (buffering, failed playback, etc). Since I switched to an AWS server as an nginx front end, I have had 0 issues with remote access.

# Plex Remote Access Checker - Accept any SSL certificate
# =========================================================

# CONFIGURATION - Edit these values
$plexToken = "YOUR_PLEX_TOKEN_HERE"
$plexIP = "YOUR_PUBLIC_IP_OR_DOMAIN"
$plexPort = 32400

# =========================================================
# HOW TO GET YOUR PLEX TOKEN:
# Official Plex Support Article:
# https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/
#
# Quick Method:
# 1. Sign in to Plex Web App (app.plex.tv)
# 2. Browse to a library item
# 3. Click the "..." menu and select "Get Info" 
# 4. Click "View XML" at the bottom
# 5. Look in the browser URL bar for "X-Plex-Token=XXXXX"
# 6. Copy everything after the = sign
# =========================================================

# Disable SSL certificate validation (allows self-signed certificates)
add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem) {
            return true;
        }
    }
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

# Test remote access
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Plex Remote Access Checker" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""

$url = "https://${plexIP}:${plexPort}/identity?X-Plex-Token=${plexToken}"
Write-Host "Testing connection to: https://${plexIP}:${plexPort}" -ForegroundColor Yellow
Write-Host ""

try {
    $response = Invoke-WebRequest -Uri $url -TimeoutSec 10 -UseBasicParsing
    
    if ($response.StatusCode -eq 200) {
        Write-Host "SUCCESS: Plex remote access is working!" -ForegroundColor Green
        Write-Host ""
        Write-Host "Server Response:" -ForegroundColor Cyan
        Write-Host $response.Content
    }
} catch {
    Write-Host "FAILED: Remote access is not working" -ForegroundColor Red
    Write-Host ""
    Write-Host "Error Details:" -ForegroundColor Yellow
    Write-Host $_.Exception.Message -ForegroundColor Red
    Write-Host ""
    Write-Host "Troubleshooting Tips:" -ForegroundColor Yellow
    Write-Host "1. Verify your Plex token is correct"
    Write-Host "2. Check that remote access is enabled in Plex Settings"
    Write-Host "3. Confirm your public IP/domain is correct"
    Write-Host "4. Ensure port $plexPort is forwarded in your router"
}

Write-Host ""
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Press any key to exit..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Thank you - so does this definitely show that the problem would be with the ISP, and not an issue with the router (like a firmware bug breaking port forwarding for example)? I noticed that troubleshooting step four mentions checking that port is forwarded.

If it fails to connect, it can’t really determine why. It could be issue with port forwarding, firewall on your PC or potentially ISP blocking. I think you would need some form of packet analyzer to determine the exact reason it could not connect.

Here is version 2. This might give more details.

# Plex Remote Access Diagnostic Tool
# =========================================================

# CONFIGURATION - Edit these values
$plexToken = "YOUR_PLEX_TOKEN_HERE"
$plexPublicIP = "YOUR_PUBLIC_IP_OR_DOMAIN"
$plexLocalIP = "192.168.1.XXX"  # Your Plex server's local IP
$localPlexPort = 32400
$externalPlexPort = 32400

# =========================================================
# HOW TO GET YOUR PLEX TOKEN:
# Official Plex Support Article:
# https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/
#
# Quick Method:
# 1. Sign in to Plex Web App (app.plex.tv)
# 2. Browse to a library item
# 3. Click the "..." menu and select "Get Info" 
# 4. Click "View XML" at the bottom
# 5. Look in the browser URL bar for "X-Plex-Token=XXXXX"
# 6. Copy everything after the = sign
# =========================================================

# Disable SSL certificate validation
add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem) {
            return true;
        }
    }
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Plex Remote Access Diagnostic Tool" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""

# Test 1: Local Network Access
Write-Host "[TEST 1] Checking LOCAL network access..." -ForegroundColor Yellow
$localUrl = "https://${plexLocalIP}:${localPlexPort}/identity?X-Plex-Token=${plexToken}"
try {
    $localResponse = Invoke-WebRequest -Uri $localUrl -TimeoutSec 10 -UseBasicParsing -ErrorAction Stop
    Write-Host "LOCAL ACCESS: Working" -ForegroundColor Green
    Write-Host "  This means Plex server is running and accessible on your network" -ForegroundColor Gray
    $localWorks = $true
} catch {
    Write-Host "LOCAL ACCESS: Failed" -ForegroundColor Red
    Write-Host "  Error: $($_.Exception.Message)" -ForegroundColor Red
    Write-Host "  → Problem: Plex server may not be running or local IP is wrong" -ForegroundColor Yellow
    $localWorks = $false
}
Write-Host ""

# Test 2: Port Connectivity (without SSL)
Write-Host "[TEST 2] Checking if port $externalPlexPort is reachable..." -ForegroundColor Yellow
try {
    $tcpClient = New-Object System.Net.Sockets.TcpClient
    $connection = $tcpClient.BeginConnect($plexPublicIP, $externalPlexPort, $null, $null)
    $wait = $connection.AsyncWaitHandle.WaitOne(5000, $false)
    
    if ($wait -and $tcpClient.Connected) {
        Write-Host "PORT TEST: Port $externalPlexPort is open and reachable" -ForegroundColor Green
        Write-Host "  This means port forwarding appears to be working" -ForegroundColor Gray
        $tcpClient.Close()
        $portOpen = $true
    } else {
        Write-Host "PORT TEST: Cannot reach port $externalPlexPort" -ForegroundColor Red
        Write-Host "  Problem: Port forwarding may not be configured correctly" -ForegroundColor Yellow
        Write-Host "  Or: ISP may be blocking the port" -ForegroundColor Yellow
        $tcpClient.Close()
        $portOpen = $false
    }
} catch {
    Write-Host "PORT TEST: Failed to test port" -ForegroundColor Red
    Write-Host "  Error: $($_.Exception.Message)" -ForegroundColor Red
    $portOpen = $false
}
Write-Host ""

# Test 3: External HTTPS Access
Write-Host "[TEST 3] Checking EXTERNAL HTTPS access..." -ForegroundColor Yellow
$externalUrl = "https://${plexPublicIP}:${externalPlexPort}/identity?X-Plex-Token=${plexToken}"
try {
    $externalResponse = Invoke-WebRequest -Uri $externalUrl -TimeoutSec 10 -UseBasicParsing -ErrorAction Stop
    Write-Host "EXTERNAL ACCESS: Working!" -ForegroundColor Green
    Write-Host "  Remote access is fully functional" -ForegroundColor Gray
    $externalWorks = $true
} catch {
    Write-Host "EXTERNAL ACCESS: Failed" -ForegroundColor Red
    Write-Host "  Error: $($_.Exception.Message)" -ForegroundColor Red
    $externalWorks = $false
}
Write-Host ""

# Test 4: Windows Firewall Check
Write-Host "[TEST 4] Checking Windows Firewall rules..." -ForegroundColor Yellow
try {
    $firewallRules = Get-NetFirewallRule -DisplayName "*Plex*" -ErrorAction SilentlyContinue
    if ($firewallRules) {
        Write-Host "FIREWALL: Found Plex firewall rules" -ForegroundColor Green
        $firewallRules | ForEach-Object {
            $enabled = if ($_.Enabled) { "Enabled" } else { "Disabled" }
            Write-Host "  - $($_.DisplayName): $enabled" -ForegroundColor Gray
        }
    } else {
        Write-Host "FIREWALL: No Plex-specific rules found" -ForegroundColor Yellow
        Write-Host "  This may be OK if Windows Firewall is disabled or using default rules" -ForegroundColor Gray
    }
} catch {
    Write-Host "FIREWALL: Unable to check (may need admin rights)" -ForegroundColor Yellow
}
Write-Host ""

# Test 5: Check Plex.tv Remote Access Status
Write-Host "[TEST 5] Checking Plex.tv reported status..." -ForegroundColor Yellow
try {
    $plexTvUrl = "https://plex.tv/api/resources?X-Plex-Token=${plexToken}"
    $resources = Invoke-RestMethod -Uri $plexTvUrl -ErrorAction Stop
    $server = $resources.MediaContainer.Device | Where-Object { $_.provides -match "server" } | Select-Object -First 1
    
    if ($server) {
        Write-Host "PLEX.TV: Found server registration" -ForegroundColor Green
        Write-Host "  Server Name: $($server.name)" -ForegroundColor Gray
        Write-Host "  Public Address: $($server.publicAddress)" -ForegroundColor Gray
        Write-Host "  Remote Access: $($server.publicAddressMatches)" -ForegroundColor Gray
        
        if ($server.publicAddressMatches -eq "1") {
            Write-Host "  Plex.tv confirms remote access is enabled" -ForegroundColor Green
        } else {
            Write-Host "  Plex.tv reports remote access may not be working" -ForegroundColor Yellow
        }
    }
} catch {
    Write-Host "PLEX.TV: Unable to check status" -ForegroundColor Yellow
    Write-Host "  Error: $($_.Exception.Message)" -ForegroundColor Red
}
Write-Host ""

# Diagnosis Summary
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "DIAGNOSTIC SUMMARY" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan

if ($externalWorks) {
    Write-Host "RESULT: Remote access is working perfectly!" -ForegroundColor Green
} else {
    Write-Host "RESULT: Remote access is NOT working" -ForegroundColor Red
    Write-Host ""
    Write-Host "LIKELY CAUSE:" -ForegroundColor Yellow
    
    if (-not $localWorks) {
        Write-Host "→ PLEX SERVER ISSUE" -ForegroundColor Red
        Write-Host "  - Verify Plex Media Server is running" -ForegroundColor White
        Write-Host "  - Check local IP address is correct: $plexLocalIP" -ForegroundColor White
        Write-Host "  - Ensure Plex is listening on port $localPlexPort" -ForegroundColor White
    } elseif ($localWorks -and -not $portOpen) {
        Write-Host "→ PORT FORWARDING or ISP BLOCKING" -ForegroundColor Red
        Write-Host "  - Configure port forwarding on your router:" -ForegroundColor White
        Write-Host "    External Port: $externalPlexPort → Internal IP: $plexLocalIP : $plexPort" -ForegroundColor White
        Write-Host "  - Check if your ISP blocks port $externalPlexPort" -ForegroundColor White
        Write-Host "  - Try a different port (like 32401) in Plex settings" -ForegroundColor White
        Write-Host "  - Some ISPs block common ports - contact them to verify" -ForegroundColor White
    } elseif ($localWorks -and $portOpen -and -not $externalWorks) {
        Write-Host "→ FIREWALL or SSL/CERTIFICATE ISSUE" -ForegroundColor Red
        Write-Host "  - Check Windows Firewall allows Plex" -ForegroundColor White
        Write-Host "  - Verify any antivirus isn't blocking connections" -ForegroundColor White
        Write-Host "  - Try disabling 'Require secure connections' in Plex Settings" -ForegroundColor White
        Write-Host "  - Check router firewall settings" -ForegroundColor White
    }
}

Write-Host ""
Write-Host "For more help, visit:" -ForegroundColor Cyan
Write-Host "https://support.plex.tv/articles/200289506-remote-access/" -ForegroundColor Cyan
Write-Host ""
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Press any key to exit..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Thanks again! Yeah everything looks good except for Tests 2 and 3.

Probably a dumb question, but setting up a reverse proxy wouldn’t help me in this situation right? - or is that what this is?: “Since I switched to an AWS server as an nginx front end, I have had 0 issues with remote access.”

It’s quite advanced and a pain to setup an AWS server. I have a VPN connect outbound from my PC to the AWS server, so as far as Spectrum is concerned, it another outbound connection so no interference from them. If the ISP is blocking the connection, nginx would resolve the issue.

Are you 100% sure that port forwarding is enabled on your router and still as the correct ports and IP address? I did have an update to my router OS drop the port forwarding. Do you use an ISP supplied router or your own?

I’m using my own, it’s a Flint 3. Unless I’m missing something there isn’t much to it: Port Forwarding - GL.iNet Router Docs 4 (my PMS is at 192.168.1.100 internally, I also set up a quick ubuntu server, turned on ssh server, and tried opening it up to external port 22000 and canyouseeme.org also showed that as not opened):

The only kind of odd thing is that while the IPs on my PMS remote access page and the one on canyouseeme.org match (as well as whatismyipaddress.com) - the IP of the gateway on my router is different - but I assume that is just due to NAT and the gateway address I’m seeing on the router is the just the internal address at the ISP and it should be like that. My public IP reports as a 149.x.x.x and the one shown on my router for the gateway is a 100.x.x.x

That makes me think that your ISP has got you behind another NAT. That is kind of out of my expertise. If that is the case, it would need an open port on their system that fowards to your 100.x.x.x address.

I know companies are running out of IP4 addresses, so maybe that is what is happening. Might be something you can ask your ISP.

If that is the case and they can’t (or won’t) forward to your address, then the only thing I can think of would be to spin up nginx on an external server.

I guess it is a thing for ISP to use CGNAT. So you might google running plex behind CGNAT if that is what is happening.

Just confirmed that they’ve implemented CGNAT here :unamused_face: - great.