20

Автозапуск Nekobox (NekoRay) под Windows в TUN режиме1

Хотел обновить свой пост на эту тему, но что-то набралось текста по этому поводу..

Для начала

Почему не работает галочка в интерфейсе Запускать вместе с системой для автоматического поднятия в TUN режиме..?

Видимо это баг, или фича.. Я заставил запускаться ее автоматически с поднятием туннеля, но далее такой вывод сделан исходя из того, что при некорректном завершении работы программы (перезагрузка без выхода из NekoRay в трее) всегда без исключений можно ловить окошко с предложением перезапустить программу, при отказе вскоре вылетит следующее

Говорящее о том, что у нас уже есть TUN интерфейс в системе с таким названием, что указано в конфиге и вот никак с ним не получается подружиться (в диспетчере устройств он же лежит в ошибке).

Подходим к решению

Прежде чем запускать NekoRay нам нужно удалить ранее созданный сетевой интерфейс, и нам надо делать это автоматически.. Забываем про галочку Запускать вместе с системой. Отмечаем пункты Запомнить последний профиль (разумеется с активированным профилем) и Режим TUN. Но это может работать некорректно, поэтому выходим из софта через трей либо Программа — Выход. Открываем следующий файл (путь может отличаться в зависимости от того где лежит папка с утилитой)

C:\nekoray\config\groups\nekobox.json

Подробнее о пунктах:

  • remember_enable — галочка Запомнить последний профиль (true/false)

  • remember_id — идентификатор профиля (подробнее ниже)

  • spmode2 — галочка Режим ... (элемент массива "vpn" для TUN режима)

Идентификатор профиля указывает на профиль, который будет активирован при запуске, нумерация в JSON начинается с нуля, как для массивов, с единицы же в графическом интерфейсе программы, т.е. 0 соответствует 1 профилю, а 2 соответствует 3 профилю.

Идентификатор со значением -1919 говорит программе о том, что не нужно активировать ни один из доступных профилей.

Решение

Отлично, NekoRay настроили, в конфиге все перепроверили.. Осталось решить задачу с удалением сетевого интерфейса, ранее созданного утилитой, чтобы при перезагрузке или включении компьютера не словить проблем. Как я говорил ранее, про галочку Запускать вместе с системой забыли. Создаем файл AutorunNekoRay.ps1 рядом с nekobox.exe

C:\nekoray\AutorunNekoRay.ps1

Содержимое скрипта следующее

# Удаляем устройства с именем "sing-tun Tunnel"

foreach ($dev in (Get-PnpDevice | Where-Object { $_.Name -like "sing-tun Tunnel" })) {

# Запускаем pnputil для удаления устройства и ждем завершения процесса

Start-Process pnputil -ArgumentList "/remove-device", "$($dev.InstanceId)" -NoNewWindow -Wait

}

# Путь к exe файлу, который находится в той же папке, что и скрипт

$exePath = Join-Path -Path $PSScriptRoot -ChildPath "nekobox.exe"

# Запускаем nekobox.exe с аргументом -tray

Start-Process -FilePath $exePath -ArgumentList "-tray"

Стоит отметить, что в исходной конфигурации интерфейс в диспетчере устройств называется sing-tun Tunnel. Если меняли, то используем свое название, или смотрим что появилось в диспетчере с включенным режимом TUN.

Создаем файлы autorunEnable.reg (для добавления в автозапуск) и autorunDisable.reg (для удаления из автозапуска), их содержимое соответственно ниже. Проверяйте путь скрипта RemoveNetworkInterfaceTest.ps1!

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

"RemoveNetworkInterfaceTest"="powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File \"C:\\nekoray\\RemoveNetworkInterfaceTest.ps1\""

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

"RemoveNetworkInterfaceTest"=-

Чтобы утилита запускалась для всех пользователей — HKEY_CURRENT_USER необходимо заменить на HKEY_LOCAL_MACHINE в файлах .reg. Также рекомендую быть администратором в системе при использовании HKEY_CURRENT_USER, при использовании HKEY_LOCAL_MACHINE шансов выше, что утилита запуститься с правами администратора, от системного пользователя (касается не только NekoRay).

