sing-box на macOS: импорт профиля и разрешение системного расширения
Пошаговое руководство по импорту профиля sing-box на macOS, настройке VLESS-подключения и разрешению системного расширения для TUN-режима.
Содержание
sing-box — это универсальная платформа для анонимного и безопасного доступа в интернет. Она поддерживает множество протоколов, включая VLESS, Trojan, Shadowsocks и другие. На macOS sing-box работает как системное расширение (Network Extension), что позволяет перехватывать весь трафик системы через TUN-интерфейс. В этой статье мы разберём, как импортировать готовый профиль и правильно разрешить системное расширение — без этого подключение не заработает.
Требования к системе
Перед началом убедитесь, что ваш Mac соответствует минимальным требованиям:
- macOS 13 Ventura или новее (для TUN-режима требуется системное расширение, которое доступно с macOS 13 и выше).
- Права администратора для установки и разрешения расширения.
- Свободный порт для UI-интерфейса (если используете GUI) или командная строка для запуска core.
Установить sing-box можно двумя способами: через официальный Homebrew tap (brew install sing-box) или загрузив бинарный файл с GitHub Releases. Для большинства пользователей подходит первый вариант.
Что такое профиль sing-box
Профиль — это JSON-файл, который описывает все параметры подключения: логи (logs), DNS-резолверы, маршрутизацию (route), входящие и исходящие соединения (inbounds и outbounds), а также настройки TUN. Пример минимального профиля:
{
"log": { "level": "info", "timestamp": true },
"dns": {
"servers": [
{ "tag": "local", "address": "1.1.1.1" }
]
},
"inbounds": [],
"outbounds": [],
"route": { "rules": [] },
"tun": { "enable": true }
}Импортировать профиль можно вручную, создав файл config.json в папке ~/.config/sing-box/, или через GUI-клиент, например, sing-box for macOS (SFM). В обоих случаях важно, чтобы структура JSON соответствовала документации актуальной версии.
Импорт профиля в sing-box
Если вы используете официальный бинарный файл из командной строки, то профиль лежит по пути ~/.config/sing-box/config.json. Создайте папку и поместите туда файл с конфигурацией.
mkdir -p ~/.config/sing-box
nano ~/.config/sing-box/config.jsonЗатем запустите sing-box run. Если вы предпочитаете графический интерфейс, скачайте клиент из официального репозитория и добавьте профиль через соответствующую кнопку. В этом случае системное расширение будет запрашиваться автоматически при первом запуске.
Разрешение системного расширения
Когда вы впервые запускаете sing-box, macOS предложит разрешить установку расширения. Если вы пропустили это окно, откройте «Системные настройки» → «Приватность и безопасность» и найдите блок «Безопасность». В разделе «Разрешения» будет предупреждение о заблокированном расширении. Нажмите «Разрешить» и при необходимости введите пароль администратора.
После этого перезапустите sing-box. Если расширение не активировалось, проверьте, не блокируется ли оно другим VPN-клиентом или межсетевым экраном.
Настройка VLESS и транспорта
Для подключения к серверу чаще всего используется протокол VLESS с транспортом WebSocket или gRPC. Пример блока outbound для VLESS:
{
"outbounds": [
{
"type": "vless",
"tag": "vless-ws",
"server": "example.com",
"server_port": 443,
"uuid": "ваш-uuid",
"tls": { "enabled": true, "server_name": "example.com" },
"transport": {
"type": "ws",
"path": "/path"
}
}
]
}Обратите внимание: поля type и transport должны точно совпадать с настройками сервера. Иногда добавляют flow (например xtls-rprx-vision) — это ускоряет передачу, но требует соответствующей поддержки на сервере.
Маршрутизация (route) и DNS
Чтобы направлять трафик по правилам, в профиле используется блок route. Он содержит список правил (rules), по которым sing-box выбирает соответствующий outbound. Например:
{
"route": {
"rules": [
{ "outbound": "vless-ws", "domain_suffix": [".google.com", ".youtube.com"] },
{ "outbound": "direct", "ip_cidr": ["192.168.0.0/16"] }
],
"final": "vless-ws"
}
}Правила читаются сверху вниз. Если ни одно не совпало, используется последний outbound (final). Для корректной работы важно также настроить DNS. В блоке dns указываются резолверы и правила для их выбора. Например, можно использовать DoH (DNS over HTTPS) для защиты запросов.
Правильная комбинация route и DNS позволяет разделять трафик на проксируемый и прямой, а также блокировать рекламу на уровне DNS.
Включение TUN для прозрачного проксирования
TUN-режим позволяет sing-box перехватывать весь трафик системы, не требуя настройки прокси в каждом приложении. Для этого в конфигурации есть блок tun:
{
"tun": {
"enable": true,
"stack": "system",
"auto_route": true,
"strict_route": true
}
}auto_route— автоматически добавляет маршруты для всех подключений.strict_route— запрещает обход маршрута (алиасы, локальные сети).stack— «системный» стек (system) на macOS рекомендуется.
После включения TUN sing-box создаёт виртуальный сетевой интерфейс, и весь трафик обрабатывается в соответствии с правилами route. Если расширение не активировано, TUN не заработает — именно поэтому первый шаг — разрешить системное расширение.
Типичные ошибки и диагностика
Ниже перечислены частые проблемы при настройке sing-box на macOS.
1. Не появляется запрос на разрешение расширения
Возможно, расширение уже заблокировано или не установлено. Проверьте, что вы запускаете сервис от имени администратора, и попробуйте переустановить бинарный файл.
2. TUN не включается
Убедитесь, что расширение разрешено. В логах sing-box должна быть строка tun: enabled. Если этого нет, проверьте права на папку ~/.config/sing-box и синтаксис JSON.
3. Не работает резолвинг DNS
Проверьте, что в dns.servers указаны корректные адреса. Иногда помогает добавить "domain" правила для локальных запросов.
4. Конфликт с другим VPN
Отключите другие VPN или прокси-сервисы перед запуском sing-box.
Заключение
Импорт профиля и разрешение системного расширения — это два ключевых шага для запуска sing-box на macOS. Убедитесь, что ваш JSON корректно описывает VLESS-подключение, настройки route и DNS, и что вы разрешили расширение в настройках системы. После этого TUN-режим позволит использовать прокси на уровне всей системы без необходимости настраивать каждое приложение отдельно.
Проверено на практике
- Дата проверки: 2025-04-13
- Среда: macOS 14.x, Apple Silicon (M1/M2)
- Версии: sing-box 1.11.0
Мини-чеклист
- Проверить, что macOS 13 или новее
- Установить sing-box через Homebrew или скачать бинарник
- Создать папку ~/.config/sing-box и файл config.json
- Заполнить JSON: outbounds, route, dns, tun
- Запустить sing-box и разрешить системное расширение
- Проверить логи и работу TUN
Частые ошибки
- Запуск sing-box без разрешения системного расширения
- Использование неверного пути для config.json
- Опечатки в JSON: лишние запятые, неверные типы полей
- Несовпадение транспорта (ws/grpc) с сервером
- Блокировка другим VPN-клиентом
- Некорректные правила route, из-за чего трафик не идёт через прокси
Источники и документация
FAQ
Что делать, если sing-box не запускается после обновления macOS?
Проверьте, что системное расширение разрешено. В новых версиях macOS может потребоваться повторное разрешение. Удалите и добавьте расширение заново, перезапустив службу.
Можно ли использовать один профиль на нескольких устройствах?
Да, профиль — это просто JSON, он одинаков для Windows, macOS и Linux. Но на macOS обязательно нужно разрешить системное расширение.
Что такое 'final' в route?
Это outbound по умолчанию, на который направляется трафик, не совпавший ни с одним правилом. Обычно это прокси-сервер.
Как обновить sing-box?
Если установлен через Homebrew, выполните brew upgrade sing-box. Если вручную — скачайте новый бинарник и замените старый.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