Программы для проброса usb по сети. Удаленный доступ к USB-порту через Ethernet. Пример под спойлером

Добрый день, амигос, рад, что ты заглянул ко мне на сайт, сегодня мы рассмотрим такой вопрос, как организовать usb по сети и, как это использовать в виртуализации. Тема довольно актуальная, и встречается такая задача все чаще. Особенно у тех компаний, где есть инфраструктура удаленных рабочих столов RDS с 1С приложениями, Directum или Tessa.

Usb через сеть

Как вы уже знаете в нашу жизнь, давно и на долго вошла виртуализация . Мощности серверов растут, и естественно появились технологии рационального их использования, подразумевающие изоляцию и нормальную утилизацию ресурсов, что породило виртуальные машины , которые уже используют и на хостингах и дата центрах. Я уже рассказывал про все это, если интересно посмотрите по ссылкам слева и выше.

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

К сожалению, у некоторых гипервизоров, нет возможности пробрасывать на прямую с сервера USB устройства. Примером может служить Hyper-V от компании Microsoft, который с 2008 года до сих пор не несет в себе такую возможность в Windows Server 2008R2, хотя в 2012 R2, попытки уже предприняты, в отличии от компании vMvare, которая это позволяет и я уже рассказывал как пробросить USB модем в vmware esxi .

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

Суть проброса USB по локальной сети. Есть устройство AnywhereUSB - это небольшой сетевой usb хаб. Ниже примерные модели, представленные на рынке.

  • AnywhereUSB /2 – 2 порта USB, самая простая из модельного ряда

  • AnywhereUSB/ 5 – 5 портов USB, тут уже может удовлетворить потребности средней компании.

  • AnywhereUSB /14 – 14 портов USB, самая топовая мне она нравится больше всего, но и она не лишена своих косяков. Бывают случаи, что она может зависнуть, и представьте, что все 14 USB-токенов, становятся не доступными, народ на терминальных фермах негодует, бизнес теряет деньги, или вот еще распространенная ошибка, когда у вас в системе не происходит подключение к ключу, и вы видите в утилите сообщение с содержимым " ". Но все же аппаратные решение предоставления USB по локальной сети, в разы стабильнее, программных.

Подключение USB через сеть, можно так же осуществлять и через немецкое оборудование компании SEH, например, но в отличии от DIGI, оно еще работает и с LINUX платформами, я таким образом пробрасывал токен в CentOS 7, очень удобно. Он стоит чуток подороже, своего конкурента, но оно того стоит. Его внешний вид представлен на фото ниже. Он так же имеет до 14 USB портов.

Настройка AnywhereUSB

Давайте рассмотрим, как настраивается железка, для того, чтобы сделать доступ юсб по сети. Вот, как это будет выглядеть схематично. У вас есть разного рода USB устройства или ключи безопасности, которые вы подключаете в один из 14 портов, далее устройство проксирует трафик по локальной сети до них, с помощью специального программного обеспечения, на стороне клиента.

Для настройки и управления устройством предусмотрено несколько интерфейсов:
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;

Как понимаете самый правильный способ это статический ip адрес. Задается он в пункте Network Configuration. Заведите себе правило, везде на серверах использовать статику, чтобы все ваши клиенты подключив USB Токен по сети, не бегали в догонялки за ним, если вдруг на сервере стоит динамическая адресация.

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

Самым важным шагом в настройке USB-ключей предоставляемых по сети различным серверам, это задание порт-групп (RealPort USB). По сути RealPort USB это группы объединяющие физические порты с USB ключами в логические группы, для проброса нескольких токенов на один сервер или виртуальную машину. Без создания RealPort групп, вы не сможете подключить ни одного клиента к вашему USB хабу.

Создаются они в меню "Applications - RealPort USB". Сам алгоритм, очень простой, слева у вас будут реальные USB порты, идущие по порядку, чуть правее, вы указываете в какой группе по счету должен быть, тот или иной порт. Не забываем вписывать описание, оно очень пригодится, можно задавать, только латинские буквы. После этого, вы можете считать, что проброс USB по локальной сети, осуществлен процентов на 80.

