Гид по технологиям

Установка и использование USB/IP на клиенте

• 5 min read • Системное администрирование • Обновлено 23 Nov 2025
USB/IP на клиенте: установка и подключение
USB/IP на клиенте: установка и подключение

Контекст и цель

В этой инструкции показано, как установить и настроить клиентскую часть USB/IP на Debian (или совместимых дистрибутивах), подключить удалённое USB-устройство от usbip-сервера и затем корректно отсоединить его. Подойдёт для администраторов и инженеров, которым нужно использовать USB-устройства по сети как локальные.

Важно: команды и пути файлов сохранены в оригинальном виде — выполняйте их с правами root или через sudo.

Предварительные требования

  • Доступ к серверу usbip (IP-адрес сервера в примерах: 192.168.0.100).
  • Права администратора на клиенте и сервере.
  • Поддерживаемое ядро (в примере — Debian Lenny; при других ядрах модули могут требовать сборки).

3 Установка и использование USB/IP на клиенте

Сначала нужно установить usbip на клиенте. Шаги совпадают с установкой на сервере.

Откройте список репозиториев:

vi /etc/apt/sources.list

Добавьте репозитории Debian Squeeze (testing) в конец файла:

| [...] ## Squeeze / Testing deb http://ftp2.de.debian.org/debian/ squeeze main deb-src http://ftp2.de.debian.org/debian/ squeeze main deb http://security.debian.org/ squeeze/updates main deb-src http://security.de.debian.org/ squeeze/updates main |

Откройте файл конфигурации apt:

vi /etc/apt/apt.conf

Вставьте в него строку, увеличивающую кэш APT:

| APT::Cache-Limit "100000000"; |

Создайте/отредактируйте файл предпочтений APT, чтобы задать приоритеты релизов:

vi /etc/apt/preferences

Содержимое файла должно выглядеть так:

| Package: * Pin: release a=stable Pin-Priority: 700 Package: * Pin: release a=testing Pin-Priority: 650 |

Обновите базу пакетов:

aptitude update

И установите usbip и сопутствующие пакеты:

aptitude install usbip usbip-source module-assistant

Для сборки модулей usbip под ядро Debian Lenny нужны пакеты usbip-source и module-assistant. Построим модули ядра:

m-a prepare
m-a update
m-a a-i usbip-source

После сборки загрузите модуль vhci-hcd:

modprobe vhci-hcd

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

lsmod | grep vhci_hcd

Ожидаемый пример вывода:

client1:~# lsmod | grep vhci_hcd
vhci_hcd 15844 0
usbip_common_mod 11332 1 vhci_hcd
usbcore 118160 2 vhci_hcd
client1:~#

Чтобы модуль загружался автоматически при загрузке, добавьте его в /etc/modules:

vi /etc/modules

| [...] vhci-hcd |

Теперь подключимся к usbip-серверу и получим список доступных USB-устройств:

usbip -l 192.168.0.100

(192.168.0.100 — IP-адрес usbip-сервера в примере.)

В выводе вы должны увидеть флеш-накопитель SanDisk (BUSID 4-5):

client1:~# usbip -l 192.168.0.100

  • 192.168.0.100
    4-5: SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
    : /sys/devices/pci0000:00/0000:00:04.1/usb4/4-5
    : (Defined at Interface level) (00/00/00)
    : 0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

client1:~#

Чтобы присоединить это устройство к клиенту, выполните:

usbip -a 192.168.0.100 4-5

Пример вывода:

client1:~# usbip -a 192.168.0.100 4-5
8 ports available

port 0 attached
client1:~#

Проверьте, что устройство появилось в списке USB-устройств на клиенте:

lsusb

Ожидаемый пример вывода:

client1:~# lsusb
Bus 001 Device 004: ID 0781:5151 SanDisk Corp. Cruzer Micro 256/512MB Flash Drive
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
client1:~#

Теперь вы можете использовать удалённое USB-устройство как локальное: монтировать, форматировать, читать и писать данные.

4 Отсоединение удалённого USB-устройства

Чтобы корректно отсоединить удалённое устройство с клиента, сначала узнайте, на каком порте оно подключено:

usbip --port

В примере порт — 00:

client1:~# usbip –port
8 ports available

Port 00: at High Speed(480Mbps)
SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
1-1 -> usbip://192.168.0.100:3240/4-5 (remote devid 00040002 (bus/dev 004/002))
1-1:1.0 used by usb-storage
/sys/class/bsg/1:0:0:0/device
/sys/class/scsi_device/1:0:0:0/device
/sys/class/scsi_disk/1:0:0:0/device
/sys/class/scsi_host/host1/device
/sys/class/usb_endpoint/usbdev1.4_ep02/device
/sys/class/usb_endpoint/usbdev1.4_ep81/device
/sys/block/sdb/device
Port 01:
Port 02:
Port 03:
Port 04:
Port 05:
Port 06:
Port 07:
client1:~#

Отсоедините устройство по номеру порта (в примере — 00):

usbip -d 00

Пример вывода:

client1:~# usbip -d 00
8 ports available

port 0 detached
client1:~#

На сервере можно перебиндить устройство к локальному драйверу, чтобы оно больше не было доступно по сети. Используйте BUSID (в примере 4-5):

server1:

usbip_bind_driver --other 4-5 

Пример вывода на сервере:

server1:~# usbip_bind_driver –other 4-5
(process:7333): DEBUG: write “del 4-5” to /sys/bus/usb/drivers/usbip/match_busid Message: bind 4-5 to other drivers than usbip, complete!
server1:~#

Вернитесь на клиент и проверьте список usb-устройств:

lsusb

Если всё прошло успешно, удалённое устройство больше не будет в списке:

client1:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
client1:~#

Полезные сценарии и советы по отладке

  • Если usbip не показывает устройств на сервере, проверьте, запущен ли на сервере демон usbip (или экспортируются ли устройства с помощью соответствующих команд) и доступен ли порт 3240 в сетевом фаерволе.
  • Если модуль vhci-hcd не загружается, проверьте соответствие версий ядра и собранных модулей. При необходимости пересоберите usbip-source для текущего ядра.
  • Для стабильной работы с блочными устройствами (USB-накопителями) на клиенте убедитесь, что устройство корректно размонтировано до detaching на сервере.

Важно: всегда корректно размонтируйте файловые системы (umount) перед отключением удалённого USB-устройства, чтобы избежать потери данных.

Альтернативные подходы

  • Использовать сетевые файловые системы (NFS, SMB) вместо передачи уровня USB, если задача — доступ к файловым данным. Это уменьшает риски и сложность, но не подойдёт для специфических USB-устройств (например, USB-ключей с уникальными драйверами).
  • Применять USB over IP в сочетании с VPN при пересечении ненадёжных сетей для шифрования трафика USB.

Короткая методология (шаги)

  1. Добавить репозитории и обновить apt.
  2. Установить usbip, usbip-source и module-assistant.
  3. Собрать модули и загрузить vhci-hcd.
  4. Просканировать сервер usbip (usbip -l).
  5. Подключить устройство (usbip -a).
  6. Использовать устройство локально.
  7. Отсоединить устройство (usbip -d) или перебиндить на сервере.

Чек-листы по ролям

Администратор клиента:

  • Проверить наличие прав root.
  • Установить пакеты и собрать модули.
  • Добавить vhci-hcd в /etc/modules для автозагрузки.

Администратор сервера:

  • Убедиться, что usbip демон/сервис экспортирует нужные BUSID.
  • Проверить сетевой доступ к порту 3240.
  • При необходимости перебиндить устройство после завершения работы.

Пользователь:

  • Размонтировать файловые системы перед отключением.
  • Сообщать администратору о некорректном поведении устройства.

Критерии приёмки

  • Клиент успешно отображает удалённое устройство в lsusb.
  • Устройство корректно монтируется и доступны чтение/запись (если это накопитель).
  • После usbip -d устройство больше не отображается на клиенте.

Краткий глоссарий

  • BUSID — идентификатор устройства на стороне сервера (например, 4-5).
  • vhci-hcd — клиентский модуль ядра для виртуального USB-хоста.
  • usbip-bind — операция, меняющая привязку устройства между драйверами.

Ссылки

Краткое резюме

USB/IP позволяет пробрасывать USB-устройства по сети, делая их доступными как локальные. На клиенте требуется установить usbip, собрать и загрузить модуль vhci-hcd, затем подключиться к серверу и прикрепить нужный BUSID. Для корректного завершения работы следует корректно отсоединять устройства и при необходимости перебиндить их на сервере.

Примечание: при работе с важными данными всегда делайте резервные копии перед форматированием или операциями низкого уровня.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро