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, но функционал был бы чертовски привлекателен, например, для клиента «Удаленного рабочего стола».