Название статьи подсказала тема на одном из форумов. Несмотря на то, что с момента возникновения вопроса прошло шесть лет, в этом направлении мало что изменилось. А поскольку в последнее время у меня на слуху постоянно был OpenVPN, то было решено исправить данную ситуацию. Так родилась графическая утилита VpnGUI для создания, редактирования, запуска и контроля выполнения утилиты openvpn.

После запуска утилиты VpnGUI в трее появится иконка (квадрат разбитый на четыре сине-красных квадратика) утилиты:

image

Трей имеет меню, которое появляется при нажатии правой клавиши мышки, когда курсор мышки находится на трее утилиты VPNGui. Меню имеет два пункта – Restore (развернуть окна) и Stop (завершить работу ). После выбора пункта меню «Restore» на экране появится главное окно утилиты VPNGui:

image

Разработка велась на python с использованием графического пакета Tkinter и дизайнера Page.
Напомним, что для использования «великого, могучего, правдивого и свободного русского языка!» (И.С. Тургенев), необходимо добавить в файл файл gui_pyton_gen.tcl дизайнера Page после 418 строки следующий код:

# -*- coding: utf-8 -*- 	

Аналогичный код необходимо дабавить также в файл support_python_gen.tcl (после 458 строки).

Для программирования трея был установлен пакет Pystray.

Работа утилиты начинается с выбора пользователем выполняемого файла openvpn или его форков. Утилита проверяет наличие выполняемого файла и заполняет списки перечнем поддерживаемых mac (алгоритмя контроля целостности), ciphers (алгоритмы шифрования) и перечнем поддерживаемых шифрсьютов:

# openvpn –show-digests
…
#openvpn –show-ciphers
…
#openvpn –show-tls
…

image

Теперь можно приступать к работе с конфигурационным файлом. Пользователь может создать новый файл или отредактировать существующий, предварительно загрузив его (см. скриншот). После того как файл загружен или новый файл сохранен, пользователь может запустить openvpn:

image

После ввода пароля в окне «Протокол работы» будут отображаться диагностические сообщения OpenVPN:

image

До тех пор пока openvpn нормально работает книопка «VPN активен» будет блокирована. Если openvpn по каким-то причинам завершит свою работу или будет остановлен пользователем (кнопка «Стоп VPN»), то кнопка разблокируется и снова станет кнопкой «Старт VPN».

Отметим, что для выпуска клиентских и серверных сертификатов для OpenVPN удобно использовать центр сертификации XCA:

image

Теперь, когда openvpn нормально работает, можно его убрать в трей. Для этого можно использовать как кнопку «В трей» на окне «Протокол работы» или меню главного окна (Manager > Убрать в трей):

image

Утилита плафтормонезависима. Бинарный код утилиты можно получить, используя пакет Nuitka. Проект утилиты VPNGui, ее исходный код на Python, а также бинарный код для Linux x86_64 можно получить здесь. Имея на руках проект, каждый может доработать утилиту по своему усмотрению.

