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, и в таком случае необходимо исключить его из фильтрации:

  1. Откройте меню AdGuard.
  2. Выберите Настройки....
  3. Переключитесь на вкладку Сеть.
  4. Кликните по кнопке Приложения....
  5. Найдите приложение, которое вы хотите добавить в исключения, и уберите галочку напротив него.

Альтернативы ипользованию Network Extension

Невозможно предвидеть все потенциальные проблемы, которые могут возникнуть в Big Sur, ведь существует бесчисленное количество комбинаций железа, софта и настроек. Так что, если вы всё же столкнётесь с какими-либо сложностями, пожалуйста, напишите нам в поддержку — но также вы можете попробовать одно из альтернативных решений.

Использование в режиме "Автоматический прокси"

Вы можете попробовать переключить AdGuard в режим Автоматический прокси. После этого система будет принимать AdGuard за прокси, и тем самым получится избежать некоторых потенциальных проблем совместимости с Network Extensions.

  1. Откройте меню AdGuard.
  2. Выберите Настройки....
  3. Переключитесь на вкладку Сеть.
  4. Кликните по кнопке Выбрать режим....
  5. Выберите Автоматический прокси.

AdGuard автоматически добавит .pac-файл в сетевые настройки вашего Mac, и теперь система будет распознавать AdGuard как прокси и попытается направлять через него весь трафик.

Примите во внимание, что некоторые приложения могут игнорировать эту настройку, и в таком случае их трафик не будет фильтроваться.

Включение Kernel Extensions

В некотором роде это — крайняя мера. Чтобы включить Kernel Extensions, сначала вам потребуется отключить Защиту системной целостности (System Integrity Protection, SIP). Есть шанс, что это поможет, но также есть и риск, что это создаст больше проблем, чем решит. Если вы настроены решительно, следуйте этой инструкции из Базы знаний.

Ещё раз повторюсь, что этот метод стоит использовать только в том случае, когда всё остальное оказалось неэффективным, и даже тогда делать это с осторожностью.

В заключение

Как вы могли понять из этой статьи, Big Sur — это одновременно и хорошие, и плохие новости. Время покажет, в какую сторону в итоге качнётся маятник: возникнет ли в будущем больше проблем или же, наоборот, в результате произведённых изменений появится больше новых возможностей. Пока что всё, что вы можете сделать — вооружиться знаниями из этой статьи и быть готовыми встретить любые потенциальные сложности. И будем вместе надеяться, что Apple напрягутся и исправят всё в кратчайшие сроки!

Vasily Bagirov для AdGuard for Mac Новости индустрии
12 ноября 2020 г.
Загружая комментарии, вы соглашаетесь с условиями использования и политикой конфиденциальности.
Акция AdGuard на Хэллоуин
В этом году у нас нет никаких страшилок, только много сюрпризов для вас: скидка 40% на все лицензионные ключи блокировщика AdGuard, включая продление и обновление уже имеющихся у вас ключей, и скидка 60% на годовую подписку AdGuard VPN!
Официальный релиз AdGuard VPN для Android
Встречайте первую стабильную версию AdGuard VPN для Android!
Загрузка AdGuard началась! Нажмите на кнопку, на которую указывает стрелка, чтобы начать установку программы. Спасибо за выбор AdGuard! Выберите «Открыть», нажмите «OK» и дождитесь загрузки файла. В открывшемся окне перетащите значок AdGuard в папку «Приложения». Спасибо за выбор AdGuard! Выберите «Открыть», нажмите «OK» и дождитесь загрузки файла. В открывшемся окне нажмите «Установить». Спасибо за выбор AdGuard!