Про то, как приложения сейчас воюют с VPN, уже написано куча постов. Но тут попался забавный кейс - решил поделиться.
Захожу сегодня в магазин, открываю приложение, а оно не запускается. Пишет: "Возможно включен VPN, или отсутствует подключение к интернету".
VPN у меня, естественно, не включен, но есть нюанс - на телефоне постоянно работает локальный VPN от рекламорезки AdGuard (не путать с AdGuard VPN). Это штатный режим его работы на устройствах без root - создается виртуальный туннель внутри системы, через который прогоняется трафик для фильтрации рекламы. Никаких внешних серверов, все происходит локально на устройстве.
Вот как это выглядит в системе:
Интернет при этом работает нормально. Если проверить по 2ip.ru, то все чисто - обычный российский IP, никакого прокси или внешнего VPN:
Окей, первая мысль - может AdGuard что-то режет и из-за этого приложение не может подключиться. Захожу в настройки и отключаю фильтрацию конкретно для приложения Дикси (то есть трафик идет напрямую, без обработки):
Но это не помогает, приложение все так же отказывается работать. Тогда полностью отключаю AdGuard (а вместе с ним и сам VPN-туннель):
И внезапно всё начинает работать:
И вот тут становится понятно, что происходит. Приложение вообще не пытается разобраться, что за VPN используется. Ему плевать:
локальный он или внешний
режет ли он трафик
меняется ли IP
Логика максимально простая - есть интерфейс типа tun0, значит это VPN - блокируем работу. То есть никакой проверки шлюза, IP или геолокации здесь нет. Просто факт наличия туннеля и все.
Скорее всего, это максимально дешевая реализация защиты на отвали. Вместо нормальной проверки они просто рубят все подряд, включая легитимные вещи вроде локальных, или служебных VPN. В итоге страдают не те, кто реально юзает VPN, а обычные пользователи, у которых просто включена блокировка рекламы, или поднят тоннель до домашней, или рабочей сети.