Проброс usb linux windows

Проброс USB устройств по сети при помощи USBIP

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

Как оказалось, уже давно созданы как программы, так и отдельные железки, позволяющие пробросить любое USB устройство по сети, но цена коммерческого решения оказалась несколько великоватой — в магазине нам озвучили цену за мультихостовый девайс 1000 долларов, и жать его поставки Украину нужно будет три недели. Поэтому было решено попробовать решить задачу, используя бесплатное ршение USBIP, процедуру установки и настройки которого я и рассмотрю в данном материале.

Программа USBIP позволяет подключать USB устройства по сети, будь то Windows или Linux клиент. К сожалению данный проект не так активно развивается, как хотелось-бы, но спасибо разработчикам и за то что есть — продукт вполне рабочий, исходники есть, так что если у вас есть силы и желание — помогите проекту, а не можете, или не хотите помогать — пользуйтесь тем что есть, или покупайте коммерческие более функциональные продукты.

Итак, давайте рассмотрим по порядку процесс настройки и проброса USB устройств по сети при помощи USBIP.

Установка Linux

Для настройки серверной части USBIP, понадобится установить Linux. Разработчики проекта ограничились написанием серверной части только для Linux. Клиентская часть есть как для Linux, так и для Windows.

В даной статье я буду устанавливать Debian 7.9, так как после долгих разбирательств удалось получить рабочее решение на базе Дебиана, а дальше тратить время не было возможности, потому остановился на том что есть. Рассказывать как устанавливать Linux не буду, есели вы интересуетесь вопросом проброса USB устройств по сети на базе USBIP, процедура установки Linux должна быть для вас также прозрачна. В случае, если ищете решение, устанавливаемое нажатием пары кнопок мыши, следует повернуть свой взор в сторону платных продуктов, но там уже нужно платить денежки.

Установка сервера USBIP

Обновляем систему, устанавливаем пакет USBIP и загружаем модули ядра, необходимые для работы программы:

Теперь, нужно сделать так, чтоб эти модули загружаилсь при старте системы. В файл /etc/modules и добавьте две строчки, по одной для каждого загружаемого модуля:

Для того, чтоб после запуска системы сервер USBIP стартовал автоматом, нужно добавить init.d скрипт. Для этого скопируйте файл /etc/init.d/skeleton:

Далее отредактируйте файл /etc/init.d/usbipd, поменяйте параметры описание, имя демона и аргументы, как приведено ниже:

Сделайте файл исполняемым:

Ну и на последок запустите команду update-rc.d, после чего usbip готов для атоматического запуска. Запускаем программу:

Читайте также:  Boot the system linux

Если нет ошибок, то все настроено правильно и сервер готов расшаривать USB девайсы

Список доступных к расшариванию устройств можно посмотреть выполнив команду usbip list -l. Параметр -l говорит программе, что нужно вывести локальные устройства. Программа должна вернуть список устройтв следующего вида:

Если устройств перечислено несколько, определите какое именно устройство вам нужно проброить по сети и запомите его идентификатор, в моем случае, мне нужно пробросить устройство с идентификатором 1-4. Далее, выполняем команду:

Если в результате программа в конце написала : complete, и не вернула вам никаких сообщений об ошибках — устройство успешно расшарено и теперь к нему можно получить доступ с любого компьютера, на котором установлен USBIP клиент.

Если на вашем компьютере настроена фильтрация пакетов, то добавьте порт 3240 в разрешенные для подключения извне:

Вот и все. Серверная часть настроена. Теперь будет самое интересное — подключить к серверу клиента и увидеть флешку, воткнутую в удаленном компьютер, но отображаемую, как будто она подключена непосредственно к вашему компьютеру.

Установка USBIP клиента под Windows

Откройте странцу USBIP на сайте Sourceforge, и загрузите клиент USBIP последней версии. Распакуйте содержимое архива, например в папку c:\usbip

Установка драйвера.

Откройте диспетчер устройств, выберите корневой элемент дерева, нажмите правой кнопкой мыши и в контекстном меню выберите пункт Установить старое устройство.

Первый шаг пропускаем

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

Следующий шаг пропускаем, просто нажимаем Далее

На следующем шаге нажимаем кнопку Установить с диска, выбираем файл драйвера устройства USBIPEnum.inf.

В итоге видим драйвер USB/IP Enumerator, выбираем его и нажимаем кнопку Далее

Соглашаемся с предложением установить новое оборудование и нажимаем кнопку Далее.

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

В Диспетчере устройств появилось новое системное устройство USB/IP Enumerator.

После установки драйвера, нужно загрузить еще один архивчик. Я столкнулся с проблемой, что при попытке подключения к серверу, выдается ошибка, сообщающая об отличии версий клиента и сервера. В процессе поиска решения проблемы, вот здесь на форуме, я нашел что один хороших человек выложил ссылку на архив, в котором лежит скомпилированный usbip.exe правильной версии, подключаясь с помощью которого к серверу никаких ошибок не выдается.
Может со временем, если дойдут руки, я попробую сам скомпилировать загруженный проект, но сейчас времени нет разбираться со всеми зависимостями и буду пользоваться тем что есть.

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

Открываем командную строку, устанавливаем текущей директорию, c:\usbip. Если выполнить команду без параметров, будет выведена справка.

Запрашиваем список расшаренных USB устройств на удаленном компьютере. Для этого нужно запустить usbip.exe с параметром -l, —list [адрес-хоста]:

Видим устройство 1-4, расшаенное ранее. Теперь, чтоб его подключить нужно запустить usbip.exe с параметром -a, —attach [адрес-хоста] [id устройства]

После непродолжительного ожидания (все-таки подключение производится не к локальному девайсу, а проброшенному через сеть), система запустит мастер установки драйверов оборудования. В конце сообщит вам об успешной установке устройства.

В результате устройство будет отображено у вас в системе и с ним можно работать как с обычным локальным устройством.

Читайте также:  Windows helper service что это

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

Проброс USB устройств по сети при помощи USBIP

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

Как оказалось, уже давно созданы как программы, так и отдельные железки, позволяющие пробросить любое USB устройство по сети, но цена коммерческого решения оказалась несколько великоватой — в магазине нам озвучили цену за мультихостовый девайс 1000 долларов, и жать его поставки Украину нужно будет три недели. Поэтому было решено попробовать решить задачу, используя бесплатное ршение USBIP, процедуру установки и настройки которого я и рассмотрю в данном материале.

Программа USBIP позволяет подключать USB устройства по сети, будь то Windows или Linux клиент. К сожалению данный проект не так активно развивается, как хотелось-бы, но спасибо разработчикам и за то что есть — продукт вполне рабочий, исходники есть, так что если у вас есть силы и желание — помогите проекту, а не можете, или не хотите помогать — пользуйтесь тем что есть, или покупайте коммерческие более функциональные продукты.

Итак, давайте рассмотрим по порядку процесс настройки и проброса USB устройств по сети при помощи USBIP.

Установка Linux

Для настройки серверной части USBIP, понадобится установить Linux. Разработчики проекта ограничились написанием серверной части только для Linux. Клиентская часть есть как для Linux, так и для Windows.

В даной статье я буду устанавливать Debian 7.9, так как после долгих разбирательств удалось получить рабочее решение на базе Дебиана, а дальше тратить время не было возможности, потому остановился на том что есть. Рассказывать как устанавливать Linux не буду, есели вы интересуетесь вопросом проброса USB устройств по сети на базе USBIP, процедура установки Linux должна быть для вас также прозрачна. В случае, если ищете решение, устанавливаемое нажатием пары кнопок мыши, следует повернуть свой взор в сторону платных продуктов, но там уже нужно платить денежки.

Установка сервера USBIP

Обновляем систему, устанавливаем пакет USBIP и загружаем модули ядра, необходимые для работы программы:

