Usb over ip настройка
Всем привет! В этой статье я хочу рассказать о технологии 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
Обзор модельного ряда Digi AnywhereUSB
Для приобретения на момент написания статьи доступны 5 моделей устройств, рассчитанных на разное количество USB портов, и модель с комбинированными COM и USB-портами.
AnywhereUSB /14: большой стоечный вариант USB IP от Digi, рассчитанный на 14 портов USB, с возможность монтажа в 19 дюймовый шкаф.
Спецификация устройств, отличия
Устройство моделей USB IP устройств от Digi.
Первоначальная настройка и управление устройствами
Для настройки и управления устройствами предусмотрено несколько интерфейсов:
• Web-интерфейс для настройки, мониторинга и администрирования;
• AnywhereUSB config utility;
• Telnet;
• SNMP.
Самым оптимальным и удобным в использовании является Web-интерфейс.
AnywhereUSB/5. Web-интерфейс, меню Network Configuration.
Подключаем нашу USB IP железку в сеть с работающим DHCP-сервером и в браузере переходим по присвоенному устройству IP-адресу. Чтобы узнать адрес можно воспользоваться AnywhereUSB config 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
2. AnywhereUSB/ 5 – 5 портов USB
3. AnywhereUSB /14 – 14 портов USB
Настройка и управление
Для настройки и управления устройством предусмотрено несколько интерфейсов:
• 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;
Сетевые сервисы легко конфигурируются через web интерфейс
Для желающих тонко настроить все параметры сетевого интерфейса доступны соответствующие инструменты
Web интерфейс имеет множество дополнтельных инструментов, позволяющих посмотреть активных подключения, статус и uptime устройства, настроить функции безопасности и.т.д
Текущие подключения:
Состояние устройства:
С настройкой устройства все просто и понятно, теперь перейдем к машине, на которую осуществляется проброс USB портов.
Настройка клиенткой машины
Настройка проста и интуитивно понятна.
Все, что необходимо для настройки:
1. Установить драйвера для AnywhereUSB;
2. Указать IP адрес устройства.
Устройство подключено, в окне доступна информация о состоянии устройства.
В случае необходимости получения детальной информации, о подключеном устройстве, свободных/занятых портах – можно воспользоваться утилитой детального просмотра.
Стоит отметить, что решение очень просто в развертывании и надежно в эксплутации. Весь процесс развертывания и настройки занимает не более 30 минут.
Примерная схема подключения устройства AnywhereUSB
Детальную информацию об устройствах 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 или правой кнопкой по Этот компьютер в проводнике - Управление - Диспетчер устройств).
Кликаем по Действие - Установить старое устройство:
Выбираем ручную установку устройства - показать все устройства - Установка с диска и выбираем файл 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:
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 устройств
Я думаю, сейчас уже выражением виртуальная машина, никого не удивишь, наверное подавляющее системных администраторов свои физические сервера отдали под гипервизоры 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
Вся настройка заключается в установке специального программного обеспечения anywhereusb remote hub configuration utility. Она включает в себя драйвера и утилиту для мониторинга подключения USB Токенов.
Так как в моем примере у меня устройство AnywhereUSB-14, то драйвера я буду скачивать по данной ссылке:
Обратите внимание, что поддерживается только семейство операционных систем Windows от семерки до Windows 10 и все серверные релизы.
Я в примере выберу Windows 10 и постараюсь пробросить на нее Etoken по технологии USB over IP. Скачиваем драйвер для вашей разрядности системы. Как определить разрядность ОС Windows читайте по ссылке.
Запускаем установочный файл с драйверами. У вас появится мастер установки AnywhereUSB. На первом окне нажимаем next
Соглашаемся с лицензионным соглашением и нажимаем next
нажимаем install для установки anywhereusb remote hub configuration utility.
Оставляем галку "Lanch AnywhereUSB Configuration Utility" и нажимаем Finish. Установка драйверов для USB over IP закончена.
Настройка Anywhereusb Remote Hub Configuration Utility
В результате установки драйверов для вашего устройства USB over IP , на виртуальной машине Vmware или Hyper-V вы обнаружите две утилиты:
- AnywhereUSB Configuration Utility - утилита управленияподключением
- USB Device Viewer - утилита проверки подключения etoken по технологии USB over IP
Открываем AnywhereUSB Configuration Utility, чтобы обнаружить и подключить наш Etoken. Первым делом вы переходите в меню Edit-Discovery List. В поле Ip адрес указываете ip вашей железки DIGi и нажимаете кнопку Add. Теперь она будет присутствовать в списке обнаружения. Обратите внимание она сразу укажет какие группы доступны для подключения по технологии USB over IP, они будут помечены статусом Avaliable.
Далее в меню Edit-Connection list, теперь добавим тот же Ip для соединения сервера и клиента, тут же можно сразу задать группу к которой будет идти подключение (Group Number) и нажимаем Add.
Думаю вам понятна разница между Discovery List и Connection list. Первый просто показывает, что доступно на устройстве, а второй уже автоматически подключается к нему.
В результате вы увидите статус: Connection Successful to Remote Hub, а если не повезет, то Can not find Remote Hub. Если необходимо будет отключить USB Токен, то нажмите Disconnect.
Если необходимо будет переключить группу, то делается это на отключенном устройстве в Connection list, через правый клик по нему. Там будет пункт Configure. Обратите внимание, что тут есть пункты для шифрования трафика между клиентом и сервером USB over IP.
То, что у вас появился статус Connection Successful to Remote Hub, еще не говорит, что устройство работает и проброс на виртуальную машину Vmware или Hyper-V осуществлен. Чтобы удостовериться, что все хорошо, вам необходимо воспользоваться утилитой USB Device Viewer. В идеале у вас должен быть куст RealPortUSB с ip адресом вашего устройства и на порту должен отображаться ваш токен со статусом DeviceConnected. Вот теперь можно говорить, что подключение по USB over IP, работает.
Надеюсь, что вам стала более понятной технология USB over IP от Digi, будут вопросы пишите в комментариях.
Читайте также: