Pour répondre à ta question, il n'est pas possible de faire une chose pareille. Pas à ton échelle, et même si t'avais une liste clair de tout les subnets des serveurs VPN public, des milliers de personnes ont des VPN privés (moi inclue par exemple)
Du coup je te pose une question :
Pourquoi est ce que tu veux détecter une chose pareille ? Tu n'as aucun avantage à savoir si un utilisateur est derrière un VPN ou non, ça n'a aucun impacte sur ton serveur web puisque tout ce que tu vois c'est une IP avec qui discuter. peut importe si cette IP relaie votre conversation à un utilisateur réel ou bien à un serveur VPN / proxy