Комментарии (40)


  1. daggert
    21.09.2017 11:20
    +15

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


    1. saipr Автор
      21.09.2017 11:25
      +3

      Спасибо на добром слове. Ваше замечание учту. Я понимаю, вы имеете в виду дефолтную палитру Tk/Tkinter. Здесь я сохранил дефолт от Page. Еще раз спасибо.


      1. vconst
        21.09.2017 11:40

        Иконку тоже замените на стандартную, у нее же есть состояния вкл/выкл и выглядит знакомо для всех.


        1. saipr Автор
          21.09.2017 12:25

          Вы имели ввиду это:
          image
          image


          1. vconst
            21.09.2017 12:29

            Нет же, стандартную для OpenVPN:
            image


            1. saipr Автор
              21.09.2017 13:10
              +1

              image
              image


              1. vconst
                21.09.2017 13:14

                Именно, примерно так выглядит официальный клиент на винде.


              1. SmileyK
                21.09.2017 18:04

                только когда vpn не активен лучше сделать перечеркнутый — не надо будет «щурится»


                1. saipr Автор
                  21.09.2017 18:05
                  +1

                  Именно по этому мне и нравятся квадратики


                  1. vip1953
                    22.09.2017 20:37

                    Да, симпатичные квадратики!


  1. sena
    21.09.2017 11:37
    +3

    Настройка клиента openvpn есть в апплете NetworkManager. Настройка же сервера обычно делается на сервере в терминале, и графический интерфейс там обычно не нужен.

    Хотя, наверное, в каких-то ситуациях понадобится и такая программа.


    1. saipr Автор
      21.09.2017 11:39

      Конечно же речь идет о клиентском OpenVPN. Сервера запускаются на серверах (прошу извинить за тавтологию) через командную строку.


      1. foldr
        21.09.2017 12:10

        Есть возможность в стандартный Network Manager импортировать конфиг и редактировать через GUI. В Gnome можно по-дефолту, в бубунте с юнити надо установить пакет network-manager-openvpn-gnome (в KDE, кажется, тоже можно сразу, не помню точно)


        1. zelenin
          21.09.2017 12:15

          В Gnome можно по-дефолту

          не, без установки пакета не завелось (17.04). с установкой работает


          1. Turilion
            21.09.2017 16:03
            +1

            Ну да, маленький пакетик добавляет в стандартный нетворк-менеджер пункт «ОпенВПН». Как по мне, так наиболее удобный вариант. Все коннекшены в одном месте.


      1. solver
        21.09.2017 12:10
        +1

        Вот тоже интересно, чем стандартное GUI не устроило?
        В нем и в трее отображается подключение, и настройки все есть. И поддержка с обновлениями.
        Тем более у вас на скриншотах KDE, а в нем все очень удобно сделано. И максимально нативно для системы.


        1. foldr
          21.09.2017 12:25

          Вот тоже интересно, чем стандартное GUI не устроило?

          Недостаточный скилл гугления :)


          Впрочем, я не против наличия альтернатив, если у них есть какие-то фичи, при том что их можно так же просто установить из собранного пакета или, еще лучше, из репозитория, а не как в данном случае — исходники с бинарником просто в архиве


    1. Ipeacocks
      21.09.2017 13:34

      Более того стандартное решение выглядит цельным с настройками сети и приличней.

      > Хотя, наверное, в каких-то ситуациях понадобится и такая программа.

      Интересно в каких. Наверное только тогда, когда нет NetworkManager-а в дистрибутиве.


  1. foldr
    21.09.2017 12:19

    1. Прежде всего, бросается в глаза интерфейс на русском + местами на английском языках (Manager, key, cert). Если переводить, то переводить полностью. Конечно лучше иметь возможность переключать языки, но в качестве единственного, имхо, лучше делать английский. Интерфейс у подобных утилит достаточно простой, и даже без знаний языка можно интуитивно разобраться что делать
    2. Используйте стандартные названия выпадающих меню. То что находится в Manager вполне подходит под File/Файл
    3. Почему не в системе контроля версий? Распространять исходный код в архиве, мягко говоря, странно


  1. tjomamokrenko
    21.09.2017 12:55
    +3

    Есть ли OpenVPN GUI для Linux?

    Есть. в Ubuntu — network-manager-openvpn.

    Если посмотреть остальные статьи автора — претензий не возникает. Вот только я бы не хотел видеть подобные статьи в хабе информационной безопасности.


    1. CamKuran
      21.09.2017 14:42

      network-manager-openvpn — плагин для Network Manager, который позволяет производить необходимые настройки для данного типа подключений. А графическая реализация API данного плагина зависит от графического окружения, например в Plasma это plasma-nm, а для GNOME — network-manager-openvpn-gnome


  1. Caelwyn
    21.09.2017 13:21
    +3

    Окно About и интерфейс аж прям веют концом девяностых-началом двухтысячных, самописными провайдерскими подключаторами, и самописным бухгалтерским софтом на делфи, у которого в окне «Подождите пожалуйста, идёт расчёт» была фотка автора (реальный случай в госконторе).


    1. saipr Автор
      21.09.2017 16:47
      -1

      А еще были и 70-е и 80-е и начало 90-х. Было другое время, другие компьютеры, да много чего другого.


  1. VecH
    21.09.2017 15:58

    А я все надеюсь что кто то напишет web морду для серверной части, т.к. DE на сервере, vps-ке об этом даже думать не стоит
    Что еще важнее, это менеджер ключей и конфигураций клиентских тоже через web


    1. saipr Автор
      21.09.2017 16:01

      Это менеджер каких ключей?
      Что касается web "морды" для серверной части, то в чем проблема? Хотя потребуется, например, поднимать Apache на сервере. А ssh всегда под рукой.


    1. Bronekalmar
      22.09.2017 07:53

      Есть модуль для Webmin для OpenvPN
      http://www.webmin.com/cgi-bin/search_third.cgi?search=openvpn


  1. ibKpoxa
    21.09.2017 16:28
    +1

    Ну почему??? Почему все так любят OpenVPN, когда в системах нет клиента по умолчанию для него? Как же ipsec+l2tp хорош именно этом, и не менее безопасен.


    1. saipr Автор
      21.09.2017 16:40

      Вопрос резонный. OpenVPN — один из… Он на слуху, доступен, прост


    1. UrsusMaritimus
      22.09.2017 10:48

      Возможно потому, что ipsec можно распознавать и фильтровать на уровне фаервола. А openvpn не отличим от https. По крайней мере в теории.


  1. Caefah
    21.09.2017 19:14

    После слов: — «Разработка велась на пютан ...» интерес пропал полностью. Ради пары иконок терять пятую часть гигабайта постоянно текущей оперативной памяти под динамическую типизацию и гарбидж коллектор нет никакого желания. Вывод — нативный консольный клиент лучше.


    1. saipr Автор
      21.09.2017 19:41

      Все очень просто. Используйте утилиту только для подготовки конфига. А клиента с этим конфигом запускайте из консоли и никуда ваша оперативная память не уплывет.


  1. 23rd
    22.09.2017 00:30

    Вопрос не к сабжу, но всё же.
    Может быть кто-нибудь знает клиент для Windows, который убивал бы интернет без VPN (kill-switch)?
    Или как это сделать в дефолтном GUI?


    1. 4aba
      22.09.2017 06:33

      Если я вас правильно понял, В брандмауэре разрешаете исходящий трафик только на порт впн, остальное запрет. Когда мне надо было пустить одну машину из локальной сети в интернет с 100% подменой страны, я так делал.


    1. crysiscore
      22.09.2017 12:10

      1. saipr Автор
        22.09.2017 12:11

        А теперь сравните с точки зрения рядового пользователя. Ну и это MS


  1. yamilov
    22.09.2017 20:26
    +2

    По теме. Софтине, безусловно, место быть. Сказать честно, предлагаемый на OpenVPN я настроить на свей Ubuntu так и не смог. А аналогов не нашёл! Поэтому до сих пор использую терминал. По-началу даже немного комплексовал ) но свыкся. Над дизайном поработайте немного.

    Теперь не по теме. Кто-нибудь сталкивался с проблемой, что после подключения к серверу, некоторые сайты не открываются? Именно в Ubuntu. Никакой зависимости не вижу. С одними работает, с другими — нет. В Окнах с этим же сервером всё ок. В сети об этом почти нет информации.


    1. yamilov
      25.09.2017 11:15

      sena vconst foldrzelenin 4aba товарищи, не оставьте без внимания :) может кто-нибудь встречался с подобным? Очень долго уже бьюсь.


    1. sena
      25.09.2017 11:21

      Часто это происходит из-за настроек MTU. Попробуйте уменьшить MTU.


  1. saipr Автор
    22.09.2017 20:28

    Да, дизайн требует доработки. Ваше наблюдение только подтверждает заголовок. Про вопрос ничего сказать не могу.


  1. DroneZzZko
    22.09.2017 21:59

    Будьте добры на гитхаб все это дело. Спасибо!