Класс Android VpnService и его класс-строитель

У меня есть два вопроса относительно класса VpnService.Builder.

Предположим, что я знаю, что приложение связывается со своим сервером www.somedomain.com, я знаю, что IP-адрес сервера 210.32.204.165.

  • О функции addAddress (String address, int prefixLength). В документации говорится, что эта функция "добавляет сетевой адрес в интерфейс VPN", что это значит? Означает ли это, что трафик идет по этому адресу (IP-адрес сервера приложения) будет проходить через VPN или трафик с этого адреса (IP-адрес устройства) будет проходить через VPN?

  • Существует функция addAllowedApplication (String packageName), в которой указывается, какой трафик приложения проходит через туннель VPN. Есть ли способ или функция, чтобы заставить весь трафик отправлять серверу www.somedomain.com пройти через туннель VPN?

Ответ 1

  • Это означает, что трафик идет по этому адресу (IP-адрес сервера приложения) будет проходить через VPN

  • ссылка: если этот метод никогда не вызывается, все приложения разрешены по умолчанию. Если некоторые приложения добавлены, другие, не добавленные приложения будут использовать сети, как если бы VPN не выполнялся. Таким образом, вы никогда не сможете вызвать этот метод, и все приложения будут использовать VPN

Ответ 2

Я не тестировал эту функцию, но NetGuard приложение имеет функцию пересылки портов.

Это приложение действует как брандмауэр для маршрутизации другого трафика приложения через VPN.

Проект с открытым исходным кодом. вы можете найти его на github.