By David Kim · Sep 27, 2026

When Your Hosting Blocks Monitoring: My Fight With False "Down" Alerts and How I Fixed It

I used to host a Minecraft server on one of those cheap game server providers. You know the type. $5/month, shared hardware, barely enough RAM, but it worked for our small group. When I started getting serious about monitoring, I set up a ping check against the server IP. Seemed like the obvious first step.

Within five minutes my dashboard was lit up with failure alerts. Down. Down. Down. Every single check: failed.

I opened Minecraft, connected to the server. It was running perfectly. Players were online. No lag, no issues. But my monitoring dashboard was screaming that the server was dead.

I spent an embarrassing amount of time troubleshooting this. Checked my monitoring config three times. Tried a different monitoring service. Tried pinging from my home PC. Nothing worked. The ping always timed out. I was about to open a support ticket with the monitoring service when it finally clicked.

The hosting provider blocked ICMP. My server was completely invisible to ping. Always had been. I just never tried to ping it before.

That was my introduction to one of the most frustrating problems in uptime monitoring: your host blocks the very protocols your monitoring tools need. Your site is up, your server is running, and your monitoring says "down" because the traffic never gets through. It's the monitoring version of "the call is coming from inside the house," except the house is your firewall.

Why Hosting Providers Block This Stuff

Once I understood what was happening, I wanted to know why. I'd paid for a server. Why couldn't I ping it?

Turns out there are a few reasons, and some of them are actually reasonable.

Security hardening

ICMP (the protocol ping uses) and open TCP ports are how attackers scan for targets. Blocking ICMP makes your server invisible to basic network scanners. On shared hosting where hundreds of servers sit on the same hardware, providers block ICMP by default to reduce the attack surface for everyone. My game server host had a blanket firewall rule dropping all ICMP traffic across their entire network. Every customer, no exceptions.

DDoS protection

ICMP floods and SYN floods are classic DDoS techniques. If you've ever run a game server for more than a month, you've probably been hit with one. Hosting providers that deal with game servers learn fast. They block the protocols that get abused the most. Some go further and put everything behind DDoS mitigation layers that only pass through specific traffic types. Game traffic gets through. Ping does not.

Shared hosting restrictions

On shared hosting (cPanel, Plesk, most cheap web hosting), you get HTTP/HTTPS and that's about it. Port 80, port 443, maybe port 22 for SSH if you're lucky. Everything else is locked down at the network edge. You couldn't open a custom port if you wanted to. The provider controls the firewall and they don't give you access to it.

Cloud provider defaults

This one catches a lot of people. You spin up an EC2 instance on AWS, a Compute Engine VM on Google Cloud, or a VM on Azure. You set up monitoring with a ping check. It fails. You panic. Then you discover that cloud security groups block all inbound traffic by default, including ICMP.

  • AWS EC2 -- Security groups block everything inbound by default. You have to explicitly allow ICMP echo requests for ping to work.
  • Google Cloud -- Default firewall rules allow ICMP only within the VPC. External ping is blocked unless you add a rule.
  • Azure -- Network Security Groups block ICMP by default. Need an explicit allow rule.
  • DigitalOcean -- Cloud Firewalls don't even support ICMP rules. If you enable a cloud firewall, ping is gone and you can't add it back.

I moved my game server to a DigitalOcean droplet eventually and hit this exact problem again with the cloud firewall. Old habits die hard.

How I Figured Out My Checks Were Being Blocked (Not Actually Failing)

The key question when your monitoring shows failures is: is the server actually down, or is the monitoring traffic being blocked? Here's the process I use now whenever I see unexpected failures. Would have saved me a lot of confusion if I'd known this from the start.

Step 1: Run different check types against the same host

Set up a ping check and an HTTP check against the same server at the same time. If ping fails but HTTP passes, the server is up and ICMP is being filtered. This is the most common pattern and the fastest way to confirm the issue.

When my game server ping checks were failing, I should have immediately added an HTTP check against the server's web panel (it had a Pterodactyl panel on port 443). That would have returned 200 instantly and told me the problem was with ICMP, not with the server.