Запускаем autorunEnable.reg, соглашаемся со всем, что выскочит. Перезагружаем компьютер — радуемся.

Если что-то не работает перепроверяем именно конфиг (ну я по крайней мере решил, что это надежнее). Если все-таки трудности настигают киньте в комментарии скриншоты, где у вас nekobox.exe лежит, скрипта и файлов реестра (.reg), не забудьте конфиг nekobox.json попробуем разобраться 🫡

Возможно я тут много насквернословил и есть более простые решения обозреваемой задачи, поделитесь если знаете 🥲

Наконец-то руки дошли до накатить Windows 10 Pro (без твиков и т.п., MSDN), чтобы проверить всю ранее изложенную портянку. Пункт Подходим к решению основного поста не пропускаем, вся информация здесь замещает пункт Решение..

Уточню для начала:

  • версия NekoRay — 4.0-beta4

  • расположение — C:\nekoray (работал с ним, скрипты клал туда, пути в них относительно него)

  • исполняемый файл — nekobox.exe

Для любого решения

Необходимо дабы избавиться от ошибки ниже

при некорректном завершении работы программы (перезагрузка без выхода из NekoRay в трее) всегда без исключений можно ловить окошко с предложением перезапустить программу, при отказе вскоре вылетит следующее

уже есть TUN интерфейс в системе с таким названием, что указано в конфиге и вот никак с ним не получается подружиться (в диспетчере устройств он же лежит в ошибке)

Ошибка при запуске

Ошибка при запуске

Создаем скрипт, что будет удалять, при наличии, сетевой интерфейс, созданный в момент последнего запуска и запускать NekoRay..

C:\nekoray\AutorunNekoRay.ps1

# Удаляем устройства с именем "sing-tun Tunnel"

foreach ($dev in (Get-PnpDevice | Where-Object { $_.Name -like "sing-tun Tunnel" })) {

# Запускаем pnputil для удаления устройства и ждем завершения процесса

Start-Process pnputil -ArgumentList "/remove-device", "$($dev.InstanceId)" -NoNewWindow -Wait

}

# Путь к exe файлу, который находится в той же папке, что и скрипт

$exePath = Join-Path -Path $PSScriptRoot -ChildPath "nekobox.exe"

# Запускаем nekobox.exe с аргументом -tray

Start-Process -FilePath $exePath -ArgumentList "-tray"

Далее используем одно из решений ниже, чтобы он выполнялся автоматически при загрузке системы:

  • через планировщик

  • через автозапуск (ветка реестра HKEY_LOCAL_MACHINE)

  • через автозапуск (ветка реестра HKEY_CURRENT_USER)

Что должно работать

Решение через планировщик (автоматическое выполнение скрипта выше при загрузке системы от SYSTEM). Сразу отмечу, что в трее значка NekoRay не увидите.

C:\nekoray\AutorunCreateTask.ps1

# Параметры задачи

$TaskName = "AutorunNekoRay"

$ScriptPath = "C:\nekoray\AutorunNekoRay.ps1"

$Trigger = New-ScheduledTaskTrigger -AtStartup

$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -File `"$ScriptPath`""

$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest

# Удаление старой задачи (если есть)

Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false -ErrorAction SilentlyContinue

# Создание новой задачи

Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -Action $Action -Principal $Principal

Write-Host "Задача $TaskName успешно создана и будет выполняться при старте системы."

C:\nekoray\AutorunRemoveTask.ps1

# Название задачи

$TaskName = "AutorunNekoRay"

# Удаление задачи

try {

Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false

Write-Host "Задача '$TaskName' успешно удалена."

} catch {

Write-Host "Не удалось удалить задачу '$TaskName'. Возможно, она не существует." -ForegroundColor Red

}

Далее запускаем командную строку от имени Администратора и выполняем:

powershell -ExecutionPolicy Bypass -File "C:\nekoray\AutorunCreateTask.ps1"

Для удаления задачи:

powershell -ExecutionPolicy Bypass -File "C:\nekoray\AutorunRemoveTask.ps1"

Что может сработать

Либо так:

C:\nekoray\autorunEnable.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

"AutorunNekoRay"="powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File \"C:\\nekoray\\AutorunNekoRay.ps1\""

C:\nekoray\autorunDisable.reg

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

