Hyper-V и устройства, использующие порты USB/COM


Вопрос, наболевший для многих, поднимается вновь и вновь: можно ли использовать устройства USB с виртуальными машинами Hyper-V? А устройства, использующие порты COM?


Ответ обычно очень неутешителен. По соображениям безопасности серверные решения виртуализации не предполагают работы с такими устройствами. Не существует связки VSP/VSC для шины USB, а также портов COM и LPT. Если для портов COM еще есть обходной путь через именованные каналы (Named Pipes) и Hyper-V это поддерживает, то с USB все мрачно. А даже для серверов часто требуются ключи HASP (привет 1С), криптографические токены для шифрования, считыватели смарткарт, модемы и так далее. И как правило такие устройства работают только через шину USB.


Но если серверные платформы виртуализации отвергают поддержку шины USB, то появляются независимые поставщики, которым интересно на этом заработать. Есть целый ряд различных разработок, тем или иным образом решающих такие вопросы. Существуют аппаратные решения, реализующие концентратор USB, подключаемый к компьютеру по Ethernet. И, значит, работающий в виртуальных машинах. Примером такого решения является AnywhereUSB.



Но аппаратные решения не гибки, дороги и сложны в обслуживании. Здесь на помощь приходят программные решения. Просмотрев несколько вариантов, я остановился на USB over Network компании Fabulatech.


Первая часть решения устанвливается на физическом компьютере — самом сервере Hyper-V или любом другом в сети. Поддерживаются все версии Windows, включая 64-битную Windows Server 2008. Серверный компонент отслеживает подключаемые устройства и предоставляет их своим клиентам согласно заданным вами правилам. Вы можете указать, какие устройства предоставить клиентам или включить автоматическое предоставление любых подключаемых устройств. Можно ограничить типы подключаемых устройств или указать конкретно, с какими устройствами можно работать. Программа по умолчанию использует порт TCP 33000, но это гибко настраивается.



В виртуальной машине устанавливается клиентский компонент, указывается адрес сервера — и устройства подключаются. ОС уверена в том, что устройства реально подключены к локальной шине USB.




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


Аналогичный функционал доступен для подключения устройств, использующих порты COM:



Также есть интересное решение, позволяющее эмулировать модем. Так, что ОС считает, что пользуется модемом, — а сетевые пакеты маршрутизируются на указанный сетевой интерфейс, и все работает по Ethernet. Быстро, надежно, без телефонной линии и помех, без старых устройств.


Что больше всего заинтересовало, так то, что все это чудо можно купить компании-разработчику для встраивания в свои решения. Интересно, может быть, меня прочитает кто в Редмонде и прикупят такую прелесть. Пускай не как компоненту Hyper-V, но функционал был бы чертовски привлекателен, например, для клиента «Удаленного рабочего стола».

