Usb over ip настройка

Обновлено: 07.07.2024

Всем привет! В этой статье я хочу рассказать о технологии USB поверх IP (USB over IP). Что это такое, зачем нужно, какие сценарии и варианты у этой технологии востребованы на сегодняшний день.

Итак, господа, если вы плотно используете виртуализацию, не важно где – на работе или дома (если вы энтузиаст) и различные системы управления этой самой виртуализацией – Hyper-V, Xen, VMware, то сталкивались с ситуацией, когда необходимо пробросить USB-порт на виртуальную машину. Но в виду ограничений гипервизоров виртуальных машин сделать это проблематично, так как USB-порты на виртуальных машинах отсутствуют. А что делать, если нужно подключить USB-ключ защиты программного обеспечения, токен с криптозащитой и тому подобные нужные вещи? Если с физическим сервером проблем не было, то с виртуальным встает простой вопрос: как это сделать?!

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

Обзор аппаратных устройств USBoverIP

И у тех и у других есть как преимущества, так и недостатки. Давайте рассмотрим преимущества аппаратных устройств USB over IP перед программными:

  • Высокая надежность и отказоустойчивость;
  • Низкое энергопотребление;
  • Высокая скорость развертывания и простота настройки;

Минусы аппаратных устройств USB over IP:

  • Более высокая стоимость по сравнению с программными средствами эмуляции.

Более подробно про программные эмуляторы USB портов я расскажу в одной из следующих статей.

Однажды передо мной встала задача проброса USB HASP ключей на виртуальный кластер 1С Предприятие. После обзора и просмотра большого количества решений, как программных, так и аппаратных выбор пал на устройства компании Digi International, а именно AnywhereUSB. Сейчас я расскажу про линейку продукции и конкретно какую модель выбрал я для своих систем виртуализации и почему.

AnywhereUSB это достаточно компактное устройство, представляющее из себя USB-концентратор с Ethernet-портом объединенный в один корпус. О моделях использования может наглядно поведать нижеприведенная иллюстрация:

Рисунок 1. Различные модели использования семейства устройств AnywhereUSB

Рисунок 1. Различные модели использования семейства устройств AnywhereUSB

Обзор модельного ряда Digi AnywhereUSB

Для приобретения на момент написания статьи доступны 5 моделей устройств, рассчитанных на разное количество USB портов, и модель с комбинированными COM и USB-портами.

AnywhereUSB /14: большой стоечный вариант USB IP от Digi, рассчитанный на 14 портов USB, с возможность монтажа в 19 дюймовый шкаф.

AnywhereUSB /14: большой стоечный вариант USB IP от Digi, рассчитанный на 14 портов USB, с возможность монтажа в 19 дюймовый шкаф.

Спецификация устройств, отличия

Таблица сравнения и спецификаций устройств.

Таблица сравнения и спецификаций устройств.

Устройство моделей USB IP устройств от Digi.

Устройство моделей USB IP устройств от Digi.

Первоначальная настройка и управление устройствами

Для настройки и управления устройствами предусмотрено несколько интерфейсов:
• Web-интерфейс для настройки, мониторинга и администрирования;
• AnywhereUSB config utility;
• Telnet;
• SNMP.

Самым оптимальным и удобным в использовании является Web-интерфейс.

AnywhereUSB/5 MHC Configuration and Management - меню Network Configuration

AnywhereUSB/5. Web-интерфейс, меню Network Configuration.

Подключаем нашу USB IP железку в сеть с работающим DHCP-сервером и в браузере переходим по присвоенному устройству IP-адресу. Чтобы узнать адрес можно воспользоваться AnywhereUSB config utility, которую можно скачать с официального сайта производителя устройства.

Окно утилиты конфигурирования AnywhereUSB Remote Hub Configuration Utility.

Окно утилиты конфигурирования AnywhereUSB Remote Hub Configuration Utility.

Вообще, первоначальная настройка устройства не сложнее любого бытового роутера. Попадаем на страницу ввода логина и пароля – по умолчанию логин – root, пароль – root.Существует несколько вариантов присвоения IP адреса AnywhereUSB могут работать в нескольких режимах:

Динамическое присвоение IP-адреса (DHCP);
• Статический IP;
• Auto Private IP Addressing (Auto-IP).

Пробрасываем USB порты на клиентский компьютер

Тут все просто и легко. Для проброса порта на клиентский ПК нужно установить драйвера AnywhereUSB на ту машину, где мы хотим получить наше USB устройство, и указать адрес нашей волшебной коробочки от Digi. Соотвественно, не забываем подключить наши USB устройства в наш USB-IP концентратор. Это всё.

В случае необходимости получения детальной информации, о подключённом устройстве, свободных/занятых портах – можно воспользоваться утилитой AnywhereUSB View, которая устанавливается вместе с драйверами.

Настройка групп и интерфейсов, в меню RealPort USB Configuration. Настройка групп и интерфейсов, в меню RealPort USB Configuration. Выбор группы по отношению к порту USB.

Заключение

В завершении обзора, хочу сказать, что в отличие от подобных программных средств железка настраивается один раз, не глючит, не греется и стабильно работает. Так же, неоспоримым плюсом является возможность работы в отказоустойчивом кластере, т.е. хостовая машина не теряет подключения USB при переключении. Это важно.

Более подробную информацию о продукции Digi International, а так же драйвера, прошивки и утилиты можно скачать на официальном сайте.

На этом пожалуй всё, если будут какие-то вопросы – спрашивайте в комментариях.

Технологии виртуализации прочно вошли в современный IT мир. Сегодня невозможно найти компанию, которая бы не использовала решения для виртуализации (виртуальные сервера, виртуальные рабочие места, VDI) в своей работе. И все было бы отлично и безоблачно, но гипервизоры, основа инфраструктуры внесли и определенные ограничения на созданные и используемые виртуальные машины.
Одно из ограничений — это отсутствие USB портов на виртуальных машинах. Если раньше мы могли подключить необходимое USB устройство (например, ключ защиты ПО или смарт-карту с ключами шифрования) к физическому серверу, то теперь — поскольку сервера стали виртуальными – эта задача так просто не решается. Как решить эту проблему быстро и эффективно – я расскажу в этом обзоре.

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

Следущий выбор — програмно-аппартные устройства для решения задачи проброса (эмуляции) USB портов на удаленной машине. Простые, эффективные и недорогие устройства. Выбор остановился на решениях компании Digi International — AnywhereUSB

AnywhereUSB представляет собой компактное устройство USB hub – с дополнительным подключением Ethernet кабеля.

Модели AnywhereUSB

Для использования доступны 3 модели устройств, рассчитанных на разное количество USB портов:
1. AnywhereUSB /2 – 2 порта USB

image

2. AnywhereUSB/ 5 – 5 портов USB

image

3. AnywhereUSB /14 – 14 портов USB

image

Настройка и управление

Для настройки и управления устройством предусмотрено несколько интерфейсов:
• Web интерфейс для настройки, мониторинга и администрирования;
• AnywhereUSB утилита конфигурирования;
• Telnet Command-Line Interface;
• Simple Network Management Protocol (SNMP).

Для настройки устройства рассмотрим Web интерфейс — как наиболее удобный и простой вариант.

Управление IP адресом

Существует несколько вариантов присвоения IP адреса AnywhereUSB:
• Статический IP;
• Динамическое присвоение IP — Using Dynamic Host Configuration Protocol (DHCP);
• Auto Private IP Addressing (APIPA), наиболее известен как Auto-IP;

image

Сетевые сервисы легко конфигурируются через web интерфейс

image

Для желающих тонко настроить все параметры сетевого интерфейса доступны соответствующие инструменты

image

Web интерфейс имеет множество дополнтельных инструментов, позволяющих посмотреть активных подключения, статус и uptime устройства, настроить функции безопасности и.т.д

Текущие подключения:

image

Состояние устройства:

image

С настройкой устройства все просто и понятно, теперь перейдем к машине, на которую осуществляется проброс USB портов.

Настройка клиенткой машины

Настройка проста и интуитивно понятна.

Все, что необходимо для настройки:
1. Установить драйвера для AnywhereUSB;
2. Указать IP адрес устройства.

Устройство подключено, в окне доступна информация о состоянии устройства.

image

В случае необходимости получения детальной информации, о подключеном устройстве, свободных/занятых портах – можно воспользоваться утилитой детального просмотра.

image

Стоит отметить, что решение очень просто в развертывании и надежно в эксплутации. Весь процесс развертывания и настройки занимает не более 30 минут.

Примерная схема подключения устройства AnywhereUSB

image

Детальную информацию об устройствах AnywhereUSB, скачать драйвера и документацию можно найти сайте компании Digi International — AnywhereUSB

В инструкции описан процесс настройки бесплатного решения для редиректа USB устройства с сервера на любой другой компьютер сети. Это может пригодиться, например, для проброса USB токена на виртуальную машину или несетевого принтера. В рамках примера сервер будет на Linux Ubuntu, клиент — на Windows (проверено на 7, 10, Server 2008 и 2012).

Установка и запуск

В Ubuntu установка инструмента проброса USB выполняется следующей командой:

apt-get install linux-tools-`uname -r`

Подгружаем модули драйверов USB:

Запускаем usbip в качестве демона:

Смотрим список подключенных USB устройств:

- busid 2-1.4 (1c4f:0026)
SiGma Micro : Keyboard (1c4f:0026)

Теперь можно расшарить флешку:

usbip bind -b 2-1.3

Должны увидеть на подобие:

usbip: info: bind device on busid 2-1.3: complete

Настройка клиента

Выполним настройку на базе операционной системы Windows.

Скачиваем драйвер и утилиту для Windows. Распаковываем архив usbip.zip.

Открываем диспетчер устройств (команда devmgmt.msc или правой кнопкой по Этот компьютер в проводнике - Управление - Диспетчер устройств).

Кликаем по Действие - Установить старое устройство:

Установка старого устройства в диспетчере устройств Windows

Выбираем ручную установку устройства - показать все устройства - Установка с диска и выбираем файл USBIPEnum.inf (находится в каталоге usbip, который мы распаковали ранее).

Будет обнаружено устройство USB/IP Enumerator - кликаем Далее, чтобы его установить. Мы должны его увидеть среди системных устройств.

Теперь открываем командную строку (cmd.exe) и переходим в распакованный каталог, например:

* где C:\Users\user\Downloads\usbip — полный путь до папки.

Смотрим список расшаренных USB устройств на сервере:

usbip -l 192.168.0.15

* где 192.168.0.15 — IP-адрес сервера USB.

Мы получим ответ, на подобие этого:

C:\Users\user\Downloads\usbip>usbip -l 192.168.0.15
- 192.168.0.15
2-1.3: unknown vendor : unknown product (8564:1000)
: /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3
: (Defined at Interface level) (00/00/00)

Теперь можно примонтировать устройство:

usbip.exe -a 192.168.0.15 2-1.3

* если увидим ошибку . cannot find device, переходим к решению.

Автозапуск

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

Автозапуск сервера

Добавляем модули в автозапуск:

usbip-core
usbip-host
vhci-hcd

Создаем юнит в systemd:

[Service]
ExecStart=/scripts/usbipd
Type=oneshot
RemainAfterExit=yes

Перечитываем конфигурацию systemd и разрешаем запуск созданного нами юнита:

systemctl enable usbipd

Создаем каталог хранения скрипта и сам скрипт:

usbipd -D
usbip bind -b $bindID

usbip attach --remote=localhost --busid=$bindID
sleep 2
usbip detach --port=00

Разрешаем запуск скрипта:

chmod +x /scripts/usbipd

systemctl start usbipd

systemctl status usbipd

Для окончательного тестирования можно перезагрузить сервер.

Автозапуск клиента Windows

Пишем небольшой батник:

cd C:\Users\user\Downloads\usbip
usbip.exe -a 192.168.0.15 2-1.3

* C:\Users\user\Downloads\usbip — путь, где хранится распакованная утилита; 192.168.0.15 — адрес сервера USB; 2-1.3 — идентификатор USB устройства на сервере.

Сохраняем скрипт с расширением bat или cmd. Запускаем планировщик заданий и добавляем новую задачу.

На вкладке Общие отмечаем Выполнять вне зависимости от регистрации пользователя и ставим галочку Выполнить с наивысшими правами:

Планировщик - вкладка общие

В триггерах выбираем При запуске системы:

Планировщик - вкладка триггеры

На вкладке Действия выбираем Запуск программы и прописываем путь до скрипта, который мы сохранили ранее:

Планировщик - вкладка действия

На вкладке Параметры ставим галочку При сбое выполнения перезапускать через и снимаем галочку Останавливать задачу, выполняемую дольше:

Планировщик - вкладка параметры

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

Возможные проблемы

1. usbip_common_mod.ko and usbip.ko must be loaded

Ошибка появляется при попытке выполнить usbipd -D.

Причина: был установлен пакет usbip вместо linux-tools-<версия ядра>.

Решение: удаляем usbip:

apt-get remove usbip

Ставим нужный пакет:

apt-get install linux-tools-`uname -r`

2. /usr/sbin/usbipd: No such file or directory

Данная ошибка также появляется при попытке выполнить usbipd -D.

Причина: Нужный бинарник для запуска находится по другому пути — /usr/bin/usbipd.

Решение: создаем симлинк:

ln -s /usr/bin/usbipd /usr/sbin/usbipd

3. usbip: error: failed to open /usr/share/hwdata//usb.ids

Выскакивает при попытке посмотреть список устройств командой usbip list -l.

Причина: необходимый файл usb.ids находится в другой директории.

Решение: создаем каталог /usr/share/hwdata:

Создаем симлинк на существующий файл:

ln -s /usr/share/misc/usb.ids /usr/share/hwdata/usb.ids

4. usbip err . recv op_common

При попытке запустить утилиту в командной строке Windows получаем ошибки:

usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip.c: 216 (query_exported_devices) recv op_common
usbip err: usbip.c: 288 (show_exported_devices) query

Причина: ошибка в бинарном файле для Windows.

Решение: открыть exe-файл в HEX редакторе, например, HxD. И в адресах смещения 00000CBC и 00000E0A заменить 06 на 11:

Редактирование exe — было

Редактирование exe — стало

5. (attach_device) cannot find device

При попытке монтирования устройства в Windows, выскакивает ошибка с похожим текстом:

usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Причина: недоработка серверного ПО — при расшаривании USB не считывается количество дескрипторов.

Решение: примонтировать устройство на сервере с последующим отмонтированием:

usbip attach --remote=localhost --busid=2-1.3

* в моем случае устройство имеет идентификатор 2-1.3.

* смотрим номер порта, на котором висит наше примонтированное устройство.

usbip detach --port=00

6. udev_device_new_from_subsystem_sysname failed

При попытке монтирования устройства на клиенте получаем ошибку с текстом:

libusbip: error: udev_device_new_from_subsystem_sysname failed
usbip: error: open vhci_driver
usbip: error: query

Причина: не подключен модуль vhci-hcd.

Решение: разово выполняем команду:

и добавляем в файл /etc/modules строку vhci-hcd.

USB over IP

Проблемы с пробросом USB устройств

Я думаю, сейчас уже выражением виртуальная машина, никого не удивишь, наверное подавляющее системных администраторов свои физические сервера отдали под гипервизоры Hyper-V или Vmware и это понятно, так как это более рациональная утилизация ресурсов. Все замечательно, можно создавать кластерные системы не привязанные к конкретному серверу, что дает очень хорошую отказоустойчивость, но есть небольшое но и это проблема с USB устройствами. Которые по умолчанию вы можете воткнуть, только в локальный сервер, а значит привязываете виртуальную машину, для которой необходим этот USB ключ, к данному серверу, и в случае его поломки, будет муторно перетыкать токен в другие сервера, на которых и USB портов то может и не быть.

Плюс есть проблемы, что Hyper-V и Vmware могут пробрасывать в себя не все устройства, а только поддерживаемые, которых не так уж и много, я вам показывал ситуацию, когда мне нужно было предоставить виртуальной машине USB-модем. Вот для таких ситуаций, чтобы все было надежно, и USB Токен всегда переезжал на любой хост за виртуальной машиной, была разработана технология USB over IP. По сути вы передаете ваш токен по локальной сети в вашей организации. Это очень применяется на терминальных фермах Windows Server, где очень часто установлен 1С. Подробнее о принципах работы USB over IP, читайте по ссылке слева.