"AutorunNekoRay"=-

Либо так:

C:\nekoray\autorunEnable.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

"AutorunNekoRay"="powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File \"C:\\nekoray\\AutorunNekoRay.ps1\""

C:\nekoray\autorunDisable.reg

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

"AutorunNekoRay"=-

Для добавления в автозапуск запускаем созданный autorunEnable.reg, чтобы убрать из автозапуска — autorunDisable.reg.

Если все успешно

  • в диспетчере задач будет nekobox.exe

  • в диспетчере устройств сетевой интерфейс sing-box без ошибки

  • маршрутизация согласно описанным правилам в соответствующем конфиге

Показать полностью 1
комментарии (5)
0
Автор поста оценил этот комментарий

а я себе просто openWRT на роутер запилил и теперь там всё что нада это тунелится на мой VPS сервер зарубежом, сразу на всех устройствах дома) но гайды хорошие наверняка многим помогут в наше нелегкое время)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Тоже все хочу на базе Keenetic'а своего уже настроить все это дело, руки жаль не доходят, по просьбам нуждающихся знакомых колупаю десктопные решения, чтоб скачали да запустили 😂

1
Автор поста оценил этот комментарий

В автозапуске павершел появился но сам nekobox не запускается

Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Видимо скрипт где-то стопориться, а конкретно до запуска .exe


Да, второй файл ..Disable для того чтобы убрать из реестра, то что было добавлено в автозагрузку. Попробуй из закрепленного комментария все что описано в продолжении поста, через планировщик.. Там я хотя бы ошибок в скриптах и названиях вроде не допустил, в этом топике ошибок куча, просто копипаст скриптов не катит, это как раз может быть проблемой, из-за которой PS продолжает висеть в диспетчере и не стартует ничего.. К тому же вариант через реестр более непредсказуем, зависит от настроек в ОС

0
Автор поста оценил этот комментарий

Рад что мой фидбек вам пригодился :)

Некорей я щас ручками запускаю. Что касается ошибок то да они иногда выскакивают (предложение перезапустить прогу), видимо когда выключаю комп не вырубив некорей. В этом случае я соглашаюсь, иногда по несколько раз или ручками перезапускаю. Детальнее на эту ошибку внимание не обращаю так как благодаря вашему посту представляю откуда она и просто принял её как иногда происходящее явление. Хотя подумывал о варианте запускать некорей вручную через скрипт которым вы поделились.

В винде я пользуюсь основной учеткой с правами администратора. А в HKEY_LOCAL_MACHINE не пробовал добавлять. Да и есть сомнения что это бы помогло, все же предупреждение UAC выскакивает из-за того что некорей не доверенная программа и не важно в режиме администраторы запускаешь её или нет. Глянул мельком варианты как не отключая UAC добавить в исключения конкретную прогу, но наткнулся только на ответы что по умолчанию нельзя, а из вариантов решения было предложение скачать доп прогу от майков которая вроде дает больше инструментов администрирования и там типа можно не отключая UAC добавить в исключения конкретную прогу. Но разбираться дальше уже не стал.

Еще момент который я тут не упомянул но думаю оно может помочь пользователю Loading.Done сменить свою ошибку на всплывающее окошко от UAC. Я у эксешника некорея во вкладке совместимость поставил галочку "запускать от администратора".

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Попробуй через планировщик, если есть возможность, пожалуйста :) @Loading.Done, та же просьба, откликнись плз)

Продолжение поста «Автозапуск Nekobox (NekoRay) под Windows в TUN режиме»

показать ответы
0
Автор поста оценил этот комментарий

Здравствуйте, есть ли адаптация под форк от mahdi-zarei? По гайду не прокатило вашему, скрипт выполняется при перезагрузке, но некобокс не заводится

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Попробуй Продолжение поста «Автозапуск Nekobox (NekoRay) под Windows в TUN режиме»

Только в AutorunNekoRay.ps1 необходимо будет заменить nekobox.exe на nekoray.exe

Если не работает, то опиши что конкретно не работает, попробую добраться до этого, чтоб проверить :)

0
Автор поста оценил этот комментарий