Step 2: Check from multiple locations

If your monitoring service supports multi-location checks, look at the geographic distribution of failures. If ping fails from every location but HTTP works from every location, ICMP is blocked. If ping fails only from certain locations, you might be dealing with geo-specific firewall rules or ISP-level filtering. I've seen game server hosts that block ICMP from outside their country but allow it domestically. Weird, but it happens.

Step 3: Try specific ports

Run TCP checks on different ports to map out what's actually open:

  • Port 80/443 (HTTP/HTTPS) -- almost always open on web servers
  • Port 22 (SSH) -- often restricted to specific IP ranges
  • Port 25565 (Minecraft Java) -- open if it's a game server
  • Port 3306/5432 (MySQL/PostgreSQL) -- should be blocked externally (and if they're not, you have a bigger problem)
  • Custom application ports -- depends entirely on firewall config

When I tested my cheap game server host, port 25565 was open (obviously, players needed it), but literally everything else was blocked. No ping, no SSH, no web panel port. Just the game port. That told me exactly what the firewall policy was.

Step 4: Check the provider's docs

Many hosting providers document their firewall policies. Some bury it in FAQ pages. Some mention it in setup guides. My original game host had a single line in their knowledge base: "ICMP is disabled on all game servers for security purposes." Would have been nice to find that before spending an hour troubleshooting.

Hosting Environments I've Personally Fought With

Over the years I've hosted things on a bunch of different platforms. Here's what I've found in terms of what's blocked and what works:

Hosting Type Ping (ICMP) Blocked? Custom TCP Ports Blocked? HTTP/HTTPS Accessible? Best Monitoring Approach
Shared hosting (cPanel, Plesk) Usually yes Yes (only 80/443 open) Yes HTTP checks only
WordPress managed hosting Usually yes Yes Yes HTTP + SSL checks
AWS EC2 (default security group) Yes (unless allowed) Yes (unless allowed) If port 80/443 is allowed HTTP + configure security groups
Sites behind Cloudflare Yes (Cloudflare IP, not origin) Limited (only proxied ports) Yes HTTP checks through Cloudflare
Serverless (Vercel, Netlify) Not applicable Not applicable Yes HTTP + synthetic API checks
VPS with custom firewall Depends on config Depends on config Usually yes All types (after allowing in firewall)
Kubernetes behind load balancer Usually yes Only exposed services Yes (via ingress) HTTP + API synthetic checks
Budget game server hosts Almost always yes Only game port open Sometimes (web panel) TCP port check on game port

The budget game server row is the one I wish I'd had when I started. Would have saved me the whole "why can't I ping my server" saga.

What Actually Works: Alternative Monitoring Strategies

Once I accepted that ping wasn't going to work on half the things I wanted to monitor, I had to find alternatives. Here's what I've settled on after years of trial and error.

Strategy 1: HTTP/HTTPS checks

This is the one that works everywhere. If your server serves any kind of web content, HTTP monitoring will work. It goes through every firewall, every CDN, every DDoS mitigation layer, because it uses the exact same protocol as a regular browser visit.

The trick is to check something meaningful, not just the domain root. When I monitor a web application, I point the check at a specific page that exercises the application stack. A health endpoint that checks the database connection, a page that renders dynamic content, something that proves the whole system is working, not just that Nginx is returning a static 200.

  • Check a specific URL that exercises your application (not just the homepage)
  • Verify the HTTP status code (200, or whatever you expect)
  • Check for a keyword in the response body to confirm the page rendered correctly
  • Set a response time threshold so you catch degraded performance, not just total failures

Use our HTTP Status Explainer tool to understand what different status codes mean for your monitoring setup.

Strategy 2: API health endpoint monitoring

If your application has any API endpoints, even a simple /health or /status endpoint, use API monitoring instead of ping. This is what I do for all my Discord bots now (see my other post about that). A JSON health endpoint is infinitely more informative than an ICMP echo reply.

  • Confirms the web server is running
  • Confirms application code is executing (not just a static page being served)
  • Can include database status, cache availability, dependency checks
  • Works through every firewall and CDN because it's standard HTTP

For my game servers that don't have a web panel, I can't use HTTP checks. But for everything else, this is my go-to.

Strategy 3: Synthetic multi-step monitoring

For web applications where I need to verify more than basic reachability, synthetic monitoring tests entire workflows over HTTP. Login flows, search functionality, form submissions. Everything uses standard web protocols, so nothing gets blocked. I use this for our community's web store and donation page.

Strategy 4: SSL certificate monitoring

SSL monitoring connects on port 443 using the TLS handshake, which is never blocked because that's how HTTPS works. You get confirmation the server accepts connections, plus certificate expiry tracking, chain validation, and TLS version information. It's a free bonus layer of monitoring that works even on the most locked-down hosts.

Check your current SSL status with our SSL Expiry Countdown tool.

Strategy 5: TCP port check on the game port

This is what finally solved my original game server problem. I couldn't ping the server, but port 25565 was open for players. So I added a TCP port check on 25565. It connected, verified the port was accepting connections, and reported back. Boom. Actual monitoring that actually worked on my actual server.

For anyone running game servers on restricted hosting, this is usually your best option. Find the port your game uses and monitor that specific port with a TCP check.

The Cloudflare Special Case

I have to talk about Cloudflare specifically because it trips people up constantly, and I've been one of those people.

When your site is behind Cloudflare, your domain's DNS points to Cloudflare's servers, not yours. This means:

  • Ping checks hit Cloudflare, not your server. A successful ping means Cloudflare is up. A failed ping means Cloudflare is blocking ICMP (they do by default). Neither tells you anything about your origin server.
  • TCP checks on non-standard ports may fail. Cloudflare only proxies specific ports. Your custom application port might be perfectly open on your origin but unreachable through Cloudflare.
  • HTTP checks work correctly. Cloudflare proxies HTTP/HTTPS traffic, so HTTP monitoring goes through Cloudflare to your origin just like a real user visit. This is what you want to monitor.

My recommendation for sites behind Cloudflare:

  1. Use HTTP/HTTPS checks for front-end monitoring. These go through Cloudflare like real users.
  2. If you need to monitor the origin directly (bypassing Cloudflare), set up a non-proxied subdomain that points to your server IP and monitor that.
  3. Use SSL monitoring for certificate expiry on both the Cloudflare edge certificate and your origin certificate.
  4. Don't bother with ping or TCP port checks. They'll give misleading results.

I spent half a day debugging "intermittent failures" on a Cloudflare-proxied site before realizing my TCP check was hitting a port that Cloudflare doesn't proxy. Switched to an HTTP check, problem solved instantly.

When You Control the Firewall: Just Open What You Need

If you manage your own server (VPS, dedicated, cloud instance), you can often fix the problem at the source instead of working around it. Here's how to allow ping in common firewall setups:

iptables (Linux):

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

AWS Security Group: Add an inbound rule. Type: "Custom ICMP - IPv4", Protocol: "Echo Request", Source: your monitoring service's IP ranges (or 0.0.0.0/0 if you don't care about restricting it).

Azure NSG: Create an inbound rule with Protocol "ICMP", Action "Allow", priority lower than your deny rules.

But honestly? After going through all this, I've stopped bothering with ping even when I can enable it. HTTP monitoring catches more problems, provides more information, and works everywhere without firewall changes. Ping tells you "the machine responds to ICMP." HTTP tells you "the application is running, the web server is healthy, and the response time is acceptable." That's just more useful.

The one exception is TCP port monitoring for non-HTTP services (game servers, databases, mail servers). If you need to monitor a specific TCP port, open it for your monitoring service's IP range. But don't open database ports (3306, 5432, 27017) to the entire internet just for monitoring. That creates a much bigger problem than the one you're solving.

Building a Monitoring Setup That Doesn't Care About Firewall Restrictions

After dealing with this across multiple hosting providers and server types over the years, I've settled on a layered approach that works regardless of what the firewall is doing:

Layer Check Type What It Catches Works When Ping Is Blocked?
1. Basic availability HTTP/HTTPS check Server down, application crash, DNS failure Yes
2. Certificate health SSL monitoring Expiring certificates, TLS misconfigurations Yes
3. Application health API / synthetic monitoring Broken functionality, degraded performance, integration failures Yes
4. Network reachability Ping (if available) Network-level outages, routing issues No -- use HTTP as substitute
5. Service availability Port monitoring (if available) Stopped services, firewall misconfigurations Limited -- only works for allowed ports

Layers 1-3 work in every hosting environment I've ever encountered. Layers 4-5 add depth when available but aren't required. Read more about combining check types in our HTTP vs. TCP monitoring guide.

My current setup across all my services: HTTP checks on everything that has a web presence, TCP port checks on game server ports, SSL monitoring on all HTTPS endpoints, and API health endpoint checks on my Discord bots. Zero ping checks. I don't miss them.

Stop the False Positives Before They Kill Your Trust in Monitoring

Here's the real danger of blocked checks that nobody talks about enough. If your monitoring is constantly showing false positives because ping is blocked, you start ignoring alerts. "Oh, it's probably just the firewall again." Then one day there's a real outage. Your monitoring fires a real alert. And you ignore it because you've been conditioned to think all alerts are false.

This is called alert fatigue and it's the quickest way to make monitoring useless. Here's how to avoid it:

  • Remove check types that your host blocks. If ping is blocked, delete the ping monitor. Don't just mute it. Delete it and replace it with an HTTP check that actually works.
  • Require confirmation from multiple locations before alerting. A single-location failure might be a routing issue. Failures confirmed from multiple locations are almost certainly real.
  • Use retries. Configure your monitor to retry failed checks 2-3 times before sending an alert. Brief network glitches happen. You want to be alerted about sustained outages, not momentary hiccups.
  • Re-test after any hosting change. New server, new CDN, new firewall rules, new hosting provider. Any of these can break existing monitors. Always verify your checks still work after infrastructure changes.

After I cleaned up my monitoring setup (removed the blocked ping checks, switched to HTTP and TCP port checks), my false positive rate went from several per day to effectively zero. Every alert I get now is a real problem. That means I take every alert seriously and respond immediately. That's how monitoring is supposed to work.

Frequently Asked Questions

My ping checks were working fine and suddenly started failing. What happened?

Most likely: your hosting provider updated their firewall rules, someone on your team enabled a cloud firewall or DDoS protection, or your DNS was pointed to a CDN (like Cloudflare) that doesn't pass ICMP traffic. Check recent infrastructure changes first. If nothing changed on your end, contact your host.

Should I ask my hosting provider to unblock ping?

On shared hosting, they almost certainly won't. On VPS or dedicated servers, you can usually control the firewall yourself. On cloud platforms, adjust your security group rules. But honestly, HTTP monitoring gives you more information than ping anyway. I'd call it an upgrade rather than a workaround. Switch to HTTP checks and move on.

Is HTTP monitoring slower to detect outages than ping?

An HTTP check takes slightly longer to execute because it transfers more data than an ICMP echo. But the detection time difference is negligible, a few seconds at most. And HTTP monitoring catches a wider range of problems (application crashes, database failures, slow rendering) that ping would miss entirely. It's a net improvement over ICMP ping monitoring.

Can I monitor my server by pinging the IP address instead of the domain?

If the IP is behind a firewall that blocks ICMP, pinging the IP fails just like pinging the domain. If the domain points to a CDN but you have the origin IP, pinging the origin directly might work, but only if the origin firewall allows ICMP. Either way, HTTP monitoring is more reliable and more informative.

What if my hosting blocks everything except HTTP on port 80 and 443?

This is actually the most common scenario, and it's totally workable. HTTP and SSL monitoring together cover availability, performance, and certificate health. Add synthetic monitoring for application-level verification, and you've got solid coverage without needing ping or custom TCP ports. This is how I monitor all my web applications and it works great.

See setup tutorials or get started with UptyBots monitoring today.

Ready to get started?

Start Free