A VPN hides the user's IP address — but the VPN's own exit IP cannot hide. Every connection through it arrives at your service from an address that exists, has a network owner, and accumulates observable behavior. That asymmetry is what every form of VPN detection exploits, and understanding how it works — and where it breaks down — is what separates a useful VPN signal from a customer-blocking liability.
What is VPN detection?
VPN detection is the process of determining whether a connection originates from a VPN exit server rather than from the user's own network, by checking the IP address against observed VPN infrastructure and analyzing the connection's behavior.
There are two vantage points, and every technique belongs to one of them. Network-side detection examines the IP address itself: has this address been observed operating as an anonymization endpoint, does it sit in hosting address space, does its traffic pattern look like a shared exit rather than a household? This evidence exists independently of any single visitor and can be compiled ahead of time as data. Client-side detection examines the connecting device's environment: a browser timezone that disagrees with the IP's location, WebRTC or DNS behavior that leaks a different address, transport fingerprints inconsistent with the claimed platform. This evidence is richer per session but only exists once a session is underway, and a careful user can suppress much of it. Production systems use both, because each vantage point sees what the other cannot.
How does VPN detection actually work?
Known-infrastructure matching
Commercial VPN exits are finite and observable: providers operate fleets of servers whose addresses can be seen relaying traffic. Observation-based datasets record IPs seen behaving as anonymization endpoints, with first_seen and last_seen timestamps per record, so a lookup answers not just "is this a known exit?" but "how recently was it confirmed?" This is the highest-precision network-side method and the one the rest assume.
Hosting-network inference
VPN exits commonly live in datacenter address space, so a session claiming to be a regular consumer while arriving from hosting ranges is a strong tell — the same ownership logic used across proxy detection. Its limit is equally structural: it catches datacenter exits and says nothing about VPN services that route through residential-style addresses.
Behavioral patterns
A VPN exit is one address carrying many unrelated users. Session diversity, geographic spread of accounts, and concurrency levels no household produces all mark an address as shared egress infrastructure — behavior consistent with an anonymization endpoint rather than a home connection.
Continuous active testing
Exit inventories rotate: providers add capacity, retire servers, and recycle addresses. A point-in-time VPN list therefore decays like any other IP list, which is why serious classification re-verifies by continuously observing the infrastructure and weighting each record by observation count and recency. A current exit and a stale entry are different facts, and the data model should say which one you're holding.
VPN or proxy? Why the line blurs
A VPN exit and a proxy endpoint perform the same function from the defender's side of the connection: they relay traffic so that the origin IP you see is not the user's own. The tunneling technology differs, the marketing differs, but the observable behavior — one address forwarding many people's traffic — is the same phenomenon. That is why observation-based systems classify what a network endpoint does rather than maintaining a separate VPN silo: in Solarflare's dataset, VPN-style behavior is one category of the network_type field, recorded alongside residential, mobile, and datacenter proxy observations (the changelog notes network-type classification covering exactly these categories since v0.2). The convergence is accelerating from both directions — residential-VPN products and residential proxy pools increasingly rent the same address space — so treating VPN detection as a standalone discipline mostly means running the same evidence chain twice. The umbrella framework is the proxy detection guide; the categories are broken down in residential, datacenter, and mobile proxies.
Client-side signals vs. network-side data
| Signal | Vantage point | What it proves | How it's evaded |
|---|---|---|---|
| Timezone / locale mismatch | Client | Device settings disagree with IP geography | Matching browser profile to exit location |
| WebRTC / DNS leakage | Client | The tunnel doesn't cover all traffic paths | Leak-hardened clients, disabled WebRTC |
| Transport fingerprint mismatch | Client | Something re-terminates the connection | Fingerprint-matched tooling |
| IP observed as anonymization exit | Network | The address itself relays third-party traffic | Rotating exits faster than observation — expensive |
| Hosting-range ownership | Network | The address lives in datacenter space | Residential-style exits |
Client probes tell the device's story; IP data tells the network's story. The client-side layer belongs to your bot- and fraud-tooling; the network-side layer arrives as data and works on the first request. They complement rather than replace each other — the same relationship covered in bot detection vs proxy detection.
Why is VPN detection hard to get right?
Because so much VPN use is legitimate. Corporate remote access puts entire companies behind VPN egress; privacy-conscious consumers tunnel everything, everywhere; travelers use VPNs to reach home services. Exits also rotate onto recycled addresses, so yesterday's exit can be today's ordinary server — stale evidence punishes bystanders. And every exit is shared egress: one address stands for many users, so any per-IP action lands on all of them. A VPN positive is context, not a verdict, and the cost of overreacting is a blocked customer who did nothing but value their privacy.
What should you do when you detect a VPN?
Grade the response by evidence strength, exactly as with any proxy signal. A high-confidence classification — an address repeatedly and recently observed operating as anonymization infrastructure, with behavior cleanly matching known patterns — supports a hard block where your policy genuinely demands one, such as high-risk payouts or geo-restricted flows. Low-confidence or stale evidence supports step-up verification and nothing more: an email, OTP, or MFA challenge that a legitimate VPN user passes in seconds while automation absorbs the cost. VPN-style classification plus independent risk signals — velocity anomalies, account-history flags, mismatched client environment — justifies escalation that neither signal earns alone. One published limitation matters for policy design: responses do not attribute which provider an exit belongs to, so rules must key on evidence strength and network type, never on brand. What the confidence level is built from — observation count, recency, behavioral match — is covered in IP confidence score.
Proxy detection's closest sibling
VPN detection is the same evidence problem as proxy detection with the same freshness problem attached — observed infrastructure, decaying signals, graduated responses. Teams that treat it that way get one coherent policy instead of two half-policies. See how the signal fits a fraud stack on the fraud prevention use case page, or request a sample to test observed VPN-style classifications against your own traffic.
Frequently asked questions
- Can VPN detection identify which VPN provider someone uses?
- No — and Solarflare deliberately doesn't attribute providers. The useful signal is that an address has been observed behaving as anonymization infrastructure, with confidence and recency attached. Policy should key on evidence strength, not on which brand operates the exit.
- Is using a VPN a sign of fraud?
- By itself, no. Corporate remote access, privacy preference, and travel account for a large share of VPN traffic. A VPN signal earns weight when it coincides with other risk evidence — which is why graduated responses beat blanket VPN blocks.
- Why do VPN detection results change over time?
- Because exit inventories rotate: providers add and retire servers, and addresses get recycled. Classifications built on continuous observation update as the evidence changes, which is also why records carry first_seen and last_seen timestamps.