VPN connected but no internet: what to check
A tunnel can be up and carry nothing. Match what you see to the message the app shows, then apply the one fix that fits that message.
Published October 16, 2026
Key takeaways
- Eight verdicts describe a ForestVPN connection, and Working is claimed only when data flows both ways, so no state means connected on its own.
- net.mtu_blackhole is the stall that changing location does not fix: small requests pass, large transfers hang, and a different network is the remedy.
- net.exit_unreachable is the message where a new location is the direct fix; for the net.blocked_* messages the app may offer another location itself, and net.mtu_blackhole is the one where a new location never helps.
- session.quota_exceeded is not a network fault: the allowance for that Free connection was used and the session ended.
When a VPN says it is connected and nothing loads, the tunnel can be up and carrying nothing, or carrying only part of what you ask for. Your traffic passes through a ForestVPN exit server, the server where it leaves the tunnel for the internet, so a fault can sit on your side, on the path, or at that server. ForestVPN's app tells you which, in a short message, and each message has its own fix.
Go in order. Start with your symptom or the app's message, not with guesses.
Does a connected light mean data is flowing?
No, and that is the whole reason this symptom exists. A handshake is two ends agreeing on keys; it says nothing about whether the packets that follow get through.
For this reason no ForestVPN state means "connected" on its own. The app reaches one of eight verdicts from the tunnel's own counters (the exit reports ExitUnreachable over the path in question), and Working appears only when data flows both ways. Idle, Degraded, BlockedAtHandshake, BlockedAfterHandshake, MtuBlackhole, ExitUnreachable and UnderlayDown are the other seven. The one you are probably seeing is not Working.
Plenty of apps stay green on less. So if yours shows a plain "connected" while the browser spins, you have learned nothing about the path yet.
Which message are you looking at?
Find your symptom or the app's wording in this table, then jump to its section. The wording, the code and the action come from the ForestVPN connection states and the per-message help pages as they stood on the date in the method box below; troubleshooting covers what shows up before a state does.
| What you notice | App says | Code | What the counters show | What to do |
|---|---|---|---|---|
| Nothing loads at all, with or without the VPN | No network. | net.underlay_down | The device itself has no route out | Get the device online; see this message |
| The app keeps trying to connect and nothing loads | We're sending connection attempts and the server isn't answering. | net.blocked_at_handshake | Start attempts go out, no answer comes back | Turn the app off and on; if the app offers another location, let it; see this message |
| The page frame loads, images and downloads hang | Small packets pass, large ones don't. | net.mtu_blackhole | Small packets cross, large ones vanish | Try a different network; location does not matter; see this message |
| It worked, then everything stopped | It looked fine, then stopped carrying anything. | net.blocked_after_handshake | Start completed, then silence | Turn the app off and on; see this message |
| The app looks connected, nothing answers | It looked fine, but nothing is getting through. | net.liveness_failed | Counters look fine, the app's own test packet got no answer | Turn the app off and on; see this message |
| Your own network is fine, but nothing opens through the VPN | The server can't reach the internet. | net.exit_unreachable | Your side works, the exit server has no way out | Choose another location; see this message |
| Everything is slow | Traffic is getting through, worse than it should be. | net.degraded | Loss or delay above expectation | Another location, then another network; see this message |
| The app says the session ended | This session used its whole allowance. | session.quota_exceeded | The session ended on purpose | Connect again; see this message |
Is the device online at all?
If the app says "No network", the problem sits before the tunnel. net.underlay_down means the device has no working route, so ForestVPN cannot judge anything further out, and it carries on by itself once the network returns (details).
What if the app keeps trying and gets no answer?
Here the device has a route, so this is not "No network". net.blocked_at_handshake means the app keeps sending connection attempts and the server does not answer (details).
Rule out one mechanism first. Many public hotspots hold traffic back until you finish a sign-in page, the so-called captive portal. Until that page is dealt with, the first packets of a new tunnel are dropped, so the attempts go out and nothing comes back. A firewall in the path can do the same. Open any plain web address in the browser, finish the sign-in page if one appears, then turn the app off and on. If it repeats, try a different network such as mobile data. If the app offers another location, or moves to one by itself, let it.
Why do small pages load while big ones stall?
Because some path between you and the exit server drops large packets without telling anyone. That is net.mtu_blackhole, and the app words it as "Small packets pass, large ones don't." See the details.
The mechanism is old and well documented. A tunnel wraps every packet in an outer header, so the largest packet it can carry inside is smaller than what the link allows. Path MTU discovery relies on routers sending back a "too big" notice; when a router in the path drops that notice, the sender never learns to shrink its packets, and anything large silently disappears. RFC 4821 describes a way to probe for the limit without depending on that notice.
You will recognise it: the page frame loads, images hang, a download starts and freezes, a login works but the next screen never arrives.
The fix is not a new location. The help page for this message says that choosing another location is not the fix (how the app handles it). Try a different network, such as mobile data instead of Wi-Fi. On computers the app may lower its packet size by itself where that is allowed, and it never raises it. Phones and TV only diagnose.
What if it says connected, then nothing is carried?
Turn the app off and on. net.blocked_after_handshake means the start completed and then the network stopped carrying traffic (details).
The help page names three causes: a network change mid-session, a device in the path that lets the first packets through and drops the rest, or a fault on the server. Restarting the connection opens a fresh flow. If the same network repeats it, switch networks.
A close relative is net.liveness_failed: the counters look fine, but a test packet the app sent itself got no answer (details). Same first move, turn it off and on.
If the app offers another location, or moves to one by itself, let it.
When does choosing another location help?
net.exit_unreachable is the message where a new location is the direct fix: your side works and the exit server cannot get out to the internet (details). For the net.blocked_at_handshake and net.blocked_after_handshake messages the app may offer another location itself, and net.mtu_blackhole is the one where a new location never helps.
The softer version is net.degraded. Traffic gets through, with more loss or delay than expected (details). Pick another location; if every location is slow, the network you are on is the common factor, so try mobile data.
Could a local setting be the cause?
Sometimes. Each is worth a minute once the message points at your side.
- DNS. If a site loads by its numeric address but not by name, the name lookup is failing. Check the DNS server your system uses, and try another.
- Kill switch. A kill switch stops traffic leaving outside the tunnel when the tunnel drops, so a stalled tunnel feels like no internet. That is the intended behaviour, with the usual caveat that no kill switch covers every edge case.
- Split tunneling. On Android you pick apps; on Windows and Linux you pick IP ranges; iPhone, iPad and Mac have no split tunneling beyond a local-network carve-out. When only some apps or ranges go through the tunnel, the ones inside stall while the excluded ones keep working, so a stalled tunnel can look like one broken app. Check whether the failing app is inside the tunnel.
- A local firewall rule. Security software on the same computer may refuse the app's traffic. Allow the app, then reconnect.
What if a Free connection simply ended?
Then nothing is broken. The message session.quota_exceeded says "This session used its whole allowance", and the session closed because the allowance for that Free connection was used (details). Connect again if your plan lets you.
| Plan | Price | Billed |
|---|---|---|
| Free | – | 2 GB per connection, 5 connections a day |
| Monthly | $7.99 | per month |
| Yearly | $49.99 | per year |
How this catalog was read
How this was tested
- Product
- ForestVPN error catalog
- Version
- ForestVPN help pages, catalog updated 2026-10-11; Windows app 1.1.15
- System
- all clients
- Checked
- Runs
- 0
- Not tested
No device was tested for this page. It maps the published catalog, last updated 2026-10-11, to the symptom. The wording is shared by all clients; the current published Windows build on fvpn.net on the check date is 1.1.15, and mobile builds are not pinned here. It does not claim how often each message occurs, and it does not cover the Idle state.
Questions and answers
- Why is my VPN connected but there is no internet access?
- Because a finished handshake only proves the two ends agreed on keys. Data can still stop afterwards. ForestVPN reads its own packet counters and names the case: net.blocked_after_handshake, net.liveness_failed, net.mtu_blackhole, net.exit_unreachable or net.underlay_down.
- How do I stop a VPN from blocking my internet?
- Find the message first. A stalled tunnel looks like a dead connection, and a kill switch keeps traffic inside the tunnel, so nothing leaves until the tunnel recovers. Turn the app off and on, try another network, and if the app offers another location, let it.
- Why does my internet only work when the VPN is off?
- With the VPN off, your packets leave through the network directly. With it on, they pass through an exit server first, and any fault on that longer path shows up. The message in the app says which part of the path failed.
- Why does it say no internet connection but there is?
- The operating system's connectivity indicator runs its own check, and that check can fail through a tunnel while pages still load. Go by whether pages actually load and by the state the app shows, not by the indicator alone.
- Why do small pages load but large ones stall?
- That is the signature of an MTU problem: packets above some size are dropped silently while small ones pass. It is shown as net.mtu_blackhole, and switching to another location does not fix it.
- Will switching VPN protocol fix it?
- Rarely. ForestVPN runs the standard Noise_IKpsk2 handshake without altering it, and WireGuard uses the same Noise_IKpsk2 handshake. These stalls come from the path or the network, not from the choice of protocol, so the message in the app is a better guide than a protocol switch.
- Does a green connected light mean data is flowing?
- No. No ForestVPN state means connected on its own; Working is shown only when data flows both ways.
Sources
- RFC 1191: Path MTU Discovery (read October 15, 2026)
- RFC 4821: Packetization Layer Path MTU Discovery (read October 15, 2026)
How this was made
Drafted with AI assistance from ForestVPN's own error catalog and help pages, checked by automated gates and an editor; no lab run was needed.