Спасибо за инструкции. Настроить худо бедно получилось, но были нюансы и в итоге я отказался от автозагрузки о чем в конце напишу.
Нюансы:
- Настроил в итоге создав вручную запись в реестре. Через autorunEnable.reg запись упорно не хотела создаваться (а вот удалилось через autorunDisable.reg вполне без проблем).
- Эксешник проги обзывается "nekoray.exe", поэтому в AutorunNekoRay.ps1 я заменил "nekobox.exe" на "nekoray.exe".
- Как я понял Windows PowerShell если им раньше не пользовались, может блокировать запуск скриптов и надо отдельно ему это разрешить. Для проверки/разрешения можно через ПКМ запустить AutorunNekoRay.ps1 сразу в PowerShell. Ну и в целом таким образом проверять будет некобокс запускаться или нет.

- Проверил на себе что без скрипта из AutorunNekoRay.ps1 некобокс запускается с ошибками и требует перезапустить вручную.

В общем автозагрузка заработала, но вот при запуске постоянно выскакивает сообщение от "Система контроля учетных записей" с требованием разрешить приложению вносить изменения. В пару кликов одно приложение в исключения не внести (не нашел как) а полностью отключаться проверку я не хочу. Так что поиграл пару часиков с настройкой автозагрузки и откатил все назад. Но за инструкцию все равно спасибо, и может мой опыт кому поможет)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Прикольно :) Спасибо за комментарий.. я искренне удивлен, у меня в версии с гита 4.0-beta4 исполняемый файл называется — nekobox.exe (копировал прямо из проводника только что, думал шиза словила меня конкретно)..

Про разрешение выполнения скриптов в PS удержал, вероятно для кого-то даже зря.. Писал по некой планке :)) По умолчанию да, скрипты залочены.. надо будет добавить в пост.

Когда справился, NR запускался нормально, ошибку, что в начале поста, не выплевывал? Чтоб понимать были ли с этим нюансы

По UAC — пользователь, от которого в реестр добавлялись записи в HKEY_CURRENT_USER, группе администраторов принадлежит? Вместо HKCU в HKEY_LOCAL_MACHINE пробовал прописать, результат тот же? Я, к слову, UAC не трогал, люблю уж больно, когда вылазит окошечко контроля

Проверял на своей сборке, вроде чистой и близкой к оригинальной, но видимо стоит взять голый MSDN образ и все перепроверить/отладить.. Еще раз спасибо за фидбек :)

показать ответы
0
Автор поста оценил этот комментарий

Сделал всё по инструкции, но некобокс не запускается с виндой.

Возможно дело в "Проверяйте путь скрипта RemoveNetworkInterfaceTest.ps1!", потому что непонятно, что проверять. Можно поподробнее?

Сам некобокс лежит в папке в корне диска С, как у вас.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Уууфф.. я допустил многовато ошибок при написании, только сейчас увидел, поздняя писанина аукнулась :))

Самое главное, скрипт .ps1 должен быть рядом с nekobox.exe (поскольку он ищет его и запускает исходя из своего расположения), а в файле autorunEnable.reg после -File должен быть путь до твоего .ps1 (имя файла важно когда указываешь абсолютный путь).


Для C:\nekoray\nekobox.exe..:


C:\nekoray\AutorunNekoRay.ps1

# Удаляем устройства с именем "sing-tun Tunnel"

foreach ($dev in (Get-PnpDevice | Where-Object { $_.Name -like "sing-tun Tunnel" })) {

# Запускаем pnputil для удаления устройства и ждем завершения процесса

Start-Process pnputil -ArgumentList "/remove-device", "$($dev.InstanceId)" -NoNewWindow -Wait

}

# Путь к exe файлу, который находится в той же папке, что и скрипт

$exePath = Join-Path -Path $PSScriptRoot -ChildPath "nekobox.exe"

# Запускаем nekobox.exe с аргументом -tray

Start-Process -FilePath $exePath -ArgumentList "-tray"

C:\nekoray\autorunEnable.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

"AutorunNekoRay"="powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File \"C:\\nekoray\\AutorunNekoRay.ps1\""

C:\nekoray\autorunDisable.reg

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

"AutorunNekoRay"=-

Вроде не накосячил.. Отпишись, дай скрины если проблемы будут :))

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества