Проброс USB-портов из Windows 10 для удалённой работы

Здравствуйте, товарищи-сисадмины и компьютерщики! Сегодня я сделаю небольшой обзор на одну программку, которая позволяет прокинуть USB устройства через сеть Ethernet.

Где это может быть полезным? Сложно навскидку сказать, но вот некоторые области применения:

  • Для обмена файлами в пределах локальной сети, если есть сложности в передачи USB-накопителя или прямом расшаривании USB-накопителя.
  • Для получения доступа к периферии (веб-камеры, мыши, клавиатуры, принтеры, сканеры).
  • Честно говоря, я не тестировал, как будет происходить доступ к устройствам ввода-вывода – просто нет такой возможности. Но вот на примере USB-накопителя покажу в статье. Работает вполне неплохо.

    USB Network Gate

    Находим на просторах Интернета программу USB Network Gate и ставим её на компьютер, который выступает в роли сервера. После запуска увидим нечто подобное (на вкладке “Локальные USB-устройства“):

    Перечислен список всех наших USB-устройств. Самым нижним обозначено устройство хранения данных “
    Mass Storage Device“, нажмём кнопку “Открыть доступ” напротив этого пункта.
    Теперь установим программу на клиентской машине, то есть на той, с которой нужно получать доступ к ресурсам сервера. Увидим следующую картину (на вкладке “Удалённые USB-устройства“):

    Нажмём кнопку “Добавить сервер” и увидим окно ввода IP-адреса сервера:

    Ввожу IP-адрес того узла в сети, на котором установил серверную часть в самом начале и вижу следующую картину:

    Нажатие на кнопку “Подключить” приведёт к монтированию удалённого USB-устройства к локальному компьютеру:

    При этом в системе появится та самая флешка, которая физически подключена совершенно в другом месте! Вот это номер. На сервере отобразится следующая картина:

    То есть поясняется, к какому хосту подключено то или иное USB-устройство. Ну разумеется, имеется возможность отключить это устройство и прекратить доступ.

    Грустная часть проверки: клиентская часть

    В Windows устанавливаем драйвер (делаем это только один раз, дальше он будет всегда установлен). Для этого запускаем от имени администратора файл usbip.exe

    с аргументом
    install
    :

    usbip.exe install

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

    usbip.exe list —remote=192.168.10.123

    Убеждаемся, что оно присутствует в списке. Ну, и подключаем его:

    usbip.exe attach —remote=192.168.10.123 —busid=1-5.4.1.3

    В менеджере устройств появляется новое USB-устройство, Keil его прекрасно видит…

    Но на этом всё приятное кончается. Небольшая программа заливается во флэшку около минуты. Попытки шагать по строкам идут от 5 до 20 секунд на каждую строку. Это неприемлемо. Во время паузы в обе стороны идёт трафик примерно 50 килобит в секунду. Долго и вдумчиво идёт.

    Честно говоря, ограничение по времени привело к тому, что я только предполагаю, почему всё было так плохо. Подозреваю, что там по сети бегает JTAG-трафик. А он бегает небольшими пакетами в обе стороны, отсюда и проблемы. Так было завершено исследование с результатом: «Для проекта не подходит».

    Настройки программы для проброса USB по сети

    Кроме того, на стороне сервера есть возможность задать некоторые настройки доступа для каждого из устройств:

    Например, я вот указал описание устройства (чтобы было понятно), а также установил пароль для доступа к ресурсу. Ну и ряд дополнительных возможностей, которые вы можете видеть на скриншоте выше.

    Доступ по паролю работает! При попытке подключения к устройству, появилось приглашение ввести пароль:

    Ну что можно сказать по этому поводу… Утилита явно неплохая, несмотря на то, что коммерческая. Довольно таки неплохо справляется со своей задачей – пробросом USB устройств по сети.

    Настройка виртуальной машины

    Для того что бы было куда подключать экспортированные устройства, на виртуальной машине нужно создать необходимые usb-контроллеры:

    • uhci — для USB1.0
    • ehci — для USB2.0
    • xhci — для USB3.0

    Для qemu (без libvirt)

    Добавьте опции в команду запуска виртуальной машины: -device ich9-usb-ehci1,id=ehci,addr=1d.7,multifunction=on -device ich9-usb-uhci1,id=uhci-1,addr=1d.0,multifunction=on,masterbus=ehci.0,firstport=0 -device ich9-usb-uhci2,id=uhci-2,addr=1d.1,multifunction=on,masterbus=ehci.0,firstport=2 -device ich9-usb-uhci3,id=uhci-3,addr=1d.2,multifunction=on,masterbus=ehci.0,firstport=4

    Для libvirt

    В исходном файле конфигурации виртуальной машины в узле &ltdevices>
    удаляем все USB контроллеры и добавляем следущий блок:

    Кстати, если вы используете spice, то добавив к контроллерам еще 3 специальных девайса, станет возможен проброс usb-устройств с клиента spice на сервер.

    Пример под спойлером

    Для qemu

    Добавляем следующие опции в команду запуска виртуальной машины, помимо контроллеров определеных нами раньше: -chardev spicevmc,name=usbredir,id=usbredirchardev1 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=3 -chardev spicevmc,name=usbredir,id=usbredirchardev2 -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,debug=3 -chardev spicevmc,name=usbredir,id=usbredirchardev3 -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3

    Для libvirt

    В исходном файле конфигурации виртуальной машины в узле &ltdevices> добавляем следующие опции, помимо контроллеров определеных нами раньше:
    Теперь все готово для осуществления проброса.

    Выводы

    Итак, пару слов о данной программе. Мне понравилась задумка – люблю различные решения, которые могут иногда выручить в сложной ситуации. Никогда не знаешь, где может пригодиться это, а знать, что такая возможность имеется – очень даже полезно!

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

    Друзья! Вступайте в нашу группу Вконтакте, чтобы не пропустить новые статьи! Хотите сказать спасибо? Ставьте Like, делайте репост! Это лучшая награда для меня от вас! Так я узнаю о том, что статьи подобного рода вам интересны и пишу чаще и с большим энтузиазмом!

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

    Запуск сервера

    Пакет usbredirserver можно найти в стандартных репозиториях практически во всех популярных дистрибутивах linux.
    Вставляем флешку в компьютер, смотрим вывод usb-устройств:

    $ lsusb … Bus 003 Device 011: ID 125f:c82a A-DATA Technology Co., Ltd. …

    Видим что пара vendorid:prodid равна 125f:c82a, а ядро определило флешке 003-001 usbbus-usbaddr соотвественно.

    Теперь давайте расшарим ее на 4000 порт:

    # Используя пару vendorid:prodid $ usbredirserver -p 4000 125f:c82a # Используя пару usbbus-usbaddr $ usbredirserver -p 4000 003-011

    Подключение устройства к виртуальной машине

    Через опции при запуске ВМ

    Устройство которое нужно подключить к ВМ можно указать при запуске, добавив следующие опции в команду запуска

    Для qemu

    -chardev socket,id=usbredirchardev1,port=4000,host=192.168.1.123 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,bus=ehci.0,debug=4

    Для libvirt

    Этот блок рамещается перед тегом </devices>
    , рядом с контроллерами определенными нами раньше:
    Его так же можно исполнить командой virsh attach-device

    Или через qemu-monitor

    Заходим на гипервизор и в qemu-monitor нашей машины выполняем следующие команды: # Добавляем наше устройство chardev-add socket,id=usbredirchardev1,port=4000,host=192.168.1.123 # Подключем его в ehci контроллер (USB-2.0) device_add usb-redir,chardev=usbredirchardev1,id=usbredirdev1,bus=ehci.0,debug=4 Что бы отключить флешку достаточно такой команды: device_del usbredirdev1
    На этом все, после данных шагов ваша ВМ увидит вашу флешку и сможет с ней нативно работать.

    Режим разрыва клавиатуры

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

    Во всех типовых конфигурациях по кнопке F 7 открывается окно ввода штрих-кода. Поэтому достаточно сканеру запрограммировать префикс F 7 и все, он будет поддерживаться 1С.

    Если конфигурация дорабатывалась и в некоторых участках забыли прописать типовую поддержку F 7, проще дописать эту поддержку. Но в качестве альтернативы можно использовать драйвер Атол старых версий, где выбрать в качестве порта «Разрыв клавиатуры».

    Новые версии драйверов Атол платные, а бесплатные делают 10-секундную задержку перед обработкой штрих-кода.

    Способ прост для подключения, но неудобен в работе.

    • Нужно следить, чтобы была включена правильная раскладка клавиатуры.
    • При использовании префикса курсор должен стоять внутри таблицы, иначе F 7 не срабатывает.
    • Буквы при наборе в RDP часто теряются, и сканер считывает усеченные штрих-коды.

    Поэтому лучше все же, если используется разрыв клавиатуры, не использовать драйвер Атол (это лишние потери времени и символов), а просто запрограммировать префикс F 7.

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

    Удаленный доступ к USB-порту через Ethernet

    День добрый. Как-то столкнулся с задачей удаленно подключить по RDP электронный ключ ruToken к 1С. Бухгалтерия находится в одном офисе, а сервер с 1С — в другом. Решить задачу помогла программа USB Network Gate, которая позволяет легко подключить одно или несколько удаленных USB-устройств к вашему компьютеру по сети Ethernet (Интернет/LAN/WAN) так, словно они подключены к системе напрямую. Не имеет значения, находитесь ли вы в другой стране или соседнем офисе, вы всегда можете воспользоваться удаленным сканером, принтером, веб-камерой, модемом, USB-донглом и любым другим оборудованием, как будто они подключены непосредственно к вашему ПК.

    Программа USB Network Gate приятно удивит не умудренных компьютерными знаниями пользователей простотой своего использования. Достаточно подключить нужное USB-устройство к компьютеру, найти его во вкладке «share local USB devices» и нажать кнопку «share», — устройство станет доступно в локальной сети и интернете. Для соединения через интернет удаленному компьютеру нужно будет предоставить IP-адрес сервера.

    На клиентском компьютере, в свою очередь, необходимо выбрать во второй вкладке программы появившееся устройство, а затем получить к нему доступ нажатием кнопки «connect». Если же сервер с подключенным девайсом находится в другой подсети, то его необходимо добавить через пункт «add server».

    Заключение

    Если вам необходим совместный доступ к накопителю, веб-камере, электронной подписи, дактилоскопическому сканеру, принтеру, МФУ или любому другому поддерживаемому USB-устройству из любой точки мира, то USB Network Gate — простое и качественное решение. Программа имеет пробную 14-дневную версию для тестирования и ознакомления с функционалом. Стоимость лицензионной копии варьируется в зависимости от максимального количества одновременно подключаемых к сети USB-устройств. Есть редакции USB Network Gate под операционные системы Windows, Linux, Mac и Android.

    Скачать программу вы можете на официальном сайте.

    источник

    Добавить комментарий