Общий принцип проброса USB over IP в Vmware и Hyper-V

Вы покупаете специальное устройство, например Digi AnywhereUSB/14.

Производите его настройку, в которую входит:

После чего вы втыкаете в нее все свои токены, например, E-token или Рутокен, выглядит это вот так.

USB over IP

После чего осталось, только произвести манипуляции на стороне клиента.

Настройка клиента для USB over IP

Вся настройка заключается в установке специального программного обеспечения anywhereusb remote hub configuration utility. Она включает в себя драйвера и утилиту для мониторинга подключения USB Токенов.

Так как в моем примере у меня устройство AnywhereUSB-14, то драйвера я буду скачивать по данной ссылке:

Обратите внимание, что поддерживается только семейство операционных систем Windows от семерки до Windows 10 и все серверные релизы.

Установка драйверов для USB over IP-01

Я в примере выберу Windows 10 и постараюсь пробросить на нее Etoken по технологии USB over IP. Скачиваем драйвер для вашей разрядности системы. Как определить разрядность ОС Windows читайте по ссылке.

Установка драйверов для USB over IP-02

Запускаем установочный файл с драйверами. У вас появится мастер установки AnywhereUSB. На первом окне нажимаем next

usb over ip digi-01

Соглашаемся с лицензионным соглашением и нажимаем next

usb over ip digi-02

нажимаем install для установки anywhereusb remote hub configuration utility.

usb over ip digi-03

Оставляем галку "Lanch AnywhereUSB Configuration Utility" и нажимаем Finish. Установка драйверов для USB over IP закончена.

Установка anywhereusb remote hub configuration utility

Настройка Anywhereusb Remote Hub Configuration Utility

В результате установки драйверов для вашего устройства USB over IP , на виртуальной машине Vmware или Hyper-V вы обнаружите две утилиты:

  1. AnywhereUSB Configuration Utility - утилита управленияподключением
  2. USB Device Viewer - утилита проверки подключения etoken по технологии USB over IP

Утилита AnywhereUSB

Открываем AnywhereUSB Configuration Utility, чтобы обнаружить и подключить наш Etoken. Первым делом вы переходите в меню Edit-Discovery List. В поле Ip адрес указываете ip вашей железки DIGi и нажимаете кнопку Add. Теперь она будет присутствовать в списке обнаружения. Обратите внимание она сразу укажет какие группы доступны для подключения по технологии USB over IP, они будут помечены статусом Avaliable.

Обнаружение USB over IP

Далее в меню Edit-Connection list, теперь добавим тот же Ip для соединения сервера и клиента, тут же можно сразу задать группу к которой будет идти подключение (Group Number) и нажимаем Add.

Думаю вам понятна разница между Discovery List и Connection list. Первый просто показывает, что доступно на устройстве, а второй уже автоматически подключается к нему.

Подключение USB over IP

В результате вы увидите статус: Connection Successful to Remote Hub, а если не повезет, то Can not find Remote Hub. Если необходимо будет отключить USB Токен, то нажмите Disconnect.

Подключенный etoken по сети

Если необходимо будет переключить группу, то делается это на отключенном устройстве в Connection list, через правый клик по нему. Там будет пункт Configure. Обратите внимание, что тут есть пункты для шифрования трафика между клиентом и сервером USB over IP.

Переключение группы USB over IP

То, что у вас появился статус Connection Successful to Remote Hub, еще не говорит, что устройство работает и проброс на виртуальную машину Vmware или Hyper-V осуществлен. Чтобы удостовериться, что все хорошо, вам необходимо воспользоваться утилитой USB Device Viewer. В идеале у вас должен быть куст RealPortUSB с ip адресом вашего устройства и на порту должен отображаться ваш токен со статусом DeviceConnected. Вот теперь можно говорить, что подключение по USB over IP, работает.

USB Device Viewer

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

Читайте также: