Подключиться к серверу OpenVPN через Node.js

Я пытаюсь создать клиент с графическим интерфейсом для подключения к серверам OpenVPN с помощью электрона и узла, но я изо всех сил пытаюсь понять, как на самом деле подключиться к серверам с помощью файлов .ovpn.

Мой вопрос: как лучше всего подключиться к серверу OpenVPN с помощью узла? Было бы лучше настроить команды терминала, такие как

«openvpn — путь к конфигу»

Или есть другой способ, которым такие приложения, как туннельблик, могут сделать это проще и эффективнее?


person Collin Chalmers    schedule 31.07.2017    source источник
comment
Взгляните на github.com/resin-io/openvpn-client (хотя я опыта в этом нет)   -  person robertklep    schedule 31.07.2017


Ответы (1)


Здравствуйте, я работал с электронами и ovpn в своем последнем проекте, поэтому вот несколько советов.

Для установки VPN требуются права администратора/рута, поэтому запуск child_process.spawn на openvpn --config <path> завершится ошибкой, если только ваше электронное приложение не запускается с правами sudo/admin.

Вы также можете использовать пакет electron-sudo, ссылка здесь. По сути, это дочерний процесс, созданный с помощью sudo/admin. Ака, приложение работает нормально, но команда vpn работает с sudo.

Однако, если ваш клиент не хочет предоставлять вам sudo/admin, VPN необходимо запускать отдельно перед запуском вашего приложения.

В общем, дело в admin/sudo. Надеюсь это поможет.

person OrahKokos    schedule 31.07.2017
comment
Должен ли я установить openvpn на клиентский компьютер? Например, проверить, установлен ли он, а если нет, установить его? Делают ли это такие клиенты, как Tunnelblick? - person Collin Chalmers; 01.08.2017
comment
Также кажется, что запуск openvpn --config <path> зависает на Initialization Sequence Completed - person Collin Chalmers; 01.08.2017
comment
Точно. Один из способов обойти это — связать vpn и электронное приложение через Visual Studio. К сожалению, я не очень хорошо разбираюсь в Visual Studio, чтобы рассказать вам, как это сделать (это сделал кто-то другой). Редактировать: VPN-подключение зависает, если оно не запущено через sudo/admin. - person OrahKokos; 01.08.2017
comment
Я запустил его как sudo, но почему-то он все еще висит. - person Collin Chalmers; 01.08.2017
comment
Если вы запускаете ту же команду через терминал (вне приложения) и она работает, то это ошибка child_process.exec. Вам нужно использовать electron-sudo или специфичный для ОС пароль. Введите пароль для root/admin в команде child_process.exec. При использовании `child_process.exec('sudo openvpn...') это не сработает, так как вы не получите запрос на ввод пароля - person OrahKokos; 01.08.2017
comment
Для Linux я могу подтвердить, что gksudo - это путь. Однако вам нужно решение для кросс-ОС, именно здесь появляется electron-sudo, либо это, либо реализация вашей собственной проверки sudo/admin (для каждой ОС) - person OrahKokos; 01.08.2017
comment
О, хорошо, я понял проблему, она перенаправляла мой трафик, но работала только с моим трафиком IPV4, IPV6 не менялся. - person Collin Chalmers; 01.08.2017
comment
Для electronic-sudo я помещаю код в файл main.js или в файл, где я фактически вызываю команду openvpn? - person Collin Chalmers; 03.08.2017
comment
Да, в значительной степени. Ознакомьтесь с документами/проблемами для получения дополнительной информации здесь: github.com/automation-stack/electron-sudo< /а> - person OrahKokos; 05.08.2017