UltraVNC как замена TeamViewer



    Предупреждение: все прилетевшие тапочки будут проданы, помидоры – съедены, яйца – пожарены, испорченные – выброшены. Те, кто думают, что мы маемся фигней – вы угадали, возьмите с полки пирожок. Автор не призывает бросать мешки грудью на амбразуры. Он вообще ни к чему не призывает – он же не политик и не гражданин с активной гражданской позицией. А вот желающих подискутировать – милости просим. Сегодня я буду рассказывать вам занимательную историю о замене Teamviewer на UltraVNC.

    Зачем вообще нужны такие заморочки, ведь Teamviewer такой офигенный? В моем случае это обусловлено несколькими причинами. В работе была нужна система удаленного управления серверами и рабочими станциями пользователей, а их у нас на поддержке >1000. Teamviewer контролируется сторонней компанией и неизвестно, что она делает с трафиком. Teamviewer не пользуется доверием у некоторых наших клиентов. Нам нужны были уникальные ID для всех пользователей. Ну и его стоимость для достаточно большой инфраструктуры очень приличная, что тоже повлияло на решение. При этом у нас достаточно широкие каналы связи и нет жестких требований к скорости отклика, что нивелировало основной недостаток UltraVNC, а именно — более низкую скорость работы.

    Как это работает


    Исходная архитектура VNC протокола слабо предназначена для работы через глобальные сети. Для этого есть несколько причин.

    • Отсутствие шифрования передаваемых данных.
    • Короткие пароли (8 символов в современном мире? Вы серьезно?)
    • Отсутствие сквозной нумерации серверов, подключение по IP.
    • Невозможность работы из-за NAT.

    Я, конечно, перечислил не все. Но это основные недостатки, которые мешали нам рассматривать данное решение всерьез. В итоге, все они были тем или иным образом преодолены. Текущая схема работы выглядит примерно так:



    Клиентский UltraVNC сервер подключается к нашему репитеру, который одним своим портом (нестандартным) смотрит в интернет и принимает подключения. А мы подключаемся к этому же серверу по внутреннему адресу изнутри и уже оттуда — к клиенту. Соединения шифруются RSA2048/AES256. Так как серверы и клиенты цепляются на разные порты, можно гибко ограничить, у кого и откуда есть право подключения, не трогая возможность UltraVNC-серверов подключаться к репитеру.

    Установка UltraVNC репитера


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

    Итак, заходим на сервер, которому предначертано стать будущим репитером и начинаем колдунство. Установка будет описана для Ubuntu 16.04. Ставим необходимые зависимости.

    sudo apt-get install build-essential

    Создаем пользователя для запуска репитера.

    sudo useradd -c 'UltraVNC Repeater User' -M -s /sbin/nologin uvncrep

    Скачиваем исходники репитера.

    wget http://www.wisdomsoftware.gr/download/uvncrep017-ws.tar.gz

    Распаковываем репитер и заходим внутрь папки.

    tar -xzvf uvncrep017-ws.tar.gz && cd uvncrep017-ws

    Собираем репитер.

    make

    Устанавливаем репитер в систему.

    sudo ./install.sh

    У нас все готово к успешному запуску, но надо немного изменить файл настроек. Поэтому открываем в любимом редакторе /etc/uvnc/uvncrepeater.ini и приводим настройки к следующему виду:

    viewerport = 5900

    По странной прихоти автора номер порта отличается от стандартного. У себя нестандартный порт мы выставим на файрволе.

    logginglevel = 2

    Немного повышаем уровень логирования, чтобы видеть информацию о бинде портов и подключениях в логе.

    allowedmodes = 2

    Запрещаем оба режима, оставляем только 2, потому что первый работает по другому принципу и может создавать для нас уязвимость.

    useeventinterface = false

    Отключаем отправку сообщений. Пока мы никому ничего отправлять не будем. Может быть потом…

    Сохраняем файл и тестируем корректность его настроек.

    sudo uvncrepeatersvc /etc/uvnc/uvncrepeater.ini

    UltraVnc Linux Repeater version 0.17
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): viewerPort : 5900
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): serverPort : 5500
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): maxSessions: 100
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): loggingLevel: 2
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): ownIpAddress (0.0.0.0 = listen all interfaces) : 0.0.0.0
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): runAsUser (if started as root) : uvncrep
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): Mode 1 connections allowed : No
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): Mode 2 connections allowed : Yes
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): Mode 1 allowed server port (0=All) : 0
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): Mode 1 requires listed addresses : No
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): Mode 2 requires listed ID numbers : No
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): useEventInterface: false
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): eventListenerHost : localhost
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): eventListenerPort : 2002
    UltraVnc Sat Feb 11 16:48:29 2017 > listInitializationValues(): useHttpForEventListener : true
    UltraVnc Sat Feb 11 16:48:29 2017 > dropRootPrivileges(): privileges successfully dropped, now running as user uvncrep
    UltraVnc Sat Feb 11 16:48:29 2017 > routeConnections(): starting select() loop, terminate with ctrl+c

    Все в порядке, можно запускать как стандартную службу. Останавливаем репитер с помощью Ctrl+C и запускаем уже как сервис.

    sudo systemctl start uvncrepeater

    Проверяем, что служба запустилась.

    $ ps ax | grep uvnc
    11168 ?        S      0:00 /usr/sbin/uvncrepeatersvc /etc/uvnc/uvncrepeater.ini
    11170 pts/0    S+     0:00 grep --color=auto uvnc

    Файл лога можно посмотреть по адресу /var/log/uvncrepeater.log.

    Установка и настройка UltraVNC сервера


    Итак, первое препятствие между нами и нирваной рухнуло с треском. Теперь мы можем подключаться к клиентам за NAT. На очереди два следующих – отсутствие сквозной нумерации и шифрования. Настраиваем тестовый UltraVNC-сервер. Так как у нас основной парк управляемых машин – это Windows, установка сервера и клиента будет расписана для них.

    Скачиваем необходимые компоненты по ссылкам. Компоненты должны иметь архитектуру (x86 и x64), соответствующую архитектуре компьютера, на который происходит установка сервера.




    Запускаем установщик UltraVNC сервер. Принимаем условия соглашения и нажимаем Next >.



    Вчитываемся с интересом и Next >.



    Выбираем папку для установки. Не рекомендуется менять без особой необходимости. Что жать, думаю, и так понятно.



    Выбираем установку только UltraVNC Server и нажимаем Next >.



    Жмем Next > и никаких гвоздей.



    Ставим указанные галочки, чтобы установить UltraVNC сервер как системную службу и запустить его сразу после установки. Жмем Next >.



    Смотрим на этот экран с умным видом, потом нажимаем Install.



    Здесь есть только одна кнопка для нажима. Жмем на нее.



    Снимаем галочку, чтобы не смотреть какие-то последние версии, и жмем Finish.



    Кнопконажимательная часть миссии закончена. Теперь надо доустановить необходимые компоненты и настроить сервер. Копируем плагин безопасности в папку UltraVNC.



    Распаковываем папку с драйвером.



    Заходим в папку с соответствующим драйвером и устанавливаем его путем запуска install.bat.

    Внимание! Установку драйвера надо производить с административными правами. Причем запустить от имени администратора только install.bat не получится, потому что он запускает еще одну программу и она будет работать уже не от администратора. Поэтому запускаете консоль от администратора, идете в папку установки драйвера и запускаете install.bat оттуда.

    Я выполнял тестовую сборку по XP с правами администратора, потому мне это не потребовалось.



    Запускаем настройки VNC сервера – uvnc_settings.exe.



    Переходим на вкладку Security.

    • В разделе Authentication выставляем два пароля. Пароли должны быть одинаковыми, состоять из цифр и больших и малых латинских букв, не более 8 символов длиной.
    • В разделе Encryption ставим галочку Use, выбираем из выпадающего списка наш плагин, и жмем на кнопку Configuration.



    Галочки должны стоять так, как показано на скриншоте. Если все правильно, закрываем окно нажатием кнопки Close.



    Переходим на вкладку Connection.

    • В разделе Multiple connections выбираем Keep existing connections.
    • В разделе Disconnect выбираем Do Nothing.



    Переходим на вкладку Screen Capture.
    • В разделе Advanced выбираем Use system hookdll, Use mirror driver, Remove Aero while connected и Remove wallpaper while connected.



    Переходим на вкладку Misc/logging.

    • В поле Service command line вбиваем самую главную строку. Эта строка содержит ID и адрес и данные репитера для подключения. Выглядит она так:

    -autoreconnect ID:XXXXXXXX -connect <repeater_external_address>:<repeater_port>
    ID получается с помощью скрипта по методике приведенной ниже.





    После всех проделанных действий нажимаем ОК для сохранения настроек. Потом запускаете настройки еще раз и переходите на вкладку Service. На ней нажатием соответствующих кнопок сначала останавливаете, потом запускаете сервис.

    Генерация уникального ID


    Скрипт получения 8-значного номера ID. Написан на php, потому что это было проще всего. В качестве источника вдохновения использовались комментарии вот к этому вопросу. Как работает, думаю, пояснять не надо. Почему именно скрипт генерации и почему именно по MAC? Потому что репитер не даст подключиться двум серверам с одинаковым ID, а вести журналы со списками ID было предельно лень. А так как MAC-адреса и так уникальны, то почти гарантированно получаем уникальный номер с достаточно низкой вероятностью коллизии.

    <?php
    $mac = 'B6-B6-13-18-FF-FF';
    $mac = str_split(str_replace([':', '-'], '', $mac));
    $sum = 0;
    foreach($mac as $part) {
    	$number = hexdec($part);
    	$sum = (($sum * 16) + $number) % 99999999;
    	if($sum < 10000000) $sum += 10000000;
    }
    echo("$sum\n");
    ?>
    

    Важно помнить, что коллизию можно обнаружить только по соответствующим логам репитера. Сервис будет стартовать, как ни в чем не бывало. Поэтому при добавлении номера лучше все-таки посматривать за логами.

    Установка и настройка UltraVNC Viewer


    Скачиваем необходимые компоненты по ссылкам. Компоненты должны иметь архитектуру (x86 и x64), соответствующую архитектуре компьютера, на который происходит установка Viewer.





    Начинаем установку.



    Внимательно читаем странное и нажимаем Next >.



    Выбираем папку установки и нажимаем Next >.



    Выбираем только компонент UltraVNC Viewer и нажимаем Next >.



    Оставляем здесь все как есть и просто нажимаем Next >.



    Выставляем галочки так, как вам будет удобно и нажимаем Next >.



    Отключаем просмотр последних версий снятием галочки и нажимаем кнопку Finish.

    Теперь скачиваем файл плагина по ссылке выше и перемещаем его в папку программы. После этого запускаем Viewer.



    Устанавливаем все настройки так же, как и на скрине. ID сервера для подключения вводится именно в таком формате, то есть ID:XXXXXXXX. IP и порт репитера вводятся такими, какими были назначены при установке репитера.

    Все, можно подключаться и радоваться жизни.

    Замечания по использованию


    • Не забывайте при подключении устанавливать security плагин. Если его не будет, соединение все равно произойдет, только без шифрования. Заставить UltraVNC Server требовать шифрования мне пока не удалось.
    • Донастройте сервис при установке UltraVNC сервера. В процессе использования было отмечено, что сервис сервера иногда падает. Для того, чтобы в нужный момент не потерять связь с машиной рекомендуется в настройках сервиса установить его автоматический перезапуск при падениях.

    Увидимся в следующих сериях


    Да, UltraVNC, это вам не это. В смысле, по функциональности проще, имеет все отличительные признаки бесплатного ПО, да и вообще, где это видано… Но я считаю, что как инструмент оно вполне имеет право на жизнь, если удовлетворяет требованиям по безопасности и предоставляемому сервису. В дальнейшем хотелось бы прикрутить к нему Single Click, но пока хватает и этого.

    P.S. Надеюсь, кому-нибудь пригодится. Буду рад вашим комментариям.
    Метки:
    Business Infinity Group 35,94
    IT-инфраструктура для бизнеса
    Поделиться публикацией
    Комментарии 81
    • +6
      Вариант с TeamViewer:
      — Нам нужен удалённый доступ к этому компьютеру из любой точки планеты.
      — Сейчас поставлю TeamViewer и установлю постоянный пароль.


      Вариант в статье:
      — Нам нужен удалённый доступ к этому компьютеру из любой точки планеты.
      — Ха! Сейчас начну ставить VNC, но… для этого попутно начну пересобирать ядро.


      Какую дискуссию вы хотите? Да, UltraVNC — это вам не работать.
      • +3
        Ага, все верно, спасибо за первые помидорки. В пользу VNC есть 2 аргумента: 1) это бесплатное решение, 2) это решение с подконтрольным вам сервером, что является плюсом с точки зрения безопасности.
        • 0

          Речь, наверное, всё же о том, что не всегда есть возможность реализовать ваш вариант. Например, клиент — это человек с ноутбуком и USB-модемом где-нибудь в регионе.

          • 0
            Используем TightVNC для таких целей, т.к. он самый производительный при работе через узкий канал (зато не безопасный, но в данном случае нам подходит). «Человек с ноутбуком» просто запускает скрипт, который стартует VNC сервер в режиме обратного соединения к нашему клиенту, работающему в режиме прослушивания с проброшенным наружу портом.

            От человека не требуется никакой конфигурации, скачать файл и запустить. Так что подобный сценарий использования тоже возможен. На хабре даже была статья рассказывающая об этом решении подробнее.
            • 0
              Вот для этого думаю прикрутить Single Click. Это полноценный запускаемый UVNC сервер в одном файле с возможностью кастомизировать его интерфейс.
              • 0

                У Tight нет возможности делать вот такие штуки с ID и посредником. Это действительно удобно, когда клиентов много, потому что сделать проброс на такое количество машин, и правильно настроить "слушателей" может быть очень сложно.

                • 0
                  Да, TightVNC очень ограничен в функционале (хотя передача файлов в наличии) и безопасности, но его сетевая оптимизация значительно выше аналогов. На нем можно более-менее комфортно работать даже через USB модем, субъективно аналогично TeamViewer. Другие его бесплатные аналоги существенно хуже в этом плане.
                  • 0
                    У Tight нет возможности делать вот такие штуки с ID и посредником.

                    Всё есть (TurboVNC — форк TightVNC с оптимизациями и новыми плюшками).
              • 0
                Да, на слабых каналах UVNC сложно использовать.
                • 0

                  Видимо у ultraVNC с tightVNC разные требования к каналу.
                  tightVNC комфортно работает на пропадающем в дороге 3G. Иногда приходится даже какое-то простенькое видео подредактировать в premier, и залить в инет находясь при этом в поезде. По ощущениям teamviewer раньше перестаёт работать, чем tightVNC.

            • +3

              Стоимость лицензии на TeamViewer не забыли посмотреть?
              Если достаточно активно цепляться к компам, в определенный момент некоммерческое использование начнёт вставлять палки в колёса.

              • +1

                Причём не хилые такие палки в колеса. Teamviewer меньше 2 минут работает раз в 10 минут. Но и за это спасибо им. Хотел купить, да оказалось, что не так и просто это сделать юрлицу, по безналу в Германию оплатить не удалось. Может сейчас что-то изменилось, да уже не хочется, столько глюков с ним.


                Teamviewer хватает чтобы быстренько поставить VNC, но я ставлю не ultraVNС, а tightVNC, прекрасно работает, есть клиенты на android и ios.


                И у них есть Listening viewer, что позволяет мне относительно легко подключаться к клиентам за nat.

                • 0
                  Можно купить через российских крупных софт-ритейлеров, но наценка и НДС, конечно же.
              • +2
                /поморщившись/
                1. Я как-то пробовал сделать удаленный доступ с адроида на линух через тимвьювер и могу сказать ровно то же самое: ТВ — это вам не работать. Ну и, как уже верно заметили выше — ТВ это коммерческое решение с серверами вне вашего контроля. То, что оно дает возможность свободного использования — это их милость а не ваше право, со всем вытекающим. Напомню что был, знаете ли, неплохой сервис хамачи…

                2. Что же до статьи то в ней несколько неопределенно для кого именно делался этот доступ. Судя по «нестандартным портам» все же похоже что для некоего круга, определенного заранее. Тогда несколько непонятны претензии к vnc на тему шифрования, длины паролей итд, поскольку это в общем-то не совсем его задача, логичнее было бы поднимать vpn и уже внутри него поднимать удаленный доступ…
                • 0
                  С VPN тоже не все так просто. До каждой машины, которой надо управлять его не добросишь, потому что машин достаточно много. Значит надо добрасывать до подсетей, но у нас есть пересекающиеся подсети и это тоже может создавать проблемы. В этой ситуации такое решение оказалось самым беспроблемным. Но голый VNC для такого не подходил, по причинам, озвученным выше, а вот если снабдить его разными примочками, то становится более приятно и безопасно работать. Да и лучше, когда все необходимое (т.е. и шифрование и удаленный доступ) получается объединить в одном продукте, согласитесь.
                  • +1
                    Значит надо добрасывать до подсетей, но у нас есть пересекающиеся подсети и это тоже может создавать проблемы.

                    У меня была похожая проблема, нужно было объединить две сети с пересекающимися адресами. Сначала попробовал шаманить с SNAT, но выглядело это топорно и работало на костылях. В итоге решил поднять IPv6 в локальной сети. Работает на удивление хорошо, почти все программы без труда заработали с IPv6-адресами.


                    Не говорю, что это идеальное решение для вашего случая, но как вариант советую рассмотреть. Конечно, этот совет большей частью для случаев, когда все машины находятся под личным управлением.

                    • 0
                      Спасибо, обязательно попробую.
              • 0
                Насколько я помню vnc как таковой отправляет не изменения, как RDP, а просто потоком шлет графику. В этом направлении ничего не поменялось? Я бы с радостью переехал на любой VNC. У нас просто много удаленных точек, в ректальных складках России, и там качество связи оставляет желать лучшего. TeamViewer справляется хорошо. Было бы здорово иметь бесплатный, аналогичный продукт.
                • 0
                  X2Go/NoMachine's NX/freeNX пробовали?
                  • 0
                    Да, правда давно, и в упор не помню, что ж мне там не понравилось. Надо будет глянуть еще раз. Спасибо, что напомнили =)
                    • 0
                      Поправьте меня, если я ошибаюсь, но X2Go и freeNX подходят только для Linux-десктопов, а NoMachine's NX требует Enterprise лицензий для работы в режиме, в котором сейчас работает UltraVNC.
                      • 0
                        я пробовал и, честно говоря, он меня сильно разочаровал.
                        скорость как у VNC в худших его проявлениях, а удобство ммм… не очень.

                        В общем, мне не понравилось.
                      • 0
                        Я вот эту программку уже пару лет использую: http://rvisit.net. Вполне заменяет TeamViewer/AMMY для повседневных задач. И да, она полностью бесплатна.
                        • +1
                          Не проверяли, корректно ли она работает при запросе на повышение прав в Windows?
                          • 0
                            Не доводилось пока. Её можно установить на клиентских машинах в виде службы, в принципе, не должно быть проблем.
                          • 0
                            Спасибо за ссылку, ради интереса посмотрю/погоняю в тестовой среде.
                            • 0
                              А на чем зарабатывают разработчики этой проприетарной утилиты, если она полностью бесплатная и без платной поддержки?
                              • 0

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


                                Попробовал, работает. Но мне не подходит, так как требуется мультиплатформенность.

                              • 0
                                Трафик гоняется через сервера этого разработчика? То есть в любой момент, он может прикрыть лавочку?
                              • +2
                                Немного не так, VNC использует RFB протокол, который тоже отсылает только обновления экрана, но только прямоугольными областями и в самом простом случае без сжатия вообще. То есть поток все равно получается неслабый, особенно если обновляются значительные области экрана. Это хорошо заметно при работе. Некоторые VNC пррограммы поддерживают динамическое сжатие потока, но насколько помню, UltraVNC — нет.
                                • 0
                                  Спасибо за информацию!
                                  • 0
                                    Это самая главная проблема VNC, и о ней Вы не упомянули вначале статьи. TV, как раз хорошо работает на слабых каналах. :(
                                    • 0
                                      Спасибо за подсказку, исправил.
                                  • 0
                                    anydesk — самый быстрый и бесплатный для дома
                                    • +1

                                      Это замечательное чудо:


                                      1. Требует в обязательном порядке админских прав в момент запуска
                                      2. Прописывает себя в службы
                                      3. Иногда (потеря пакета?) в сеансе удаленного управления мышь/клавиатура отваливаются
                                        да, запасной вариант, но уж проще AMMYY скачать (да, хром уже отказывается с оф сайта качать)
                                      • 0
                                        Веб контроль Касперского (или как он там зовётся) тоже ammyy блокирует.
                                        • 0
                                          у меня ammyy куплен, но регулярно приходится использовать TV, т.к. если ammyy запущен из под пользователя (или даже с админскими правами, но не как сервис), он:
                                          а) рвёт соединение при любом запросе UAC (это понятно и терпимо)
                                          б) сходит с ума, если у пользователя два монитора, а тем более, если у них разное разрешение

                                          Тем не менее, тех небольших денег, которые уплачены за ammyy не жалко, в своих рамках это отличное решение (которое работает из под wine без проблем. Иногда это важно).
                                    • 0
                                      В своё время писал решение похожей проблемы, только там был tcp over tcp. Поднимался обратный конект до сервера который был на белом айпишнике и вещал порт во внутреннюю сеть. (ну и запускался vnc сервер портативный)Программа говорила пользователю: «Вы пользователь: 7004», где 7004 порт на сервере. А дальше сапорт подключался и делал то что надо.
                                      Правда можно было бы STUN подключение поднимать, но я на тот момент не знал об этом протоколе.
                                      • +2
                                        > Устанавливаем репитер в систему.
                                        > sudo ./install.sh

                                        Установка в обход менеджера пакетов — ОЧЕНЬ плохая практика.
                                        • –1
                                          Было использовано то, что предоставляется разработчиком программы. Подготовка пакета, как вы знаете, довольно нетривиальная задача. В будущем, возможно, соберу. А вопрос ручной сборки программ для меня скорее философский, потому что мейнтейнеры часто не собирают редкие или достаточно старые пакеты.
                                        • 0
                                          (deleted)
                                          • +4
                                            Скажите, а проблема с раскладками клавиатуры уже решена? А при коннекте с Win на Linux?
                                            • 0
                                              Я про нее читал, но пока за все время эксплуатации не сталкивался. Пока не было ситуации с коннектом с Win на Linux.
                                            • 0
                                              У UltraVNC есть одна маленькая проблема.
                                              А именно медленная скорость работы.
                                              Для меня это мертворожденный продукт.
                                              • –1
                                                Есть такая проблема, бывает, мы сталкиваемся с ней. Но для техподдержки в целом хватает.
                                                • 0
                                                  У меня постоянно.
                                                  По лок.сети скорость работы нормальная и я вполне мог работать. Но как только работа начинается через глобальную сеть, так сразу жопа.
                                                  Сейчас открыл для себя RMS, чем хорош, у него есть свой ID сервер. Поэтому пока им пользуюсь.
                                                  Но он тоже платный. Хоть цена и мизерная.
                                              • +1

                                                Как то делал наколеночную автоматизацию VNC с рандомными паролями как у ТВ.
                                                Собственно суть проста: был настроен репитер с публичным доуступом, на стороне хоста .Net-программулька запускала vnc c нужными параметрами (генерила при этом пароль, который и передавала параметром) а по завершению работы сервис vnc прибивался. Выглядело топорно — окно с двумя кнопками и двумя строками — но работало стабильно и эффективно.
                                                деплой хоста занимал не больше чем TVQS, то есть скопировать папочку и вытащить ярлык

                                                • 0
                                                  У себя для этих целей хотел применить Single Click, но пока все застопорилось, это не первоочередная задача.
                                                • +1
                                                  Насколько вся «сборная солянка» стабильно работает?
                                                  У нас используется RealVNC — он запиливается в vpn, и таким образом всё стабильно работает больше 5 лет.
                                                  • 0
                                                    Вполне стабильно, если учитывать обозначенные ограничения. Пока заметил только периодические падения сервера VNC, но это решается простой настройкой на автоперезапуск.
                                                  • 0
                                                    спасибо за подробную статью.

                                                    только из первых абзацев я не понял, чего хотел добиться автор. возможности ходить всем офисом на сервер или же вариант удаленного администрирования?
                                                    • 0
                                                      Вариант удаленного администрирования.
                                                    • +1

                                                      Спасибо за статью!


                                                      Если захотите реализовать Single Click, попробуйте noVNC. Это веб-клиент VNC, работает со всеми основными браузерами и не требует доп. плагинов (не считая WebSocket-прокси на сервере).


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

                                                      • 0
                                                        Спасибо за подсказку, допишу сегодня чуть позже UPD.
                                                        • 0
                                                          noVNC — это именно клиент, я подумывал его использовать для подключения к серверам, но не уверен, что он поддерживает нотацию для подключения по ID, это же не часть протокола.
                                                          • 0
                                                            но не уверен, что он поддерживает нотацию для подключения по ID

                                                            Ну, по крайней мере соответствующее поле в интерфейсе есть.
                                                            Скриншот


                                                            Но есть и такой repeater, может быть речь про него.
                                                            В конце концов это WebSocket, а значит, его можно аутентифицировать как любой HTTP-запрос. Хотя возможно придется покопаться в коде.
                                                            Пока искал информацию про репитеры, нашел две интересные статьи. Настройка TightVNC для работы с repeater и статья про обход NAT.
                                                            • 0
                                                              Спасибо за статьи. Репитер, как я понял, — оригинальный код, переписанный на перле.
                                                        • 0
                                                          tightVNC + hamachi = кроссплатформенно, NAT проходит (vpn), привязывается к статике адресов hamachi, шифруется, сжимается, только белье не стирает… бесплатно… как то так…
                                                          • 0
                                                            У хамачи в бесплатном режиме серьезные ограничения на создание виртуальных сетей, не больше 5 хостов на сеть, насколько я помню. А разводить скопище сетей, как-то тоже не очень.
                                                            • 0
                                                              Hamachi

                                                              https://tinc-vpn.org/ :D


                                                              // рекомендую 1.1 ветку. Она хоть и пре-релизная, но там есть вкусняшки:
                                                              1) эллиптическое шифрование,
                                                              2) лучший mesh-алгоритм (особенно актуально с Mode=switch)
                                                              3) возможность "инвайтов" (когда можно всю конфигурацию забить на сервере в скрипт генерации инвайтов, а потом просто сгенерить простой инвайт (строку), который достаточно будет просто принять на клиенте и на том будет сразу настроена сеть :)

                                                              • 0
                                                                Интересное решение. Обязательно взгляну и проверю.
                                                          • 0
                                                            Как-то однобоко подошли к вопросу… В сегодняшнем состоянии у UltraVNC есть намного более насущные проблемы, нежели связь за NAT'ом и шифрование. А именно:
                                                            — проблемы с переключением языка
                                                            — проблемы с отправкой комбинаций клавиш
                                                            — проблемы с передачей файлов
                                                            — и много других проблем.
                                                            Мы у себя часть решили правкой исходников и перекомпиляцией, часть — настройками. И сейчас работает практически всё как надо. Но доработана всего одна версия (1.2.0.5) и доработки обратно не возвращались.
                                                            Кроме того, у UltraVNC нет своей адресной книги, пришлось писать свою, в которой для каждого соединения можно задать любые параметры: скорость, цвета, кодирование, масштаб, и т.д. На медленных каналах тоже неплохо работает.
                                                            • 0
                                                              Скорее всего такая однобокость связана с особенностями использования. То есть я написал, с чем столкнулся сам. А адресную книгу использовал вот эту: https://sourceforge.net/projects/vncaddressbook/.
                                                            • 0
                                                              Рекомендую как альтернативу сборку chunkvnc (на базе uvnc+autoit3, https://web.archive.org/web/20150227004413/http://www.chunkvnc.com/ChunkVNC_3_3_1_setup.exe http://forum.ultravnc.info/viewforum.php?f=50 ) и perl скрипт коммутатор (http://www.vuware.com/chunkvnc/ultravnc_repeater.zip) гораздо удобней и прозрачнее (есть исходники, сложная настройка только один раз, потом удобная сборка простая для пользователей), можно допилить под себя сборку (логотипы, длину одноразового кода, сделать вариант с полным доступом и только на просмотр), обновить бинарник uvcn до актуального, для пользующихся будет как тимвьюер.
                                                            • 0
                                                              Есть еще Apache guacamole
                                                              Гейт для протоколов RDP, VNC, ssh. Клиент — браузер. Нужно поставить и выставить наружу сервер с этой программой по http.
                                                              • 0
                                                                Интересный проект. Оставил себе на заметку.
                                                              • 0
                                                                Я на удаленных машинах с линуксом за NAT настраиваю autossh, который автоматически подключается к прокси-серверу, к которому уже потом подключаюсь я и с него к конечной машине. Думаю похожим образом пробросить XRDP over x11vnc

                                                                Сервис SystemD (/lib/systemd/system/ИМЯ-СЕРВИСА.service) для запуска SSH-туннеля до удаленной точки (чтобы к машине за NAT можно было подключаться по SSH)

                                                                [Unit]
                                                                Description=autossh Dina 12.03.2017
                                                                After=network-online.target ssh.service

                                                                # Original: https://gist.github.com/thomasfr/9707568 http://rus-linux.net/MyLDP/sec/reverse-SSH-tunnel.html

                                                                [Service]
                                                                User=user
                                                                ExecStart=/usr/bin/autossh -M 7474 -N -R 8877:localhost:2323 username@remoteserver.ru -p 5656 -XCY

                                                                [Install]
                                                                WantedBy=multi-user.target

                                                                7474 — порт для мониторинга autossh, открывается на удаленной точке, 8877 — порт, на котором на уделенной точке будет висеть SSH доступ к нашей системе, 2323 — порт SSH на локальной системе, 5656 — порт SSH на удаленной точке.

                                                                Удаленная точка — нечто с линуксом не за NAT, тогда по SSH подключаемся сначала к ней, а с нее по SSH к нашей подопытной системе.
                                                                • 0
                                                                  1. Вопрос
                                                                  «В разделе Authentication выставляем два пароля. Пароли должны быть одинаковыми» — когда устанавливаешь одинаковые пароли, при подключении сервер работает в режиме просмотра, а режим управления недоступен.
                                                                  Это действителньо то, что вам нужно? Мы используем VNC для управления компьютерами.

                                                                  2. Уточнение.
                                                                  «А так как MAC-адреса и так уникальны, то почти гарантированно получаем уникальный номер с достаточно низкой вероятностью коллизии.»
                                                                  Сами себе противоречите. Либо уникальны, либо «почти гарантированно уникальный». В действительности адреса MAC должны быть уникальны по стандарту, но на практике стандарт не всегда соблюдается. А ещё существуют программы, заменяющие MAC, и MAC можно подменить средствами (драйвера) ОС.
                                                                  Я бы сделал генератор уникального ID на вебстраничке с записью этого ID с базу данных. Самый простой вариант — форма в гуглодоках.

                                                                  3. Зря не рассматриваете VPN. Мы устанавливаем сервер VPN у обслуживаемого клиента, в результате клиент получает практически круглосуточное дистанционное обслуживание, которое для нас обходится по очень низкой себестоимости — по срочному вопросу инженер может подключиться хоть с планшета, гуляя в парке :), дополнительно клиент получает возможность дистанционной работы своих сотрудников. Технология — OpenVPN на сертификатах плюс списки доступа в блокчейне — утечка закрытого ключа опасна до момента обнаружения утечки, ключ блокируется простым удалением (точнее, заменой) записи, сервер VPN получает изменение автоматически.

                                                                  4. Сам подключаюсь с GNU/Linux к UltraVNC на компьютерах с Windows из программы Remmina, в ней вполне удобная адресная книга внутреннего формата. Конечно, передача файлов не работает, но, поскольку использую VPN, это не мешает.
                                                                  • 0
                                                                    1. У меня нет такой информации, машина прекрасно управляется удаленно.

                                                                    2. Противоречия нет. MAC-адрес, если мы, конечно, не китайцы и не занимаемся всякими грязными трюками вроде подмены MAC является уникальным. Но в то же время функция, которая преобразует MAC в число схлопывает его до 9-значного номера, которых всего 1 миллиард. То есть есть вероятность, что найдутся 2 MAC, которые дадут одинаковое число на выходе. Но с учетом количества машин которые мы подключаем, этот вопрос непринципиален. Да, можно и свой генератор с хранением номеров, ктож спорит, просто его делать дольше, чем намахать такой мини-скрипт. С другой стороны я ничем никого не ограничиваю. =)

                                                                    3. У меня есть VPN до клиентов, но он не решает вопроса доступа к каждой машине. Или надо каждый компьютер подключать к нашему VPN, что не очень рационально. Плюс есть пересекающиеся подсети, что создает проблемы при маршрутизации. Плюс клиенты иногда просят помощи на рабочих местах, которые стоят за пределами офиса. Мне показалось, что такое решение будет рациональнее.

                                                                    4. На этот комментарий нет особого смысла отвечать. Я рад за товарища и сам использую Remmina, но техподдержка сидит на Windows. где Remmina нет, потому вопрос адресной книги там актуален.

                                                                  • 0
                                                                    На работе UVNC и RealVNC, + зоопарк из ammy, DameWare и банальной Виндовой удаленки. TV только для дома. Два момента сразу всплывает: у каждого сервиса своя ниша (хоть и смежный функционал) и кому как удобнее. Дома три компа всего на удаленке нужны, поэтому TV с автозапуском и постоянным паролем. На работе основной инструмент UVNC. Остальное по желанию коллег, кто к кому привык. + VNC на удаленной тачке под VPN норм срабатывает. Можно долго спорить на тему «что лучше», но истинна одна: каждому свой функционал и каждому по удобствам ))
                                                                  • 0
                                                                    как то админы поднимали такое решение для поддержки вип-клиентов и активно требовали, чтобы вместо тимвьюера пользовались только этим.
                                                                    но почему то на предложение самим этим пользоваться морщили нос.
                                                                    • 0
                                                                      Я рад за них и их админов, но что тут отвечать не знаю, честно.
                                                                    • 0
                                                                      Товарищи, кто-нибудь победил проблему UAC-ом убивающим vnc сессию? И чем предложенное решение лучше vpn+«удаленный помощник»?
                                                                      • 0
                                                                        Я отключаю secure screen при вводе пароля и UAC выскакивает на стандартном экране без обрыва сессии. Да, возможно несколько понижает безопасность, но лучше решения пока не нашлось.

                                                                        Смотря с какой позиции лучше. Про VPN много сказано ранее, удаленный помощник тоже непросто настроить да и подтверждений он требует прилично.
                                                                      • 0
                                                                        Использую X2Go, основанный на Nomachine NX. Заметно шустрее чем VNC.
                                                                        Для установления канала между клиентом и сервером он использует ssh со всеми его плюшками типа ProxyCommand, что позволяет проходить через NAT.
                                                                        • 0
                                                                          Он подходит только для Linux-хостов, у нас же почти сугубо винда.
                                                                        • 0
                                                                          Здравствуйте.
                                                                          А такой вопрос.

                                                                          Что с «не обычными» окнами? Это такие окна как примеру у файрфокса с правой стороны меню (так же окно авиры, которое по правой клавише в трее). Оно как бы есть для пользователя по TightVNC его не отображает.

                                                                          Или это только косяк TightVNC? Тогда может кто знает что с ним делать?
                                                                          • 0
                                                                            Если честно, не встречался с нестандартным поведением окон и пока ничего сказать не могу насчет их необычности. Но рискну предположить — проблема заключается в способе рисования на экране и, скорее всего, затрагивает все клиенты.

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

                                                                          Самое читаемое