Не забывайте включать галку "Dynamic Group Assignment (DGA)", чтобы порты применялись сразу, без перезагрузки DIGI.

На вкладке "Conection Management" можно посмотреть текущие подключения. По сути это все клиенты, кто подключил ваш USB девайс по локальной сети.

Для увеличения безопасности, вы можете включить защиту паролем (Секретный ключ), можно это сравнить с двухфакторной аутентификацией. Делается это в пункте "RealPort", включите функцию "Enable RealPort Authentication" и введите секретное слово в Shared Secret.

Теперь, что дальше нужно сделать на виртуальной машине для сетевого взаимодействия USB токена и клиента, тут все до безобразия логично, нужно поставить там драйвера от AnywhereUSB и задать ip адрес устройства. Как видите я уже подключил ее и у нее есть внутренний Ip адрес.

С помощью специальной утилиты, Anywhere View можно проверить доступность и занятость всех устройств. Пожалуй это самый простой и надежный метод проброса токенов, флешек и различных модемов в ваши виртуальные машины по локальной сети, сами устройства стоят по разному, но если вы уж потратились на софт и гипервизоры, думаю при необходимости купите и это:).

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

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

В этой статье мы рассмотрим несколько программ позволяющих реализовать такую возможность. Одной из них будет USB Network Gate. Это платная программа, но она позволяет расшарить устройства usb по сети в Linux очень быстро и просто. У программы удобный графический интерфейс и очень простая настройка. Также рассмотрим свободную альтернативу usbip, с помощью которой можно расшарить usb по сети в терминале. Начнем с коммерческой программы.

Usb Network Gate - это программа от Elitma Software, позволяющая получить доступ к любым USB устройствам подключенным к вашему компьютеру через сеть. При чем это может быть не только локальная сеть но и интернет.

У программы кроме версии для Linux есть версии для Windows, Mac и даже приложение для Android. Лицензия с возможностью передать по сети один USB порт стоит $89.99 но у нее есть пробный период размером 14 дней. После окончанию пробного периода вы не можете расшаривать свои устройства, но зато можете подключать уже розданные.

Установка Usb Newtork Gate

Установка USB Network Gate в Linux выполняется очень просто. Скачать установочный пакет для своего дистрибутива можно на официальном сайте .

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

После завершения загрузки, для установки перейдите в папку с файлом и выполните:

dpkg -i usb_network_gate.deb

Для Ubuntu или:

rpm -i usb_network_gate.rpm

Для RedHat и других использующих rpm систем. Возможно для работы программы понадобится библиотека libudev.so.0, если такой версии библиотеки нет в вашей системе создайте ссылку на libudev.so.1 следующей командой:

ln -s /usr/lib/libudev.so.1 /usr/lib/libudev.so.0

Раздача USB устройств по сети

Запустить программу можно из главного меню или выполнив в терминале:

Главное окно программы выглядит вот так:

Чтобы расшарить USB устройство по сети достаточно кликнуть по нему правой кнопкой мыши и выбрать в контекстном меню пункт Share.

В открывшимся окне можно увидеть информацию об устройстве и указать дополнительные настройки, например стоит ли использовать шифрование, сжатие или пароль для аутентификации соединения:

На удаленной машине, чтобы подключить наше устройство, сначала нужно его найти. Для этого перейдите на вкладку Remote USB Devices и нажмите кнопку Find:

В открывшимся окне, если компьютеры находятся в локальной сети можно просто нажать Find All, если же нет нужно указать ip адрес компьютера на котором расшаренно USB устройство, а затем нажать кнопку Find :

Чтобы подключить USB просто выберите в контекстном меню опцию Connect:

Чтобы его отключить просто выберите опцию Disconnect .

USBIp

Это бесплатная утилита с открытым исходным кодом для доступа к USB устройствам по сети. Она во многом проигрывает USB Network Gate, в основном через отсутствие графического интерфейса и сложной настройки.

Установка usbip

Устанавливается программа из официальных репозиториев:

sudo apt-get install linux-tools-generic

Или для Red Hat:

sudo yum install usbip

