Macos

Macos

Инструкция для macOS (Apple Silicon) по установке и автоматическому запуску Clash Verge Rev с Hysteria2, TUN Mode и раздельной маршрутизацией.

Конфигурация проверена на macOS 26.5 с Clash Verge Rev 2.4.7. Версия 2.5.1 в этой системе имела проблемы с подписью helper и восстановлением TUN после перезагрузки, поэтому ниже используется 2.4.7.

Где взять конфигурацию

Администратор выдаёт персональную секретную ссылку вида https://vpn-panel.nordpatriot.ru/s/. В рабочей ссылке после /s/ находится секретный токен профиля.

На своей секретной странице копируйте готовую конфигурацию нужного типа:

  • Connection URL — для импорта по ссылке или QR-коду;
  • sing-box · Split — российские адреса напрямую, остальные через VPN (рекомендуется);
  • sing-box · All — весь трафик через VPN;
  • Clash Verge — готовая YAML-конфигурация.

Ничего не разбирайте и не подставляйте вручную: адрес узла, порт, логин, пароли и TLS-параметры уже включены. Секретную ссылку и полученные конфигурации нельзя публиковать или передавать посторонним.

1. Установка Clash Verge Rev

  1. Открыть официальный релиз Clash Verge Rev 2.4.7.
  2. Для Mac с процессором Apple M1/M2/M3/M4 скачать Clash.Verge_2.4.7_aarch64.dmg.
  3. Перетащить Clash Verge.app​ в каталог /Applications.
  4. Извлечь DMG.
  5. Первый раз запустить приложение именно из /Applications:
open -n "/Applications/Clash Verge.app"

Не следует запускать приложение непосредственно из DMG или Downloads. Правильный путь процесса:

/Applications/Clash Verge.app/Contents/MacOS/clash-verge

Проверка подписи и нотарификации:

codesign --verify --deep --strict --verbose=2 "/Applications/Clash Verge.app"
spctl -a -vv -t exec "/Applications/Clash Verge.app"

Ожидаемый результат: valid on disk​ и accepted; source=Notarized Developer ID.

2. Добавление конфигурации

  1. Откройте свою персональную секретную страницу профиля.
  2. В блоке Clash Verge нажмите «Скопировать» либо скачайте готовый YAML-файл.
  3. В Clash Verge откройте Profiles, импортируйте скачанный YAML или создайте локальный профиль и вставьте скопированную конфигурацию.
  4. Выберите профиль и установите режим Rule, а не Global.

Конфигурация уже содержит параметры подключения и правила: российские домены/IP и локальные сети идут напрямую, остальной трафик — через VPN. Не заменяйте адрес, порт или пароли вручную.

3. TUN Mode и системный helper

В настройках Clash Verge включить:

  • System Proxy;
  • TUN Mode;
  • Service Mode / Admin Mode;
  • Start at Login / Auto Launch;
  • Silent Start.

При установке Service Mode macOS запросит пароль администратора.

Если установка helper из интерфейса не проходит, переустановить его штатными утилитами:

APP="/Applications/Clash Verge.app"

sudo "$APP/Contents/Resources/resources/clash-verge-service-uninstall"
sudo "$APP/Contents/Resources/resources/clash-verge-service-install"

Проверка helper:

launchctl print system/io.github.clash-verge-rev.clash-verge-rev.service   | grep -E "state =|runs =|pid =|last exit code"

Ожидается state = running​ и last exit code = 0​ либо (never exited).

4. Исправление TUN после перезагрузки

4.1 App Translocation

Если процесс запущен из пути /private/var/.../AppTranslocation/...​, закрыть Clash Verge и запустить точную копию из /Applications:

open -n "/Applications/Clash Verge.app"

Проверка:

ps -axo pid,command | grep -E "[C]lash Verge|[v]erge-mihomo"

4.2 Неверный путь в автозапуске

Проверить LaunchAgent:

PLIST="$HOME/Library/LaunchAgents/io.github.clash-verge-rev.clash-verge-rev.plist"
plutil -p "$PLIST"

