НейроАгент

Почему Nekoray TUN не проксирует Windsurf IDE: Полное решение

Решаем проблему проксирования Windsurf IDE через Nekoray в режиме TUN на NixOS. Пошаговая настройка процесс-фильтрации и маршрутизации для корректной работы AI-функций.

Почему Nekoray в режиме TUN не проксирует запросы от Windsurf IDE?

Недавно я перешел на NixOS 25.11 и установил Windsurf IDE. Я включил Nekoray в режиме TUN, и он работает нормально (проверено через curl и в браузере), но когда я пытаюсь сделать запрос к нейросети в Windsurf, получаю ошибку ‘country not allowed’. Проблемы с VPN-сервером нет - на Windows все работает корректно. В Nekoray я вижу трафик от Windsurf и его language_server, который отвечает за AI-функционал, но почему-то этот трафик не идет через прокси.

Логи Nekoray доступны по ссылке: https://pastebin.com/StT6mTqJ

НейроАгент

Основная проблема заключается в том, что Nekoray в режиме TUN не корректно обрабатывает маршрутизацию трафика от конкретных процессов, таких как Windsurf IDE и его language_server. Это связано с особенностями настройки процесс-фильтрации и правил маршрутизации в NixOS.

Содержание


Основные причины проблемы

Исходя из анализа логов и распространенных проблем с Nekoray в NixOS, основными причинами являются:

  1. Некорректная настройка процесс-фильтрации - Windsurf IDE и language_server могут иметь другие имена процессов, чем те, которые указаны в правилах маршрутизации.

  2. Отсутствие необходимых привилегий - В NixOS из-за иммутабельности файловой системы требуется специальная настройка setuid для работы TUN режима.

  3. DNS-проблемы - Как указано в исследовании, для работы TUN режима в NixOS необходимо включить services.resolved.

  4. Конфликты маршрутизации - Проблема с ‘country not allowed’ указывает на то, что трафик от Windsurf не проходит через прокси, а идет напрямую.


Настройка процесс-фильтрации в Nekoray

Для решения проблемы с маршрутизацией трафика от Windsurf IDE необходимо правильно настроить процесс-фильтрацию:

Определение имен процессов

Сначала нужно определить точные имена процессов Windsurf и language_server:

  1. Откройте терминал и выполните:

    bash
    ps aux | grep windsurf
    ps aux | grep language_server
    
  2. Запустите Windsurf и проверьте, как называются его процессы в системе.

Настройка правил маршрутизации

В Nekoray настройте маршрутизацию через JSON-редактор:

  1. Перейдите в Настройки → Маршрутизация → Редактор правил
  2. Добавьте следующие правила:
json
{
  "route": {
    "final": "proxy",
    "rules": [
      {
        "process_name": ["windsurf", "language_server"],
        "outbound": "proxy"
      },
      {
        "ip_is_private": true,
        "outbound": "direct"
      }
    ]
  }
}

Важно: Убедитесь, что имена процессов соответствуют реальным именам в вашей системе. Если процесс называется иначе, скорректируйте правила.


Конфигурация маршрутизации для NixOS

Включение resolved

Как указано в документации, добавьте в ваш configuration.nix:

nix
services.resolved.enable = true;

Настройка прав доступа для TUN режима

В NixOS требуется специальная настройка для работы TUN режима:

nix
programs.nekoray.tunMode = {
  enable = true;
  setuid = true;
};

Создание необходимых симлинков

Из-за иммутабельности файловой системы в NixOS может потребоваться создать симлинки:

bash
sudo mkdir -p /usr/local/bin
sudo ln -s /run/current-system/sw/bin/nekoray /usr/local/bin/
sudo ln -s /run/current-system/sw/bin/nekobox_core /usr/local/bin/

Пошаговое решение проблемы

Шаг 1: Проверка и определение имен процессов

bash
# Запустите Windsurf и в другом терминале выполните:
ps aux | grep -i windsurf
ps aux | grep -i language

Запишите точные имена процессов.

Шаг 2: Настройка Nekoray

  1. Откройте Nekoray
  2. Перейдите в Настройки → Маршрутизация → Редактор правил
  3. Вставьте настроенные правила с правильными именами процессов
  4. Сохраните и перезапустите Nekoray

Шаг 3: Проверка маршрутизации

Добавьте тестовый домен в Настройки → Маршрутизация → Прямые домены для проверки:

api.openai.com

Шаг 4: Включение строгого режима маршрутизации

В Настройки → TUN настройки включите:

  • Строгий маршрут (Strict Route)
  • Фейковый DNS (Fake DNS)

Альтернативные подходы

Использование System Proxy вместо TUN режима

Если TUN режим продолжает работать некорректно, попробуйте:

  1. Отключите TUN режим
  2. Включите Системный прокси
  3. Настройте Windsurf для использования системных прокси-настроек

Использование vopono

Для сложных сценариев можно использовать vopono:

bash
sudo nix-channel --add https://github.com/jamesmcm/vopono/archive/main.tar.gz vopono
sudo nix-channel --update
sudo nix-env -iA nixos.vopono

# Запуск Windsurf через vopono
vopono -r nekoray windsurf

Проверка и диагностика

Проверка маршрутизации процессов

bash
# Просмотр правил iptables
sudo iptables -L -n -v
sudo ip6tables -L -n -v

# Проверка активных соединений
ss -tulpn | grep windsurf

Тестирование прокси-соединения

bash
# Проверка через curl
curl -x socks5h://127.0.0.1:1080 http://api.openai.com

# Проверка DNS-утечек
nslookup api.openai.com

Логирование для диагностики

Включите подробное логирование в Nekoray:

  1. Настройки → Логирование → Уровень: Debug
  2. Выполните тестовый запрос в Windsurf
  3. Проанализируйте логи на предмет ошибок маршрутизации

Заключение

Основная проблема с Nekoray в режиме TUN для Windsurf IDE в NixOS заключается в некорректной настройке процесс-фильтрации и специфических особенностях работы NixOS. Ключевые решения включают:

  1. Точную настройку процесс-фильтрации с правильными именами процессов Windsurf и language_server
  2. Включение services.resolved для работы DNS в TUN режиме
  3. Настройку setuid прав для корректной работы TUN интерфейса
  4. Использование строгого режима маршрутизации для предотвращения утечек трафика

Если стандартные решения не работают, рассмотрите альтернативные подходы вроде использования System Proxy или внешних инструментов вроде vopono для изолированного запуска приложений через прокси.

Источники

  1. Nekoray TUN mode не работает на NixOS - GitHub Issue
  2. Настройка процесс-фильтрации в Nekoray
  3. Проблемы с TUN режимом в NixOS - Discourse
  4. Настройка маршрутизации в Nekoray
  5. DNS проблемы в TUN режиме