Нужно следить чтобы версия программы подходила к вашему ядру, потому что новые версии обычно не совсем совместимы со старыми версиями ядра. Например на данный момент для ядра 4.2 актуальна версия 2.0. Поэтому соблюдайте совместимость и все будет работать, а если не работает вы уже знаете в чем проблема.

Настройка сервера

Загрузим нужные модули ядра:

sudo modprobe usbip-host

$ sudo modprobe usbip-core

Запускаем демон:

Программа готова к использованию. Теперь с помощью lsusb находим наше устройство:

Bus 002 Device 014: ID 13fe:5500 Kingston Technology Company Inc

Нам нужна пара VendorID:DeviceID, вот она: 13fe:5500

Теперь выполните:

sudo usbip list -l

Busid 2-2 (13fe:5500)
2-2:1.0 -> usb-storage

Busid 4-1 (0458:0708)
4-1:1.0 -> usbhid
4-1:1.1 -> usbhid

Busid 4-3 (09da:9090)
4-3:1.0 -> usbhid
4-3:1.1 -> usbhid
Программа просканирует все подключенные устройства и покажет и в нужном формате, вместе с их busid. Опция -l указывает что нужно сканировать локальные устройства. Как видите наше USB устройство первое в списке.

Теперь, когда мы знаем busid можно расшарить USB устройство по сети в Linux:

usbip bind -b 2-2

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

Готово, наше USB устройство расшарено, осталось подключить его на клиентской машине. Смотрим список доступных устройств:

sudo usbip list -r 192.168.56.1

Exportable USB devices
======================
- 192.168.56.1
2-2: Kingston Technology Company Inc. : unknown product (13fe:5500)
: /sys/devices/pci0000:00/0000:00:13.2/usb2/2-1
: (Defined at Interface level) (00/00/00)

После -r нужно указать ваш ip адрес. Осталось подключить наше устройство:

sudo usbip attach -r 192.168.56.1 -b 2-2

Чтобы отключить устройство нужно сначала узнать его порт:

Затем отключаем:

sudo usbip detach 00

И прекращаем шаринг устройства по сети на сервере:

sudo usbip unbind -b 2-2

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

Регулярно возникает задача подключения USB-устройства к удаленному ПК через локальную сеть. Под катом изложена история моих поисков в этом направлении, и путь к готовому решению на базе open-source проекта с описанием заботливо установленных различными людьми на этом пути препятствий, а также способов их обхода.

Часть первая, историческая

Если машина виртуальная - всё это несложно. Функционал проброса USB от хоста в виртуалку появился еще в VMWare 4.1. Но в моём случае ключик защиты, опознающийся как WIBU-KEY, нужно было в разное время подключать к разным машинам, и не только виртуальным.
Первый виток поиска в далеком 2009-м году привел меня к железке под названием TrendNet TU2-NU4
Плюсы:
  • иногда даже работает
Минусы:
  • работает не всегда. Допустим, ключ защиты Guardant Stealth II через неё не заводится, ругаясь ошибкой «устройство не может быть запущено».
  • ПО для управления (читай - монтирования и размонтирования USB-устройств) убого до крайности. Ключи командной строки, автоматизация - не, не слышали. Всё только руками. Кошмар.
  • управляющее ПО ищет саму железку в сети широковещанием, поэтому работает это только в пределах одного broadcast-сегмента сети. Указать IP-адрес железки руками нельзя. Железка в другой подсети? Тогда у вас проблема.
  • разработчики забили на устройство, слать баг-репорты бесполезно.
Второй виток случился во времена уже не столь отдаленные, и привел меня к теме статьи - . Привлекает открытостью, тем более, что ребята из ReactOS подписали им драйвер для Windows, так что теперь даже на x64 всё работает без всяких костылей вроде тестового режима. За что команде ReactOS огромное спасибо! Звучит всё красиво, попробуем пощупать, так ли оно на деле? К сожалению, сам проект тоже подзаброшен, и на поддержку рассчитывать не приходится - но где наша не пропадала, исходник есть, разберемся!

Часть вторая, серверно-линуксовая

Сервер USB/IP, расшаривающий USB-девайсы по сети, может быть поднят только в Linux-based OS. Ну что ж, линукс так линукс, устанавливаем на виртуалку Debian 8 в минимальной конфигурации, стандартное движение руками:

