В одной из прошлых статей мы обсуждали способы подключения самых разных сущностей как файлов и каталогов: WebDAV, BitTorrent, SSH и даже память видеоадаптера. Но что, если мы хотим получить доступ не к удаленному или локальному сервису, а к устройствам удаленной машины? Скажем, пробросить на локальную машину USB-порт и использовать подключенные к нему устройства как локальные.

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

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

В Plan 9 за проброс оборудования отвечает RPC-протокол 9P. Он обеспечивает доступ вообще к любым файлам и устройствам, как локальным, так и сетевым. К сожалению, Linux похвастать таким универсальным инструментом не может. Зато здесь есть несколько инструментов (если не сказать - костылей), обеспечивающих доступ к оборудованию удаленной машины.

USB

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

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

Первым делом пакет USB/IP следует установить на ту машину, доступ к устройствам которой необходимо получить извне. Далее загружаем необходимые модули:

$ sudo modprobe usbip-core $ sudo modprobe usbip-host

Проверяем, все ли корректно загрузилось:

$ sudo lsmod | grep usbip

И запускаем сервер:

$ sudo usbipd -D

Поскольку USB/IP имеет собственную, независимую от встроенной систему адресации, поиск устройств выполняется командой

$ sudo usbip list -l

Она покажет список всех устройств, подключенных в данный момент в USB-шине.


Теперь можно приступить непосредственно к расшариванию девайса (допустим, это будет веб-камера с индексом 2-3 из полученного списка):

$ sudo usbip bind --busid=2-3

Очередная проверка правильности выполненных действий:

$ sudo usbip list -r localhost

Итак, перейдя на клиентскую машину, устанавливаем на нее USB/IP и запускаем:

$ sudo modprobe usbip-core $ sudo modprobe vhci-hcd

Проверяем доступность расшаренного оборудования на сервере по списку:

$ sudo usbip --list АДРЕС_СЕРВЕРА

И присоединяем нашу камеру:

$ sudo usbip --attach АДРЕС_СЕРВЕРА 2-3

Проверяем результат:

$ sudo usbip --port

Теперь удаленное USB-устройство должно появиться в списке локальных, и с ним можно будет работать, как с любым другим. Для проверки корректности подключения выполняем команду lsusb:

INFO

Существует клиентская часть USB/IP для Windows. Однако из-за ошибки в версии протокола в ее исполняемом файле из коробки она работает некорректно. Требуются дополнительные телодвижения с подменой констант в исходниках.

RS232

Самым лаконичным решением взаимного расшаривания в Линуксе могут похвастаться COM-порты. Никакие дополнительные драйверы для этого не нужны. За все отвечает одна маленькая утилита remserial , доступная в исходниках. Подходит как для доступа из Линукса к оборудованию, подключенному через RS232 на удаленном компьютере, так и для связки двух девайсов с COM-портами, подключенных к разным машинам, связанным по сети.

Расшарить RS232, указав сетевой порт (-p), скорость, режим stty (-s) и имя порта (здесь /dev/ttyS0), можно так:

$ remserial -d -p 23000 -s "9600 raw" /dev/ttyS0 &

Подключиться к COM-девайсу, расположенному на удаленной машине (сервере), - так:

$ remserial -d -r адрес_сервера -p 23000 -s "9600 raw" /dev/ttyS0 &

Допустимо запускать несколько экземпляров программы с разными портами и адресами подключенных девайсов.



Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов.

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

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

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

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 -

P.S. Данный обзор написал мой коллега, который, к сожалению, пока не является хабраюзером.

USB Network Gate — программа, позволяющая пользователям подключать USB устройства, подключенные к другим компьютерам используя каналы IP.

На рынке существуют разные реализации удаленного подключения USB устройств, как аппаратные, так и программные. Некоторые из них требуют от пользователей определенных знаний и навыков, в некоторых случаях настройка может занять много времени. USB Network Gate удивил меня своей простотой. Скачал программу, установил, нажал на кнопку Share и устройство сразу доступно для подключения на удаленной машине с установленным клиентом.

USB Network Gate может оказаться незаменимым например при использовании USB токенов на сервере RDP, программа позволяет настроить монопольный доступ к устройствам для отдельного пользователя удаленного рабочего стола, изолируя его от остальных пользователей. Программу можно так же использовать в виртуальной среде, если по каким то причинам устройство невозможно подключить напрямую. Существуют версии для Windows, Linux (RPM и Deb пакеты), Apple OS X и что особенно интересно, для Android. Теперь о том, как это работает.

Сервер

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

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

Клиент

При использовании USB Network Gate в качестве клиента, приложение сканирует локальную сеть на наличие серверов отображает все доступные для подключения устройства. Если сервер находится в другой подсети, например при соединении через VPN, можно добавить его с помощью кнопки “Add server”. После того, как я открыл доступ к принтеру, он появился в списке доступных для подключения на моем MacBook. Помимо принтера я подключал USB жесткий диск с разделами HFS+, он так же подключился, но разделы монтировались около трех минут, видимо из-за их большого объема.

Загрузите нашу 15-дневную полнофункциональную пробную версию! Загрузить сейчас»

Экономически эффективное, простое решение удаленного использования USB устройства через протокол RDP .

Вам когда-нибудь нужно было перенаправить USB устройства в терминальной сессии? Принтеры, веб-камеры, сканеры, любые другие устройства при использовании RDP (протокол удаленного рабочего стола)? Возможно, ваш TSE/RDS сервер не поддерживает USB накопитель. Может быть одному из ваших удаленных приложений требуется распечатать этикетку на принтере штрих-кодов, на чековом принтере?

С программой "USB для RDP" USB периферия ваших пользователей будет обнаружена серверами TSE/RDS так, как если бы они были подключены локально.

Программа улучшает функциональность удаленного рабочего стола, дав пользователям возможность взаимодействовать с большинством периферийных USB устройств (принтеры, сканеры, USB ключей, MP3-плееры, флэш-диски, и т.д.) Выглядит это так же легко, как если бы эти устройства были подключены к серверу. "USB для RDP" работает с операционной системой Windows XP, Vista, 7, 8 ,10 Windows Server 2003, 2008, 2012 (32/64-разрядная версия). Решение просто в установке и применении.

Возможности программы USB для RDP

Доступ к USB устройствам через Интернет: с "USB для RDP" вы можете использовать USB девайс на удаленном компьютере так, как если бы это устройство было бы подключено непосредственно к этому удаленному компьютеру!

Бесшовное соединение USB через RDP: "USB для RDP" позволяет работать с локальным устройством USB непосредственно внутри сеанса RDP.

Работает практически с любым USB устройством: "USB для RDP" совместим с большинством USB устройств. Включает в себя принтеры, сканеры, КЛЮЧИ, MP3-плееры, флэш-накопители и т.д.

Простота установки и использования
Установка "USB для RDP" требует только несколько кликов.
Во-первых, установите "USB для RDP" на компьютер, к которому подключено USB устройство и "share" его.
Затем установите "USB для RDP" на компьютере, где вы хотите использовать это устройство USB и осуществите "Connect" на компьютер с подключенным "share" устройством.
Теперь вы можете удаленно получать доступ и использовать устройство USB, так как если бы он был подключен непосредственно к вашему локальному компьютеру.

"USB-для-RDP"- решение "бесплатный драйвер"

Быстрые и безопасные коммуникации
"USB для RDP" построен на технологии виртуальных каналов Microsoft. Используется технология шифрования и эффективный формат сжатия соединения RDP для передачи данных через USB.

Подключи и работай!
"USB для RDP" будет обнаруживать и автоматически перенаправлять все недавно подключенные в USB устройства. После того, как они становятся "общими", устройства могут быть отключены: они будут автоматически подключены каждый раз после включения питания.

Установка и настройка программы USB для RDP

Шаг 1: Установка "USB для RDP" на компьютере

Скачайте и запустите Setup-USB-для-RDP.exe и следуйте шагам, описанным здесь.
Файлы при установке копируются в: "C: \ Program Files \ RDS-Tools \ USB-для-RDP" папку (для 32-битной системы) и "C: \ Program Files (x86) \ RDS-Tools \ USB-для-RDP" папку (для 64-битной система).
Пробная версия является полнофункциональной версией и ограничена 2 неделями работы. После установки, появится новый значок на рабочем столе.

Шаг 2: Совместное использование USB устройств на вашем компьютере

Подключите устройство USB (сканер, принтер, ключа, привод, веб-камера и т.д.) в вашем компьютере. Дважды щелкните на значок "USB для RDP" на рабочем столе, чтобы запустить программу. Устройство USB должно быть отображено в списке. Если не нажимать на кнопку "Обновить", то процесс идентификации вновь подключенных устройств USB может занять некоторое время.

Нажмите на кнопку "Share" в панели инструментов: устройство USB будет "share" Это означает, что оно готово к соединению и использованию.

Шаг 3: Установка "USB для RDP" на сервере приложений
Если это не было сделано, установите "USB для RDP" на сервере приложений.
"USB для RDP" будет работать нормально при соблюдении двух условий:

  • "USB для RDP" установлен на компьютере, где подключено USB устройство;
  • "USB для RDP" установлен на сервере приложений, где вы хотите использовать USB устройство.

Шаг 4: Установка вашего специального драйвера для USB устройства
Кроме случаев, когда Windows уже знает устройство USB , вам нужно будет установить драйвер USB-устройства на сервере приложений. Обычно вы можете найти драйвера на CD-ROM, поставляемый с устройством USB и/или загрузить драйвер непосредственно с сайта производителя. Пожалуйста, обратите внимание, что не обязательно иметь установленный драйвер на компьютере, к которому подключено USB устройство. Драйвер ставится только на целевом сервере, где вы хотите использовать USB устройство.

Шаг 5: Использование общего USB устройства на сервере приложений
Используя стандартного клиента Mstsc (RDP) или клиента SHUTLE TSplus RDP, подключитесь к серверу приложений. Дважды щелкните по значку "USB для RDP" на рабочем столе вашего сервера приложений, чтобы запустить его, а затем нажмите на вкладку "Использовать пульт дистанционного управления USB-устройств». Устройство USB должно быть отображено в списке, если не пытаться нажать на кнопку "Обновить". По умолчанию, опция "Auto Connect" USB для RDP включена, так что ваше USB устройство должно автоматически быть подключено на сервере приложений. Если это не так, нажмите на кнопку "Connect", чтобы подключить его. Теперь вы можете использовать устройство USB на удаленном сервере приложений так, как если бы оно было непосредственно подключено к нему.

Лицензирование
"USB для RDP"- требуется 1 лицензия на каждый сервер.

Включает в себя функции:

  • Неограниченное количество USB устройств;
  • Неограниченное количество пользователей;
  • Совместимость практически с любым устройством 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 устройство не зависимо от используемого дистрибутива.