Ciao, una soluzione che mi viene in mente è quella di creare una whitelist di indirizzi IP. In particolare, visto che la VPN la fornisci tu, allora saprai già a priori quali saranno gli indirizzi IP che provengono dalla VPN, per cui potrai rifiutare tutti gli altri indirizzi:
$whitelist = array('<indirizzoIP1>', '<indirizzoIP2>', ...);
if (!in_array($_SERVER['REMOTE_ADDR'], $whitelist)) {
header("HTTP/1.1 401 Unauthorized");
exit;
}