В ProgramArguments должен быть ровно один путь:

/Applications/Clash Verge.app/Contents/MacOS/clash-verge

Если там присутствует AppTranslocation, пересоздать список аргументов:

PLIST="$HOME/Library/LaunchAgents/io.github.clash-verge-rev.clash-verge-rev.plist"

launchctl bootout "gui/$(id -u)" "$PLIST" 2>/dev/null || true
/usr/libexec/PlistBuddy -c "Delete :ProgramArguments" "$PLIST"
/usr/libexec/PlistBuddy -c "Add :ProgramArguments array" "$PLIST"
/usr/libexec/PlistBuddy -c   "Add :ProgramArguments:0 string /Applications/Clash Verge.app/Contents/MacOS/clash-verge"   "$PLIST"
launchctl bootstrap "gui/$(id -u)" "$PLIST"

4.3 Ошибка IPC permission denied

На проверенной системе helper создавал /tmp/verge​ как root:wheel​ с режимом 2770​. Пользователь-администратор состоял в группе admin​, но не в wheel​, поэтому Mihomo не мог создать verge-mihomo.sock, а Clash при запуске сбрасывал TUN Mode.

Диагностика:

ls -lad /tmp/verge
id
tail -n 50   "$HOME/Library/Application Support/io.github.clash-verge-rev.clash-verge-rev/logs/sidecar/sidecar_latest.log"

Характерная ошибка:

External controller unix listen error:
listen unix /tmp/verge/verge-mihomo.sock: bind: permission denied

Исправление:

SERVICE_PLIST="/Library/LaunchDaemons/io.github.clash-verge-rev.clash-verge-rev.service.plist"

sudo plutil -replace GroupName -string admin "$SERVICE_PLIST"
sudo chgrp admin /tmp/verge
sudo chmod 2770 /tmp/verge

sudo launchctl bootout system "$SERVICE_PLIST"
sudo launchctl bootstrap system "$SERVICE_PLIST"

Это даёт доступ к IPC root и всем локальным администраторам Mac, но не обычным пользователям.

После исправления ожидаются такие права:

drwxrws--- root admin /tmp/verge
srw-rw-rw- root admin /tmp/verge/verge-mihomo.sock

При включённом TUN процесс verge-mihomo​ должен работать от root.

5. Проверка работы

Проверить настройки приложения:

grep -E "enable_(tun_mode|auto_launch|silent_start|system_proxy)"   "$HOME/Library/Application Support/io.github.clash-verge-rev.clash-verge-rev/verge.yaml"

Ожидаемые значения:

enable_tun_mode: true
enable_auto_launch: true
enable_silent_start: true
enable_system_proxy: true

Проверить процессы:

ps -axo user,group,pid,command   | grep -E "[C]lash Verge|[v]erge-mihomo|[c]lash-verge-service"

Проверить внешний IPv4:

curl -4 https://api.ipify.org

Проверить маршрутизацию в логах:

LOG="$HOME/Library/Application Support/io.github.clash-verge-rev.clash-verge-rev/logs/sidecar/sidecar_latest.log"

grep "using PROXY" "$LOG" | tail
grep "match.*DIRECT" "$LOG" | tail

Для Codex ожидается запись вида:

Codex (Service) --> chatgpt.com:443 match Match using PROXY[hy2-codex]

6. Проверка после перезагрузки

После перезагрузки Mac проверить:

  1. Clash Verge запущен из /Applications​, без AppTranslocation.
  2. Системный helper имеет состояние running.
  3. enable_tun_mode​ остался равен true.
  4. verge-mihomo​ работает от root.
  5. Внешний IP отличается от прямого подключения.
  6. Домены .ru​, .рф​, российские IP, локальная сеть и OpenVPN идут по DIRECT​; остальной трафик — через PROXY.

Если TUN снова выключился, сначала проверить права /tmp/verge​ и наличие permission denied​ в sidecar_latest.log.