Comments (27)

  1. Alex A says:

    Ну, вам виднее.

    Это понижает безопасность ВМ, превращая изолированную тестовую среду в нечто совмещенное с production network.

    Расскажите, что за сотни гигабайт вы хотите передавать в ВМ?

    Shared Folder в VPC имеет жесткий лимит в 4 ГБ.

  2. Alex A says:

    Спасибо. Я проверял кроме стандартной переферии - ключи 1С, ключи Алладин, банковские ключи Citibank, работающие с COM "таблетки" Аккорд итд.

  3. Alex A says:

    Это увы ваша проблема, т.к. Exchange в виртуальной среде not supported.

    Поддержка будет объявлена в августе. Ни о какой VMware разумеется речи не шло ни в статье, ни про поддержку. Unsupported платформа.

  4. Anonymous says:

    Здравствуйте я так и не понял а виртуальный com можно подключить к физическому и как это с делать?

  5. Alex A says:

    Нет, не предвидится по соображениям безопасности. Это есть в VirtualPC, но нет в Virtual Server, не будет и в финале Hyper-V.

    Это есть в VMware Workstation, но нет и не будет в ESX.

    Крайне безответственно с точки зрения безопасности давать виртуальной машине доступ к основной (когда на основной могут быть сотини ВМ) в обход методов защиты ОС. Все общение между хост и ВМ - по TCP/IP. До установки компонент интеграции можно пользоваться Legacy Network (это я напоминаю, чтобы мне не сказали, что до установки КИ нет сети).

    Data Exchange позволяет ОС хоста передать в реестр ОС ВМ (что будет для Xen-ebabled SUSE Linux я уточню и напишу) некоторые ключи реесра. Штатно заданные четыре параметра, что я описал. SDK от Virtual Server 2005 рассказывает как передать произвольную информацию вниз к ВМ. В Hyper-V это не изменилось.

  6. COM-порт в виртуальной машине можно использовать только для именованных каналов. Для других сценариев нужно использовать решения, описанные Алексом в этой статье.

  7. Alex A says:

    Я все таки не соглашусь.

    Для большинства пользователей не нужно 5 устройств. Нужно 1-2, и софтовое гораздо дешевле.

    Также абсолютная неправда про "не привязана к операционной системе". Попробуйте поработать со своей железкой из Linux, а лучще из Mac OS.

    Драйверы нужны, а это привязка к ОС. Похлеще установки софта.

    Ну и для серверного сценария (Hyper-V таки ориентирован не на домашних пользователей, а на серверные), лишние железки не rack формата недопустимы (имею в виду приличные серверные). А такое устройство rack формата стоит (в Москве) от 30000

  8. Alex A says:

    Бррр. Не понял.

    Куски РЕЕСТРА из хост машины в гостевую машину можно передавать автоматом через ICs. 4 параметра уже настроены за вас, вы можете добавить. Data Exchange не особо поменялся с VS2005.

    Что касается передачи ФАЙЛОВ, то:

    Microsoft рекомендует изолировать хост систему от виртуальных машин. На для передач файлов, ни сетевых интерфейсов.. Машинами вы управляете с клиентской ОС, а не с хоста (по идеологии, хост это Core, там нет инструментария управления). Если вам нужно получить доступ с ВМ до файлов на клиенте. есть два способа: доступ по сети, или монтирование ISO образа как CD (IMG образа как fdd).

  9. Alex A says:

    Мне непонятно ваше слово "Записать ISO"

    Пишущий привод не нужен, это делается на лету.

    Есть куча сторонних програм, которые жмулируют пакетную запись на виртуальный CD, то есть на вашем ПК есть софт, который эмулирует CD, куда вы можете бросать файлы. Файловая система UDF.

    Этот виртуальный CD вы можете подключить (как будто это ваш локальный фиическмй CD) для ВМ - и она будет его видеть.

    Никакой сети к ВМ в этом случае делать не придется.

  10. ALexsey Taranenco says:

    Во-первых, огромное спасибо за прекрасный блог, к тому который выходит постоянно!

    Во-вторых уже ближе к теме, вы сказали "Никаких подводных камней я не заметил, хотя протестировал большое количество капризных устройств." Скажите, а ключи от 1С там были? И работали ли они?

  11. Добрый день. Спасибо за этот познавательный блог. У меня вопрос по поводу Integration Services. Предусмотрен ли в них механизм обмена host и guest систем напрямую (аналог Shared Folders в продуктах VMWare)?

    Там имеется компонент Data Exchange. Это он предоставляет такой функционал? Если да, то реализовано ли его использование в RC0 или ещё нет?

  12. То-есть фактически мне придется на guest-систему устанавливать дополнительный сетевой адаптер, который будет смотреть в подсеть, где находится сервер с Hyper-V?

  13. Я передачу файлов имел ввиду. Просто в виртуалке создана сеть, изолированная от производственной и в нее надо данные передавать (записать ISO образ не получится). Буду тогда в этой изолированной виртуальной сети делать хост с двумя сетевыми интерфейсами раз другого выхода нет.

  14. крайне сомневаюсь, что такие программы смогут обработать файлы размером не несколько сотен гигабайт =) к тому же мне места жалко под временные файлы такого объема. гораздо проще настроить то, что я описал выше.

  15. Бэкапы. Восстановление баз эксченджа в виртуальной среде.

    Не знаю как в VPC, а в VMWare server я через shared folder подключал диск, подключенный в свою очередь через net use. Ни на какие ограничения при этом я не натыкался.

    Hyper-V заинтересовал прежде всего в связке с Server Core. В таком виде у меня и работает.

  16. Алек says:

    "Но аппаратные решения не гибки, дороги и сложны в обслуживании." - Это вы откуда взяли???

    Вот пример мне требовалась подключить 3 ключа к виртуалке.

    Приведеный вами же девайс AnywhereUSB от digi стоит (в Хабаровске) 14 т.р. и на нем 5 usb портов.

    А софтовое решение Fabulatech на 4 usb устройства стоит (http://www.fabulatech.com/usb-over-network-purchase.html) 369$ (примерно 1200р.).

    Другое софтварное решение так же работающее с Hyper-V стоит  (http://www.virtualserialport.com/purchase/usb-over-network/) чуть дешевле 319$ за устройство (примерно 11200 р.).

    В итоге экономия при софтварном решении 2-3 т.р., никаких сложностей с железкой у меня не было. Обслуживание? Да какое там обслуживание - поставил и забыл. И главный плюс железка не привязана к операционной системе. Такие дела.

  17. Alexdi says:

    У меня не сработала эта программа. Я так и не смог настроить синхронизацию кпк с Vista, которая в виртуалке.

  18. Igor Kogan says:

    Есть весьма недорогие железные решения:

    ST-Lab N-330 4 port USB Server - 1560 руб.

    ST-Lab / ST-Lab N-320 1 port USB Server - 1212 руб.

  19. romanvip says:

    Вот ещё контролер хардовый

    LevelOne FPS-3003

  20. Алексей says:

    на версии 4.1, хасп ключь видит, а вот 1с8.2 отказыывается, говорит не обнаружен ключь защиты. Кто какую версию юзал?

  21. Vladimir says:

    Вопрос немного не по теме...

    На всех демо роликах и скриншотах от MS на рабочем столе отображается некая информация о хосте, что это за тула такая?

  22. Vladimir says:

    Вроде таки нарыл

    Это случаем у вас не BGInfo ?

  23. oscar says:

    Столкнулся вот с такой проблемой--одновременно можно подключиться к рассшаренному usb-устройству только одному пользователю(через USB over Network)..есть ли  варианты это исправить

  24. Алексей says:

    Ткните пожалуйста носом меня в статью... нигде не могу найти... как настроить "Если для портов COM еще есть обходной путь через именованные каналы (Named Pipes) и Hyper-V" у нас встала "сложная" задачка, терминальный сервер находится на хосте Hyper-v 2012R2
    , сам сервер 2003Р2СП2, на него подключается клиент с ККМ, и ещё чем то... должны подключаться 2 ком порта которые у клиента... Вопрос: как организовать это для 1-го клиента и последующих... я так понял что это нужно делать через Named Pipes...

  25. Алексей says:

    Ткните пожалуйста носом меня в статью... нигде не могу найти... как настроить "Если для портов COM еще есть обходной путь через именованные каналы (Named Pipes) и Hyper-V" у нас встала "сложная" задачка, терминальный сервер находится на хосте Hyper-v 2012R2
    , сам сервер 2003Р2СП2, на него подключается клиент с ККМ, и ещё чем то... должны подключаться 2 ком порта которые у клиента... Вопрос: как организовать это для 1-го клиента и последующих...

  26. Максим says:

    Добрый день всем. Установил на Hyper-V (Windows server 2012R2) клиента, на свою машину (Win 8.1) сервер. итого: eToken "видит", только мне надо, чтоб он с него сертификаты поставил... а вот КриптоПРО (CSP 4.0) его не видит.. В чем проблема? Как раз для 1С и отчетности.

Skip to main content