Теперь, нужно сделать так, чтоб эти модули загружаилсь при старте системы. В файл /etc/modules и добавьте две строчки, по одной для каждого загружаемого модуля:

Для того, чтоб после запуска системы сервер USBIP стартовал автоматом, нужно добавить init.d скрипт. Для этого скопируйте файл /etc/init.d/skeleton:

Далее отредактируйте файл /etc/init.d/usbipd, поменяйте параметры описание, имя демона и аргументы, как приведено ниже:

Сделайте файл исполняемым:

Ну и на последок запустите команду update-rc.d, после чего usbip готов для атоматического запуска. Запускаем программу:

Если нет ошибок, то все настроено правильно и сервер готов расшаривать USB девайсы

Список доступных к расшариванию устройств можно посмотреть выполнив команду usbip list -l. Параметр -l говорит программе, что нужно вывести локальные устройства. Программа должна вернуть список устройтв следующего вида:

Читайте также:  Что делать если проводник не отвечает windows

Если устройств перечислено несколько, определите какое именно устройство вам нужно проброить по сети и запомите его идентификатор, в моем случае, мне нужно пробросить устройство с идентификатором 1-4. Далее, выполняем команду:

Если в результате программа в конце написала : complete, и не вернула вам никаких сообщений об ошибках — устройство успешно расшарено и теперь к нему можно получить доступ с любого компьютера, на котором установлен USBIP клиент.

Если на вашем компьютере настроена фильтрация пакетов, то добавьте порт 3240 в разрешенные для подключения извне:

Вот и все. Серверная часть настроена. Теперь будет самое интересное — подключить к серверу клиента и увидеть флешку, воткнутую в удаленном компьютер, но отображаемую, как будто она подключена непосредственно к вашему компьютеру.

Установка USBIP клиента под Windows

Откройте странцу USBIP на сайте Sourceforge, и загрузите клиент USBIP последней версии. Распакуйте содержимое архива, например в папку c:\usbip

Установка драйвера.

Откройте диспетчер устройств, выберите корневой элемент дерева, нажмите правой кнопкой мыши и в контекстном меню выберите пункт Установить старое устройство.

Первый шаг пропускаем

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

Следующий шаг пропускаем, просто нажимаем Далее

На следующем шаге нажимаем кнопку Установить с диска, выбираем файл драйвера устройства USBIPEnum.inf.

В итоге видим драйвер USB/IP Enumerator, выбираем его и нажимаем кнопку Далее

Соглашаемся с предложением установить новое оборудование и нажимаем кнопку Далее.

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

В Диспетчере устройств появилось новое системное устройство USB/IP Enumerator.

После установки драйвера, нужно загрузить еще один архивчик. Я столкнулся с проблемой, что при попытке подключения к серверу, выдается ошибка, сообщающая об отличии версий клиента и сервера. В процессе поиска решения проблемы, вот здесь на форуме, я нашел что один хороших человек выложил ссылку на архив, в котором лежит скомпилированный usbip.exe правильной версии, подключаясь с помощью которого к серверу никаких ошибок не выдается.
Может со временем, если дойдут руки, я попробую сам скомпилировать загруженный проект, но сейчас времени нет разбираться со всеми зависимостями и буду пользоваться тем что есть.

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

Открываем командную строку, устанавливаем текущей директорию, c:\usbip. Если выполнить команду без параметров, будет выведена справка.

Запрашиваем список расшаренных USB устройств на удаленном компьютере. Для этого нужно запустить usbip.exe с параметром -l, —list [адрес-хоста]:

Видим устройство 1-4, расшаенное ранее. Теперь, чтоб его подключить нужно запустить usbip.exe с параметром -a, —attach [адрес-хоста] [id устройства]

После непродолжительного ожидания (все-таки подключение производится не к локальному девайсу, а проброшенному через сеть), система запустит мастер установки драйверов оборудования. В конце сообщит вам об успешной установке устройства.

В результате устройство будет отображено у вас в системе и с ним можно работать как с обычным локальным устройством.

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

Оцените статью