Let's assume we need a VPN to access some site, e.g. for bypassing geo-blocks. But those site doesn't want VPN users. A good example is Netflix. However, I don't want to specify this just on Netflix, since there are other services blocking VPNs as well.
So I thought about how those target site could detect if I'm using a VPN or not. One indicator is a high amount of connections from a single IP. This is relatively easily fixable with multiple external IPs on the VPN server. But those IPs themselves could leak this information.
1. Whois data
PrivateVPN is an example:
# whois $(dig +short de-nur.pvdata.host) | grep -i vpn
% Abuse contact for '185.89.36.0 - 185.89.36.127' is 'support@privatevpn.com'
netname: PRIVATEVPN
VPN
in the whois or even the name of common VPN providers are clearly and easily to match.
2. IP databases
I found ipinfo.io where we can enter an IP and even get information about the device type. For example, another VPN server 162.245.206.242
gave me
company: Object
name: "i3D.net B.V"
domain: "i3d.net"
type: "hosting"
where a query with my real IP (normal private customer home internet connection) shows type: "isp"
with the name of my ISP. So I assume that simply querying those APIs and ban all users with type: hosting
would match most VPN servers.
How could we hide it?
I don't see a practical way to hide it. Services like ipinfo earn money by collecting such information and keeping them up to date.
The only way would be a VPN service that uses servers hosted by private ISPs. Is there any other method of using a VPN service without letting the target site knowing it?