Проблемы, специфичные для macOS 11 Big Sur

Известные проблемы

Новейшая версия macOS, BigSur, вышла в конце 2020 года. В ней появляется новый API, Network Extensions, пришедший на замену старому API Kernel Extensions. И он уже обуславливает некоторые проблемы в работе многих приложений, AdGuard не оказался исключением. В этой статье собраны известные проблемы и возможные способы их решения.

Совместимость с локальными прокси

Важно: в Big Sur 11.1 (и более новых версиях macOS) AdGuard может фильтровать локальные прокси без каких бы то ни было проблем. Все проблемы и их решения, описанные ниже, относятся к версии Big Sur 11.0. Если вы столкнулись с трудностями на ОС версии 11.1+, пожалуйста, свяжитесь со службой поддержки: support@adguard.com

Любой удалённый (не локальный) прокси будет без проблем работать в 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 пересылать весь трафик через настроенный прокси-сервер.

Пример 1: Настройка вышестоящего прокси Shadowsocks

Здесь на примере Shadowsocks проиллюстрирована настройка вышестоящего прокси в AdGuard.

Прежде всего, вам потребуется настроить работу серверной части вашего прокси. Вероятнее всего, для этого вы будете использовать JSON-файл наподобие этого (значения полей server и password здесь выбраны случайным образом):

{
    "server":"111.222.333.444",
    "server_port":8388,
    "local_port":1080,
    "password":"barfoo!",
    "timeout":600,
    "method":"chacha20-ietf-poly1305"
}

Подробнее почитать о том, как начать работать с Shadowsocks, можно на их веб-сайте.

Затем надо установить клиент Shadowsocks на ваш Mac. Убедитесь, что вы выбрали "Manual Mode" в настройках! Конфигурация с "Auto Mode" или "Global Mode" работать не будет!

Теперь надо перейти в Меню AdGuard -> Дополнительно -> Расширенные настройки... и вписать в поле Значение настройки upstream.proxy строку socks5://localhost:1080. Обратите внимание, что здесь необходимо использовать значение "local_port" из JSON-файла, упомянутого выше.

Поскольку Shadowsocks использует SOCKS5, вам также понадобится изменить значение настройки upstream.proxy.socks5udp в Расширенных настройках AdGuard на true, если вы хотите, чтобы AdGuard также направлял через прокси-сервер UDP-трафик вашего Mac.

Пример 2: Настройка вышестоящего прокси Surge

После того, как вы установите клиент прокси Surge, обратите внимание на несколько моментов, чтобы избежать конфликтов с AdGuard.

Во-первых, проверьте, что отключён System Proxy в правом нижнем углу. В противном случа Surge не будет работать вместе с AdGuard. С другой стороны, Enhanced Mode включать можно, он не вызовет конфликтов.

Теперь переходим в Меню AdGuard -> Дополнительно -> Расширенные настройки... и вписываем в поле Значение настройки upstream.proxy строку socks5://localhost:6153 или http://localhost:6152, в зависимости от типа прокси, который вы хотите использовать. Обратите внимание, что нужно использовать значение port, указанное в разделе Events вкладки Activity в вашем клиенте Surge.

Если вы выбрали протокол SOCKS5, вам также понадобится изменить значение настройки upstream.proxy.socks5udp в Расширенных настройках AdGuard на true, чтобы AdGuard мог пропускать UDP-трафик через прокси-сервер.

VPN-приложения с легаси API

Несмотря на то, что AdGuard отображается в системных настройках, как VPN, конфликтов с другими приложениями на основе VPN возникнуть не должно. Однако, если вы используете VPN-приложение, скачанное не из AppStore, существует шанс, что оно использует сторое VPN API, и в таком случае необходимо исключить его из фильтрации:

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

Совместимость с Little Snitch 5

На момент написания статьи режим фильтрации Network Extension в AdGuard не совместим с Little Snitch 5. Когда они оба запущены, существует вероятность столкнуться с проблемами в поведении различных приложений, даже если они исключениы из фильтрации в AdGuard. Эта проблема вызвана багом в Big Sur, о котором мы уже проинформировали Apple. Это позволяет надеяться, что в ближайших обновлениях он будет исправлен.

Необходимо заметить, что эту проблему нельзя решить отключением мониторинга соединений в Little Snitch, поскольку это не выгружает его расширение из системы. Мы рекомендуем использовать режим фильтрации Автоматический прокси, если вы запускаете AdGuard на одном устройстве с Little Snitch под Big Sur, во всяком случае до тех пор, пока Apple не исправит данную проблему совместимости.

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

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

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

Если вы столкнулись в какими-либо проблемами в Big Sur, которые нельзя решить способами, описанными выше, вы можете попробовать переключить AdGuard в режим Автоматический прокси.

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

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

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

Переключение на Kernel Extension в Big Sur

По умолчанию, на Big Sur AdGuard использует фреймворк Network Extension, так как используемый ранее фреймворк Kernel Extension отключён в новой версии системы. Это может вызывать проблемы совместимости, но чтобы включить Kernel Extension обратно, вам сначала потребуется отключить системную настройку безопасности System Integrity Protection (SIP). Для отключения SIP следуйте этой инструкции:

1) Кликните по Символу Apple в строке меню.
2) Кликните Перезагрузить…
3) Зажмите Command-R, чтобы запустить систему в Режиме Восстановления.
4) Кликните по кнопке Utilities.
5) Выберите Terminal.
6) Вбейте в появившемся окне csrutil disable.
7) Нажмите на клавиатуре клавишу Return или Enter.
8) Кликните по Символу Apple в строке меню.
9) Кликните Перезагрузить…

Теперь, когда SIP отключён, выполните следущие шаги для включения Kernel Extension:

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

Однако, мы рекомендуем использовать этот метод только в том случае, если все остальные не дали результата, поскольку он может привести к непредвиденным последствиям.

Совместимость с приложением Flutter

Если вы используете Flutter на Big Sur параллельно с AdGuard в режиме "Network Extension" (или с любым другим приложением типа "Transparent Proxy"), вы столкнётесь с проблемами: проекты не будут открываться и приложение окажется, по сути, сломанным. Мы уже сообщили Apple об этом баге. Тем временем, вы можете использовать одно из этих временных решений:

1) Используйте AdGuard в режиме Автоматический прокси mode

2) Отключите SIP и переключите AdGuard в режим Kernel Extension по инструкции отсюда.