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 '184.108.40.206 - 220.127.116.11' is 'email@example.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
18.104.22.168 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?