Предупреждение: все прилетевшие тапочки будут проданы, помидоры – съедены, яйца – пожарены, испорченные – выброшены. Те, кто думают, что мы маемся фигней – вы угадали, возьмите с полки пирожок. Автор не призывает бросать мешки грудью на амбразуры. Он вообще ни к чему не призывает – он же не политик и не гражданин с активной гражданской позицией. А вот желающих подискутировать – милости просим. Сегодня я буду рассказывать вам занимательную историю о замене 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 Server
- SecureVNC Plugin:
- Mirror Driver
Запускаем установщик 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.
- UltraVNC Viewer
- SecureVNC Plugin: x86, x64.
Начинаем установку.
Внимательно читаем странное и нажимаем Next >.
Выбираем папку установки и нажимаем Next >.
Выбираем только компонент UltraVNC Viewer и нажимаем Next >.
Оставляем здесь все как есть и просто нажимаем Next >.
Выставляем галочки так, как вам будет удобно и нажимаем Next >.
Отключаем просмотр последних версий снятием галочки и нажимаем кнопку Finish.
Теперь скачиваем файл плагина по ссылке выше и перемещаем его в папку программы. После этого запускаем Viewer.
Устанавливаем все настройки так же, как и на скрине. ID сервера для подключения вводится именно в таком формате, то есть ID:XXXXXXXX. IP и порт репитера вводятся такими, какими были назначены при установке репитера.
Все, можно подключаться и радоваться жизни.
Замечания по использованию
- Не забывайте при подключении устанавливать security плагин. Если его не будет, соединение все равно произойдет, только без шифрования. Заставить UltraVNC Server требовать шифрования мне пока не удалось.
- Донастройте сервис при установке UltraVNC сервера. В процессе использования было отмечено, что сервис сервера иногда падает. Для того, чтобы в нужный момент не потерять связь с машиной рекомендуется в настройках сервиса установить его автоматический перезапуск при падениях.
Увидимся в следующих сериях
Да, UltraVNC, это вам не это. В смысле, по функциональности проще, имеет все отличительные признаки бесплатного ПО, да и вообще, где это видано… Но я считаю, что как инструмент оно вполне имеет право на жизнь, если удовлетворяет требованиям по безопасности и предоставляемому сервису. В дальнейшем хотелось бы прикрутить к нему Single Click, но пока хватает и этого.
P.S. Надеюсь, кому-нибудь пригодится. Буду рад вашим комментариям.
Комментарии (64)
sudoroot
04.07.2017 11:43Насколько я помню vnc как таковой отправляет не изменения, как RDP, а просто потоком шлет графику. В этом направлении ничего не поменялось? Я бы с радостью переехал на любой VNC. У нас просто много удаленных точек, в ректальных складках России, и там качество связи оставляет желать лучшего. TeamViewer справляется хорошо. Было бы здорово иметь бесплатный, аналогичный продукт.
mrobespierre
04.07.2017 12:14X2Go/NoMachine's NX/freeNX пробовали?
sudoroot
04.07.2017 12:55Да, правда давно, и в упор не помню, что ж мне там не понравилось. Надо будет глянуть еще раз. Спасибо, что напомнили =)
binfini
04.07.2017 15:04Поправьте меня, если я ошибаюсь, но X2Go и freeNX подходят только для Linux-десктопов, а NoMachine's NX требует Enterprise лицензий для работы в режиме, в котором сейчас работает UltraVNC.
StraNNicK
05.07.2017 20:28я пробовал и, честно говоря, он меня сильно разочаровал.
скорость как у VNC в худших его проявлениях, а удобство ммм… не очень.
В общем, мне не понравилось.
nik_vr
04.07.2017 12:55Я вот эту программку уже пару лет использую: http://rvisit.net. Вполне заменяет TeamViewer/AMMY для повседневных задач. И да, она полностью бесплатна.
GuessWho
05.07.2017 15:27А на чем зарабатывают разработчики этой проприетарной утилиты, если она полностью бесплатная и без платной поддержки?
QDeathNick
06.07.2017 14:58А видимо ни на чём не зарабатывают, как пишет автор, сваял на досуге.
Сайт и логотип ему делали дешёвые фрилансеры, судя по гуглу.
Попробовал, работает. Но мне не подходит, так как требуется мультиплатформенность.
binfini
04.07.2017 15:01+2Немного не так, VNC использует RFB протокол, который тоже отсылает только обновления экрана, но только прямоугольными областями и в самом простом случае без сжатия вообще. То есть поток все равно получается неслабый, особенно если обновляются значительные области экрана. Это хорошо заметно при работе. Некоторые VNC пррограммы поддерживают динамическое сжатие потока, но насколько помню, UltraVNC — нет.
VGusev2007
04.07.2017 21:34Это самая главная проблема VNC, и о ней Вы не упомянули вначале статьи. TV, как раз хорошо работает на слабых каналах. :(
evnuh
04.07.2017 17:27anydesk — самый быстрый и бесплатный для дома
remzalp
05.07.2017 06:33+1Это замечательное чудо:
- Требует в обязательном порядке админских прав в момент запуска
- Прописывает себя в службы
- Иногда (потеря пакета?) в сеансе удаленного управления мышь/клавиатура отваливаются
да, запасной вариант, но уж проще AMMYY скачать (да, хром уже отказывается с оф сайта качать)
StraNNicK
05.07.2017 20:32у меня ammyy куплен, но регулярно приходится использовать TV, т.к. если ammyy запущен из под пользователя (или даже с админскими правами, но не как сервис), он:
а) рвёт соединение при любом запросе UAC (это понятно и терпимо)
б) сходит с ума, если у пользователя два монитора, а тем более, если у них разное разрешение
Тем не менее, тех небольших денег, которые уплачены за ammyy не жалко, в своих рамках это отличное решение (которое работает из под wine без проблем. Иногда это важно).
ice2heart
04.07.2017 12:51В своё время писал решение похожей проблемы, только там был tcp over tcp. Поднимался обратный конект до сервера который был на белом айпишнике и вещал порт во внутреннюю сеть. (ну и запускался vnc сервер портативный)Программа говорила пользователю: «Вы пользователь: 7004», где 7004 порт на сервере. А дальше сапорт подключался и делал то что надо.
Правда можно было бы STUN подключение поднимать, но я на тот момент не знал об этом протоколе.
Cheater
04.07.2017 14:18+2> Устанавливаем репитер в систему.
> sudo ./install.sh
Установка в обход менеджера пакетов — ОЧЕНЬ плохая практика.binfini
04.07.2017 15:44-1Было использовано то, что предоставляется разработчиком программы. Подготовка пакета, как вы знаете, довольно нетривиальная задача. В будущем, возможно, соберу. А вопрос ручной сборки программ для меня скорее философский, потому что мейнтейнеры часто не собирают редкие или достаточно старые пакеты.
evgenWebm
04.07.2017 15:48У UltraVNC есть одна маленькая проблема.
А именно медленная скорость работы.
Для меня это мертворожденный продукт.binfini
04.07.2017 15:49-1Есть такая проблема, бывает, мы сталкиваемся с ней. Но для техподдержки в целом хватает.
evgenWebm
04.07.2017 16:30У меня постоянно.
По лок.сети скорость работы нормальная и я вполне мог работать. Но как только работа начинается через глобальную сеть, так сразу жопа.
Сейчас открыл для себя RMS, чем хорош, у него есть свой ID сервер. Поэтому пока им пользуюсь.
Но он тоже платный. Хоть цена и мизерная.
zeronice
04.07.2017 15:56+1Как то делал наколеночную автоматизацию VNC с рандомными паролями как у ТВ.
Собственно суть проста: был настроен репитер с публичным доуступом, на стороне хоста .Net-программулька запускала vnc c нужными параметрами (генерила при этом пароль, который и передавала параметром) а по завершению работы сервис vnc прибивался. Выглядело топорно — окно с двумя кнопками и двумя строками — но работало стабильно и эффективно.
деплой хоста занимал не больше чем TVQS, то есть скопировать папочку и вытащить ярлыкbinfini
04.07.2017 16:13У себя для этих целей хотел применить Single Click, но пока все застопорилось, это не первоочередная задача.
Paramount
04.07.2017 16:13+1Насколько вся «сборная солянка» стабильно работает?
У нас используется RealVNC — он запиливается в vpn, и таким образом всё стабильно работает больше 5 лет.binfini
04.07.2017 16:14Вполне стабильно, если учитывать обозначенные ограничения. Пока заметил только периодические падения сервера VNC, но это решается простой настройкой на автоперезапуск.
CTpaHHoe
04.07.2017 17:38спасибо за подробную статью.
только из первых абзацев я не понял, чего хотел добиться автор. возможности ходить всем офисом на сервер или же вариант удаленного администрирования?
h31
05.07.2017 01:53+1Спасибо за статью!
Если захотите реализовать Single Click, попробуйте noVNC. Это веб-клиент VNC, работает со всеми основными браузерами и не требует доп. плагинов (не считая WebSocket-прокси на сервере).
По-хорошему, в статью нужно добавить информацию о задаче: когда возникает, какие требования, в каких ситуациях актуальна, в каком контексте, какие варианты решения имеются и так далее. Потому что это самый первый вопрос, который появляется в процессе чтения. Лучше, чтобы такая инфа была сразу в тексте, а не где-то кусками в комментариях.
binfini
05.07.2017 09:47noVNC — это именно клиент, я подумывал его использовать для подключения к серверам, но не уверен, что он поддерживает нотацию для подключения по ID, это же не часть протокола.
h31
05.07.2017 17:52но не уверен, что он поддерживает нотацию для подключения по ID
Ну, по крайней мере соответствующее поле в интерфейсе есть.
Скриншот
qwertKI
05.07.2017 10:18tightVNC + hamachi = кроссплатформенно, NAT проходит (vpn), привязывается к статике адресов hamachi, шифруется, сжимается, только белье не стирает… бесплатно… как то так…
binfini
05.07.2017 10:18У хамачи в бесплатном режиме серьезные ограничения на создание виртуальных сетей, не больше 5 хостов на сеть, насколько я помню. А разводить скопище сетей, как-то тоже не очень.
mva
11.07.2017 11:53Hamachi
// рекомендую 1.1 ветку. Она хоть и пре-релизная, но там есть вкусняшки:
1) эллиптическое шифрование,
2) лучший mesh-алгоритм (особенно актуально с Mode=switch)
3) возможность "инвайтов" (когда можно всю конфигурацию забить на сервере в скрипт генерации инвайтов, а потом просто сгенерить простой инвайт (строку), который достаточно будет просто принять на клиенте и на том будет сразу настроена сеть :)
AVX
05.07.2017 14:21Как-то однобоко подошли к вопросу… В сегодняшнем состоянии у UltraVNC есть намного более насущные проблемы, нежели связь за NAT'ом и шифрование. А именно:
— проблемы с переключением языка
— проблемы с отправкой комбинаций клавиш
— проблемы с передачей файлов
— и много других проблем.
Мы у себя часть решили правкой исходников и перекомпиляцией, часть — настройками. И сейчас работает практически всё как надо. Но доработана всего одна версия (1.2.0.5) и доработки обратно не возвращались.
Кроме того, у UltraVNC нет своей адресной книги, пришлось писать свою, в которой для каждого соединения можно задать любые параметры: скорость, цвета, кодирование, масштаб, и т.д. На медленных каналах тоже неплохо работает.
q0s
05.07.2017 16:37Рекомендую как альтернативу сборку 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 до актуального, для пользующихся будет как тимвьюер.
Marahal
05.07.2017 16:37Есть еще Apache guacamole
Гейт для протоколов RDP, VNC, ssh. Клиент — браузер. Нужно поставить и выставить наружу сервер с этой программой по http.
specblog
05.07.2017 16:37Я на удаленных машинах с линуксом за 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 к нашей подопытной системе.
grumbler66rus
11.07.2017 14:541. Вопрос
«В разделе Authentication выставляем два пароля. Пароли должны быть одинаковыми» — когда устанавливаешь одинаковые пароли, при подключении сервер работает в режиме просмотра, а режим управления недоступен.
Это действителньо то, что вам нужно? Мы используем VNC для управления компьютерами.
2. Уточнение.
«А так как MAC-адреса и так уникальны, то почти гарантированно получаем уникальный номер с достаточно низкой вероятностью коллизии.»
Сами себе противоречите. Либо уникальны, либо «почти гарантированно уникальный». В действительности адреса MAC должны быть уникальны по стандарту, но на практике стандарт не всегда соблюдается. А ещё существуют программы, заменяющие MAC, и MAC можно подменить средствами (драйвера) ОС.
Я бы сделал генератор уникального ID на вебстраничке с записью этого ID с базу данных. Самый простой вариант — форма в гуглодоках.
3. Зря не рассматриваете VPN. Мы устанавливаем сервер VPN у обслуживаемого клиента, в результате клиент получает практически круглосуточное дистанционное обслуживание, которое для нас обходится по очень низкой себестоимости — по срочному вопросу инженер может подключиться хоть с планшета, гуляя в парке :), дополнительно клиент получает возможность дистанционной работы своих сотрудников. Технология — OpenVPN на сертификатах плюс списки доступа в блокчейне — утечка закрытого ключа опасна до момента обнаружения утечки, ключ блокируется простым удалением (точнее, заменой) записи, сервер VPN получает изменение автоматически.
4. Сам подключаюсь с GNU/Linux к UltraVNC на компьютерах с Windows из программы Remmina, в ней вполне удобная адресная книга внутреннего формата. Конечно, передача файлов не работает, но, поскольку использую VPN, это не мешает.
BigEl
12.07.2017 15:51На работе UVNC и RealVNC, + зоопарк из ammy, DameWare и банальной Виндовой удаленки. TV только для дома. Два момента сразу всплывает: у каждого сервиса своя ниша (хоть и смежный функционал) и кому как удобнее. Дома три компа всего на удаленке нужны, поэтому TV с автозапуском и постоянным паролем. На работе основной инструмент UVNC. Остальное по желанию коллег, кто к кому привык. + VNC на удаленной тачке под VPN норм срабатывает. Можно долго спорить на тему «что лучше», но истинна одна: каждому свой функционал и каждому по удобствам ))
Reeze
Вариант с TeamViewer:
Вариант в статье:
Какую дискуссию вы хотите? Да, UltraVNC — это вам не работать.
binfini
Ага, все верно, спасибо за первые помидорки. В пользу VNC есть 2 аргумента: 1) это бесплатное решение, 2) это решение с подконтрольным вам сервером, что является плюсом с точки зрения безопасности.
RogueShy
Речь, наверное, всё же о том, что не всегда есть возможность реализовать ваш вариант. Например, клиент — это человек с ноутбуком и USB-модемом где-нибудь в регионе.
iDm1
Используем TightVNC для таких целей, т.к. он самый производительный при работе через узкий канал (зато не безопасный, но в данном случае нам подходит). «Человек с ноутбуком» просто запускает скрипт, который стартует VNC сервер в режиме обратного соединения к нашему клиенту, работающему в режиме прослушивания с проброшенным наружу портом.
От человека не требуется никакой конфигурации, скачать файл и запустить. Так что подобный сценарий использования тоже возможен. На хабре даже была статья рассказывающая об этом решении подробнее.
binfini
Вот для этого думаю прикрутить Single Click. Это полноценный запускаемый UVNC сервер в одном файле с возможностью кастомизировать его интерфейс.
RogueShy
У Tight нет возможности делать вот такие штуки с ID и посредником. Это действительно удобно, когда клиентов много, потому что сделать проброс на такое количество машин, и правильно настроить "слушателей" может быть очень сложно.
iDm1
Да, TightVNC очень ограничен в функционале (хотя передача файлов в наличии) и безопасности, но его сетевая оптимизация значительно выше аналогов. На нем можно более-менее комфортно работать даже через USB модем, субъективно аналогично TeamViewer. Другие его бесплатные аналоги существенно хуже в этом плане.
h31
Всё есть (TurboVNC — форк TightVNC с оптимизациями и новыми плюшками).
merlin-vrn
А TigerVNC?
binfini
Да, на слабых каналах UVNC сложно использовать.
QDeathNick
Видимо у ultraVNC с tightVNC разные требования к каналу.
tightVNC комфортно работает на пропадающем в дороге 3G. Иногда приходится даже какое-то простенькое видео подредактировать в premier, и залить в инет находясь при этом в поезде. По ощущениям teamviewer раньше перестаёт работать, чем tightVNC.
remzalp
Стоимость лицензии на TeamViewer не забыли посмотреть?
Если достаточно активно цепляться к компам, в определенный момент некоммерческое использование начнёт вставлять палки в колёса.
QDeathNick
Причём не хилые такие палки в колеса. Teamviewer меньше 2 минут работает раз в 10 минут. Но и за это спасибо им. Хотел купить, да оказалось, что не так и просто это сделать юрлицу, по безналу в Германию оплатить не удалось. Может сейчас что-то изменилось, да уже не хочется, столько глюков с ним.
Teamviewer хватает чтобы быстренько поставить VNC, но я ставлю не ultraVNС, а tightVNC, прекрасно работает, есть клиенты на android и ios.
И у них есть Listening viewer, что позволяет мне относительно легко подключаться к клиентам за nat.
AK74U
Можно купить через российских крупных софт-ритейлеров, но наценка и НДС, конечно же.
hungry_ewok
/поморщившись/
1. Я как-то пробовал сделать удаленный доступ с адроида на линух через тимвьювер и могу сказать ровно то же самое: ТВ — это вам не работать. Ну и, как уже верно заметили выше — ТВ это коммерческое решение с серверами вне вашего контроля. То, что оно дает возможность свободного использования — это их милость а не ваше право, со всем вытекающим. Напомню что был, знаете ли, неплохой сервис хамачи…
2. Что же до статьи то в ней несколько неопределенно для кого именно делался этот доступ. Судя по «нестандартным портам» все же похоже что для некоего круга, определенного заранее. Тогда несколько непонятны претензии к vnc на тему шифрования, длины паролей итд, поскольку это в общем-то не совсем его задача, логичнее было бы поднимать vpn и уже внутри него поднимать удаленный доступ…
binfini
С VPN тоже не все так просто. До каждой машины, которой надо управлять его не добросишь, потому что машин достаточно много. Значит надо добрасывать до подсетей, но у нас есть пересекающиеся подсети и это тоже может создавать проблемы. В этой ситуации такое решение оказалось самым беспроблемным. Но голый VNC для такого не подходил, по причинам, озвученным выше, а вот если снабдить его разными примочками, то становится более приятно и безопасно работать. Да и лучше, когда все необходимое (т.е. и шифрование и удаленный доступ) получается объединить в одном продукте, согласитесь.
h31
У меня была похожая проблема, нужно было объединить две сети с пересекающимися адресами. Сначала попробовал шаманить с SNAT, но выглядело это топорно и работало на костылях. В итоге решил поднять IPv6 в локальной сети. Работает на удивление хорошо, почти все программы без труда заработали с IPv6-адресами.
Не говорю, что это идеальное решение для вашего случая, но как вариант советую рассмотреть. Конечно, этот совет большей частью для случаев, когда все машины находятся под личным управлением.
binfini
Спасибо, обязательно попробую.