TUN нужны три вещи, и нехватка любой всё останавливает

Ядру надо создать виртуальный адаптер, переписать таблицу маршрутизации так, чтобы маршрут по умолчанию вёл на него, и иметь права на оба действия. Нет чего-то одного — переключатель не удержится. Прежде чем что-то переустанавливать, откройте страницу логов и вернитесь к моменту нажатия: строки про TUN скажут, отказано ли в правах, не открылось ли устройство или маршрут так и не был прописан. Эта одна строка определяет всё дальнейшее.

  • Виртуальный адаптер. В Windows за него отвечает драйвер Wintun, в macOS и Linux — системные устройства utun и tun.
  • Таблица маршрутизации. Маршрут по умолчанию должен переехать на виртуальный адаптер, а это во всех распространённых системах привилегированная операция.
  • Права. Администратор, root или заранее установленная клиентом фоновая служба.
Партнёрский материалОткуда взять ссылку на подписку?Партнёрский сервис даёт 1 ГБ высокоскоростного трафика Гонконга при регистрации — импорт в один клик.Получить быстрые серверы

Windows: драйвер, повышение прав и режим службы

  • Файла драйвера нет. Клиенты обычно кладут dll от Wintun рядом с исполняемым файлом, и адаптер не создастся, если антивирус отправил её в карантин или архив распаковался не полностью. Распакуйте заново целиком и добавьте папку клиента в исключения антивируса.
  • Запущено без повышения прав. Прямой способ — правый клик и «Запуск от имени администратора». Если делать так каждый раз надоело, ставьте режим службы.
  • Уже работает другой VPN-клиент. Корпоративный VPN, игровой ускоритель, ещё один прокси — кто первым забрал маршрут по умолчанию, тот и прав. Закрывайте их полностью: свернуть в трей не считается.
  • Hyper-V, WSL2 и Docker Desktop добавляют свои виртуальные адаптеры, и таблица маршрутов становится заметно сложнее. TUN поднимается, но маршрут по умолчанию не забирает — со стороны это выглядит как «включено, а интернета нет».

Режим службы (в разных клиентах его называют Service Mode или системной службой) стоит отдельного абзаца. Он ставит постоянную системную службу, которая и работает с адаптером и маршрутами, так что самому клиенту повышение прав больше не нужно. В Clash Verge Rev для неё есть отдельная кнопка установки в настройках; после этого TUN поднимается и при обычном двойном клике. При установке один раз выскочит UAC — вот от него никуда.

macOS: чаще всего застревают на выдаче разрешения

  • При первом включении TUN система просит пароль, чтобы разрешить фоновый помощник. Нажали «Отменить» — окно нередко больше не появляется, и переключатель продолжает сбрасываться. Закройте и снова откройте клиент или найдите пункт, который переустанавливает помощник, чтобы вопрос задали заново.
  • В системных настройках, в списке объектов входа и фоновых расширений, запись клиента может оказаться выключенной. С выключенной записью помощник не стартует.
  • Устройство utun занято. Корпоративные VPN и такие инструменты, как Tailscale, создают собственные интерфейсы utun. Сначала отключите их, потом пробуйте.

Linux: права и /dev/net/tun

  1. Сначала проверьте, есть ли устройство tun вообще. В урезанных ядрах и контейнерах его часто нет, и модуль tun приходится загружать вручную.
  2. Бинарник, запущенный обычным пользователем, не имеет прав управлять сетью. Либо используйте режим службы вашего клиента, либо выдайте бинарнику CAP_NET_ADMIN.
  3. После каждого обновления ядра выдавайте capability заново. Перезапись файла её стирает, и поломка возвращается как будто с нуля.
ls -l /dev/net/tun
sudo modprobe tun
sudo setcap cap_net_admin,cap_net_raw+ep /path/to/mihomo

Поднялся, а трафик не идёт

route print 0.0.0.0
netstat -rn
ip route show

Три команды — для Windows, macOS и Linux соответственно; смотрите, куда сейчас ведёт маршрут по умолчанию. Всё ещё на физический адаптер — значит auto-route не сработал или кто-то вернул маршрут обратно. Ведёт на виртуальный, а связи нет — переносите подозрение на DNS и брандмауэр: TUN должен перехватывать запросы на порт 53, а системный или антивирусный брандмауэр, заблокировавший виртуальный адаптер, пропускает трафик внутрь и не выпускает наружу. Есть и ещё один случай: системный прокси и TUN включены одновременно. Одни клиенты сами разрывают петлю, другие нет, поэтому на время диагностики оставьте что-то одно.

TUN не обязателен. Он решает один класс задач — программы, которые не читают системный прокси. Если у вас весь трафик это браузер, системного прокси достаточно, и вся возня с драйверами и правами из этой статьи вам не нужна. Прежде чем убить на TUN полдня, спросите себя, нужен ли он вообще.