Big Sur: хороший, плохой, злой
Не так давно мы выпустили AdGuard 2.5 для Mac, в котором, помимо прочего, был сделан большой акцент на совместимости с приближающейся новой версией macOS Big Sur. Патч 2.5.1, который последовал совсем недавно, также был под завязку набит изменениями, направленными на улучшение совместимости.
Должен сказать, что подружить AdGuard и Big Sur — далеко не самая простая задача. Apple в этом году взялись за macOS особенно сильно и перевернули всё вверх дном.
Во-первых, дело в устаревании Kernel Extensions. Если вы частый гость в нашем блоге, вы наверное помните, что мы упоминали про это ещё в марте. Найти информацию на эту тему в интернете достаточно легко, но вот сильно сокращённая версия: Kernel Extensions — это API, на который AdGuard полагался в своих предыдущих версиях. С появлением Big Sur macOS ушёл от этого API к новому, который очень сильно отличается от прежнего. Все внутренние процессы AdGuard пришлось перестраивать, подгоняя под новый API.
И это только один из факторов. Также вместе с Big Sur Apple осуществляют переход с процессоров Intel на процессоры ARM. Как вы уже догадались, это тоже обеспечило нас дополнительной работой. Давайте внимательнее взглянем на обе эти причины.
Поддержка ARM
Разберёмся сначала с этой причиной, поскольку тут всё более-менее очевидно. Apple позволили разработчикам получить так называемый Developer Transition kit, который включает в себя, помимо прочего, прототип компьютера Mac Mini на основе ARM.
Мы всё оттестировали на нём и рады сообщить, что AdGuard бесконфликтно работает с процессорами ARM.
Переход на Network Extensions
Network Extensions — это API, который приходит на смену старому Kernel Extensions API. Почему вообще Apple решили заменить API? Их основной мотив — запретить разработчикам работать в контексте ядра ОС, ограничив их пределами User mode. Корректная реализация Kernel Extensions — непростая задача. Достаточно допустить одну ошибку, и это уже может привести к вылету системы. Перевод на User mode всех функций, которые ранее можно было реализовать только на уровне ядра, должно в теории сделать ОС более стабильной. К сожалению, у этого есть своя цена.
Что касается AdGuard, как уже было упомянуто выше, API, который мы будем отныне использовать для осуществления системной фильтрации, называется Network Extensions. И — вы угадали верно — переход на него оказался весьма болезненным. Big Sur — первая ОС, где Network Extensions применяется повсеместно. Мы отправили огромное количество отчётов о багах, провели несчитанные часы в дискуссиях с разработчиками Apple. К счастью, всё это было не напрасно — все критические проблемы работы с Network Extensions были решены.
Имейте в виду, что не все эти ключевые изменения были внесены в macOS Catalina, так что там вам придётся полагаться на старый добрый Kernel Extensions.
Однако, несмотря на все наши усилия, в работе с Network Extensions по-прежнему остались определённые ограничения. Вот список известных проблем и возможных путей их решения:
Совместимость с локальными прокси
Изменились некоторые нюансы одновременной работы AdGuard с прокси. Есть хорошие новости: любой удалённый (не локальный) прокси будет без проблем работать в Big Sur вместе с AdGuard и не потребует от вас никаких дополнительных действий. Но в случае с локальным прокси (localhost) вам необходимо убрать этот прокси из системных настроек и добавить в настройки прокси AdGuard.
Чтобы настроить вышестоящий прокси в AdGuard для Mac на Big Sur, вам необходимо перейти в Меню AdGuard -> Дополнительно -> Расширенные настройки.... Кликните по области Значение настройки upstream.proxy
, чтобы настроить прокси.
Введите строку вида scheme://user:password@host:port
, где
scheme
имеет значениеhttp
,https
,socks4
илиsocks5
, в зависимости от типа прокси.
Если вы используете тип прокси
socks5
, установите значение настройкиupstream.proxy.socks5udp
какtrue
, чтобы указать AdGuard направлять UDP-трафик через прокси-сервер.
user
иpassword
— имя пользователя и пароль от вашего прокси соответственно (если требуются). Игнорируйте эти параметры, если один из них (или оба) не применимы к данному прокси.host
— IP-адрес вашего прокси-сервера.port
— желаемый номер порта, который будет использоваться прокси-сервером.
Пример: строка
socks5://localhost:6322
настроит локальный прокси типа SOCKS5, который слушает порт 6322 и не требует имени пользователя и пароля.
Нажмите Применить, чтобы заставить AdGuard пересылать весь трафик через настроенный прокси-сервер.
Инструкции для некоторых популярных локальных прокси
В зависимости от того, какой локальный прокси вы используете, могут быть некоторые отличия в их настройке. Более подробные инструкции для двух из наиболее популярных прокси (Surge, Shadowsocks) доступны по ссылке в нашей базе знаний.
VPN-приложения с легаси API
Несмотря на то, что AdGuard отображается в системных настройках как VPN, конфликтов с другими приложениями на основе VPN возникнуть не должно. Однако, если вы используете VPN-приложение, скачанное не из AppStore, существует шанс, что оно использует сторое VPN API, и в таком случае необходимо исключить его из фильтрации:
- Откройте меню AdGuard.
- Выберите Настройки....
- Переключитесь на вкладку Сеть.
- Кликните по кнопке Приложения....
- Найдите приложение, которое вы хотите добавить в исключения, и уберите галочку напротив него.
Альтернативы ипользованию Network Extension
Невозможно предвидеть все потенциальные проблемы, которые могут возникнуть в Big Sur, ведь существует бесчисленное количество комбинаций железа, софта и настроек. Так что, если вы всё же столкнётесь с какими-либо сложностями, пожалуйста, напишите нам в поддержку — но также вы можете попробовать одно из альтернативных решений.
Использование в режиме "Автоматический прокси"
Вы можете попробовать переключить AdGuard в режим Автоматический прокси. После этого система будет принимать AdGuard за прокси, и тем самым получится избежать некоторых потенциальных проблем совместимости с Network Extensions.
- Откройте меню AdGuard.
- Выберите Настройки....
- Переключитесь на вкладку Сеть.
- Кликните по кнопке Выбрать режим....
- Выберите Автоматический прокси.
AdGuard автоматически добавит .pac-файл в сетевые настройки вашего Mac, и теперь система будет распознавать AdGuard как прокси и попытается направлять через него весь трафик.
Примите во внимание, что некоторые приложения могут игнорировать эту настройку, и в таком случае их трафик не будет фильтроваться.
Включение Kernel Extensions
В некотором роде это — крайняя мера. Чтобы включить Kernel Extensions, сначала вам потребуется отключить Защиту системной целостности (System Integrity Protection, SIP). Есть шанс, что это поможет, но также есть и риск, что это создаст больше проблем, чем решит. Если вы настроены решительно, следуйте этой инструкции из Базы знаний.
Ещё раз повторюсь, что этот метод стоит использовать только в том случае, когда всё остальное оказалось неэффективным, и даже тогда делать это с осторожностью.
В заключение
Как вы могли понять из этой статьи, Big Sur — это одновременно и хорошие, и плохие новости. Время покажет, в какую сторону в итоге качнётся маятник: возникнет ли в будущем больше проблем или же, наоборот, в результате произведённых изменений появится больше новых возможностей. Пока что всё, что вы можете сделать — вооружиться знаниями из этой статьи и быть готовыми встретить любые потенциальные сложности. И будем вместе надеяться, что Apple напрягутся и исправят всё в кратчайшие сроки!