Sudo apt-get update sudo apt-get upgrade sudo apt-get install usbip
Установились. Дальше интернет подсказывает, что нужно бы загрузить модуль usbip, но - здравствуйте, первые грабли. Нет такого модуля. А всё оттого, что большинство руководств в сети относятся к более старой ветке 0.1.x, а в крайней 0.2.0 модули usbip имеют другие названия.

Поэтому:

Sudo modprobe usbip-core sudo modprobe usbip-host sudo lsmod | grep usbip
Ну и добавим в /etc/modules такие строки, чтобы загружать их автоматически при старте системы:

Usbip-core usbip-host vhci-hcd
Запустим сервер usbip:
sudo usbipd -D
Дальше всемирный разум нам подсказывает, что в комплекте с usbip идут скрипты, позволяющие нам управлять сервером - показать, какое устройство он будет расшаривать по сети, посмотреть статус, и так далее. Тут нас поджидает еще один садовый инструмент - эти скрипты в ветке 0.2.x, опять же, переименованы. Получить список команд можно с помощью

Sudo usbip
Почитав описание команд, становится понятно, что для того, чтобы расшарить требуемый USB-девайс, usbip хочет узнать его Bus ID. Уважаемые зрители, на арене грабли номер три: тот Bus ID, который выдаст нам lsusb (казалось бы, самый очевидный путь) - ей не подходит! Дело в том, что железки вроде USB-хабов usbip игнорирует. Поэтому, воспользуемся встроенной командой:

User@usb-server:~$ sudo usbip list -l - busid 1-1 (064f:0bd7) WIBU-Systems AG: BOX/U (064f:0bd7)
Примечание: здесь и далее в листингах я буду всё описывать на примере моего конкретного USB-ключа. Ваши название железки и пара VID:PID могут и будут отличаться. Моя называется Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.

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

User@usb-server:~$ sudo usbip bind --busid=1-1 usbip: info: bind device on busid 1-1: complete
Ура, товарищи!

User@usb-server:~$ sudo usbip list -r localhost Exportable USB devices ====================== - localhost 1-1: WIBU-Systems AG: BOX/U (064f:0bd7) : /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb1/1-1: Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)
Троекратное ура, товарищи! Сервер расшарил железку по сети, и мы можем её подключать! Осталось только дописать автозапуск демона usbip в /etc/rc.local

Usbipd -D

Часть третья, клиентская и запутанная

Подключить расшаренное устройство по сети к машине под управлением Debian я попробовал сразу же на том же сервере, и всё прекрасно подключилось:

Sudo usbip attach --remote=localhost --busid=1-1
Переходим к Windows. В моем случае это был Windows Server 2008R2 Standard Edition. Официальное руководство просит сначала установить драйвер. Процедура прекрасно описана в прилагаемом к windows-клиенту readme, делаем всё как написано, всё получается. На XP тоже работает без каких-либо трудностей.

Распаковав клиент, пробуем примонтировать наш ключик:

C:\Program Files\USB-IP>usbip -a %server-ip% 1-1 usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1 usbip err: usbip_windows.c: 756 (query_interface0) recv op_common usbip err: usbip_windows.c: 829 (attach_device) cannot find device
Ой-ой. Что-то пошло не так. Используем навык гугла. Встречаются отрывочные упоминания, что что-то там не так с константами, в серверной части разработчики при переходе на версию 0.2.0 изменили версию протокола, а вот в клиенте под Win сделать это забыли. Предлагаемое решение - поменяйте константу в исходнике и пересоберите клиент.

Вот только очень мне не хочется качать Visual Studio ради этой процедуры. Зато у меня есть старый-добрый Hiew. В исходнике константа объявлена как двойное слово. Поищем в файле 0х00000106, заменяя на 0х00000111. Не забываем, порядок байт обратный. Итог - два совпадения, патчим:

00000CBC: 06 11 00000E0A: 06 11
Ииии… да!

C:\Program Files\USB-IP>usbip -a %server-ip% 1-1 new usb device attached to usbvbus port 1
На этом можно было бы закончить изложение, но музыка играла недолго. Перезагрузив сервер, я обнаружил, что устройство на клиенте не монтируется!

C:\Program Files\USB-IP>usbip -a %server-ip% 1-1 usbip err: usbip_windows.c: 829 (attach_device) cannot find device
И всё. На это мне не смог ответить даже всезнающий гугл. А при этом команда отобразить доступные на сервере устройства вполне корректно показывает - вот он, ключ, можете монтировать. Пробую примонтировать из-под Linux - работает! А если теперь попробовать из-под Windows? О ужас - это работает!

Грабли последние: что-то там в коде сервера не дописано. При расшаривании устройства он не считывает с него количество USB-дескрипторов. А при монтировании устройства из-под Linux, это поле заполняется. К сожалению, с разработкой под Linux я знаком на уровне «make && make install». Поэтому проблема решена с помощью довольно грязного хака - добавлением в /etc/rc.local

Usbip attach --remote=localhost --busid=1-1 usbip port usbip detach --port=00

Часть заключительная

После некоторых мытарств, это работает. Желаемое получено, теперь ключ можно примонтировать к любому ПК (и размонтировать, конечно же, тоже), в том числе - за пределами широковещательного сегмента сети. Если хочется - можно это сделать с помощью скрипта командной оболочки. Что приятно - удовольствие абсолютно бесплатное.
Надеюсь, что мой опыт поможет хабражителям обойти те грабли, которые отпечатались у меня на лбу. Спасибо за внимание!

Большинство моделей маршрутизаторов TP-Link имеют USB порт. Он используется для подключения USB-накопителей, принтеров, и USB-модемов (в некоторых моделях) . Сегодня я покажу как подключить флешку, или внешний жесткий диск к роутеру, и без сложных настроек получить доступ к USB диску по сети практически с любого устройства. Проще говоря, с компьютера, или даже мобильного устройства (Android) мы сможем заходить на флешку, которая подключена к роутеру TP-Link. Доступ к накопителю смогут получить устройства, которые подключены как по Wi-Fi, так и по сетевому кабелю. Можно будет не только просматривать файлы на накопителе, но и записывать и удалять.

А еще, подключенную к роутер флешку можно использовать для . Если в вашей модели маршрутизатора есть такая функция.

Настройка сетевого доступа к флешке через роутер TP-Link

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

На данный момент, на рынке есть роутеры со старой панелью управления (которая зеленая) , и с новой (голубая) . Насколько я понял, на более старых моделях нет доступа к накопителю через "Сетевое окружение". Это значит, что накопитель подключенный к роутеру не будет автоматически отображаться на вкладке "Сеть" в проводнике Windows. Его нужно будет добавить вручную.

Мы начнем настройку с самого простого, и рассмотрим разные нюансы.

Подключаем USB диск к маршрутизатору

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

Я не советую подключать накопитель, на котором есть важная информация. Так как всегда есть риск потерять ее. Лучше попрактиковаться на чистом накопителе, или на котором нет ценной информации. Ну и не изменяйте настройки, когда не знаете что они означают.

Если у вас зеленая панель управления, то нужно открыть вкладку "Настройки USB" – "Совместный доступ".

Как видите, сервер по умолчанию включен. Чтобы задать настройки доступа, создать новые учетные записи, нужно убрать галочку "Анонимный доступ ко всем томам". Так же можно отключить доступ, нажав на соответствующую кнопку.

На новых роутерах, с новой панелью управления нужно в разделе "Дополнительные настройки" открыть вкладку "Настройки USB" – "Общий доступ". Мы получали доступ через "Сетевое окружение". Как видите, его можно отключить, просто убрав галочку возле него.

Вот собственно и все. Если вас интересует доступ к файлам, которые находятся на накопителе подключенному к маршрутизатору с телефона, или планшета на Android, то я советую использовать приложение ES Проводник. В нем есть вкладка сеть, где будет отображаться сетевой накопитель. Если же автоматически он не появится, то там есть возможность подключить сетевой диск по адресу \\192.168.0.1, или \\192.168.1.1.

Если не получится зайти с мобильного устройства, то напишите в комментариях. Покажу более подробно.

День добрый!!! Как-то столкнулся с задачей удаленно подключить по 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.