Об этом проекте
vpnonly — это лёгкий инструмент раздельного туннелирования для macOS, который направляет через WireGuard VPN только указанные вами приложения. В отличие от стандартных VPN-клиентов, туннелирующих всё, vpnonly оставляет браузер, банковские приложения и стриминговые сервисы в обычном интернет-соединении, а через выход VPN отправляет только выбранные приложения.
Инструмент использует встроенный в macOS брандмауэр PF, который может сопоставлять пакеты по членству в группе Unix, а не по приложению. Когда вы запускаете приложение через vpnonly, оно запускается со специальной назначенной ему группой, затем правила PF направляют трафик этой группы через интерфейс WireGuard, пока всё остальное продолжает работать как обычно.
Проект состоит примерно из 350 строк shell-скриптов и небольшого файла-запускателя на C. Он не требует расширения ядра, права Network Extension и никогда не изменяет /etc/pf.conf или ваш маршрут по умолчанию. Правила размещаются в отдельном anchor, а отключение VPN удаляет только эти правила.
Для поддержки WireGuard он включает стандартный wireguard-go из Homebrew. Версия CLI работает с NordVPN сразу из коробки, но провайдеры, использующие cryptokey routing (Mullvad, Proton, самостоятельно размещённые серверы), требуют пропатченного wireguard-go, который перезаписывает внутренний исходный адрес — этот патч включён в скомпилированное приложение Mac, но пока не в формулу CLI.
Известные ограничения включают Safari и другие приложения WebKit (они направляют соединения через отдельные системные процессы, которые никогда не несут группу), DNS-запросы (не туннелируются, поэтому запросы по-прежнему выходят обычным путём) и IPv6 (блокируется для приложений в группе, а не туннелируется). Также нет автоматического переподключения, если сервер отключается.
Установка через Homebrew: brew tap kanishkdan/vpnonly && brew install vpnonly. Платная версия приложения для Mac (19 долларов за два Mac) также доступна на vpnonly.app с дополнительными возможностями, такими как переключатели для каждого приложения без перезапуска, автоматические обновления и выбор страны.
Исходный код в app-engine/ публикуется с контрольными суммами, чтобы пользователи могли проверить, что именно выполняется от имени root, прежде чем доверять ему. Все привилегированные скрипты достаточно короткие, чтобы прочитать их за пять минут.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.