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

Как настроить USB-over-IP сервер и клиент на Debian Lenny

• 7 min read • Руководство • Обновлено 23 Nov 2025
USB-over-IP на Debian Lenny — настройка сервера и клиента
USB-over-IP на Debian Lenny — настройка сервера и клиента

Кратко: покажу, как установить и настроить USB-over-IP (usbip) на Debian Lenny: сборка модулей ядра из пакета Squeeze, запуск демона на сервере и привязка USB-устройства для использования удалённым клиентом. Включены чек‑листы, отладочный план и рекомендации по совместимости и безопасности.

Важно: в примерах используются server1.example.com (192.168.0.100) и client1.example.com (192.168.0.101). Замените их на свои хосты и IP.

Предварительное примечание

Это руководство основано на оригинальном материале AliRezaTaleghani и адаптировано для Debian Lenny (и серверной, и клиентской стороны). Проект USB/IP инкапсулирует USB I/O сообщения в TCP/IP и передаёт их по сети, что позволяет, например, виртуальным машинам использовать удалённые USB-устройства.

Я не даю гарантий, что всё сработает в вашей среде.

Что нужно знать в одно предложение

USB-over-IP (usbip) — это способ «расшарить» физический USB-порт по сети; для Lenny нужно взять пакеты из Squeeze и собрать модули под ваше ядро.

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

В примерах ниже сервер называется server1.

Есть пакет usbip в Debian Squeeze (testing), но не в Lenny. Чтобы установить usbip на Lenny, мы добавим репозитории Squeeze и используем apt-pinning.

Отредактируйте /etc/apt/sources.list:

vi /etc/apt/sources.list

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

| [...] ## 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.debian.org/ squeeze/updates main |

Отредактируйте /etc/apt/apt.conf:

vi /etc/apt/apt.conf

Добавьте строку для увеличения лимита кэша apt:

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

Отредактируйте /etc/apt/preferences для pinning:

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 для текущего ядра Lenny, поэтому требуется usbip-source и module-assistant.

Подготовьте систему для сборки модулей:

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

После сборки загрузите модули USB/IP в ядро:

modprobe usbip
modprobe usbip_common_mod

Проверьте, загружены ли модули:

lsmod | grep usbip

Ожидаемый вывод похож на этот:

server1:~# lsmod | grep usbip
usbip 18660 0
usbip_common_mod 17672 1 usbip
server1:~#

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

vi /etc/modules

| [...] usbip usbip_common_mod |

Запустите демон usbip:

usbipd -D

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

server1:~# usbipd -D
Bind usbip.ko to a usb device to be exportable!
server1:~#

Подключите USB-устройство, которое хотите экспортировать (в примере — SanDisk USB-флешка). Найдите его с помощью lsusb:

lsusb

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

server1:~# lsusb
Bus 004 Device 002: ID 0781:5151 SanDisk Corp. Cruzer Micro 256/512MB Flash Drive
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 058f:6362 Alcor Micro Corp. Hi-Speed 21-in-1 Flash Card Reader/Writer (Internal/External)
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
server1:~#

ID устройства (Vendor:Device) во входе выше — 0781:5151 для SanDisk.

Посмотреть список устройств и соответствующие busid:

usbip_bind_driver --list

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

server1:~# usbip_bind_driver –list
List USB devices

  • busid 3-4 (058f:6362)
    3-4:1.0 -> usb-storage

  • busid 4-5 (0781:5151)
    4-5:1.0 -> usb-storage

server1:~#

Видно, что SanDisk имеет busid 4-5. Привяжем устройство к usbip, чтобы оно стало экспортируемым:

usbip_bind_driver --usbip 4-5

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

server1:~# usbip_bind_driver –usbip 4-5
(process:7290): DEBUG: 4-5:1.0 -> usb-storage (process:7290): DEBUG: unbinding interface
(process:7290): DEBUG: write “add 4-5” to /sys/bus/usb/drivers/usbip/match_busid Message: bind 4-5 to usbip, complete!
server1:~#

Проверьте, что демон usbip слушает на порту 3240, и при необходимости откройте порт в фаерволе:

netstat -tap

Пример вывода (смотрите строку с 3240):

server1:~# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :sunrpc : LISTEN 2062/portmap
tcp 0 0
:49008 : LISTEN 2073/rpc.statd
tcp 0 0 :ssh : LISTEN 3244/sshd
tcp 0 0 localhost.localdom:smtp
: LISTEN 2546/exim4
tcp 0 172 192.168.0.15:ssh 192.168.0.199:4176 ESTABLISHED 3204/0
tcp 0 148 server1.example.com:ssh 192.168.0.199:4177 ESTABLISHED 3245/1
tcp6 0 0 [::]:3240 [::]:
LISTEN 7254/usbipd
tcp6 0 0 [::]:ssh [::]:* LISTEN 3244/sshd
server1:~#

Если порт закрыт, настройте фаервол (iptables/ufw) в соответствии с политиками безопасности.

2 Быстрый план действий на клиенте (основные шаги)

  1. Установите тот же пакет usbip на клиенте (или используйте бинари, совместимые с Lenny/Squeeze).
  2. Запустите клиентские команды usbip для подключения к серверу: обнаружение/attach.
  3. Проверьте видимость устройства в системе клиента и, при необходимости, установите драйверы.

Пример клиентских команд (на client1):

usbip list -r 192.168.0.100
usbip attach -r 192.168.0.100 -b 4-5

После attach устройство появится у клиента как локальное USB-устройство.

Что делать, если что-то идёт не так — план действий при неполадках

  1. Проверка сети: ping server1.example.com и проверка порта 3240 (telnet 192.168.0.100 3240).
  2. Логи демона: посмотрите вывод usbipd и системный журнал (dmesg, /var/log/syslog).
  3. Модули ядра: lsmod | grep usbip — убедитесь, что оба модуля загружены.
  4. Правильный busid: перепроверьте lsusb и usbip_bind_driver –list.
  5. Версии пакетов: убедитесь, что на клиенте и сервере совместимые версии usbip; при необходимости пересоберите модули для клиентского ядра.
  6. Брандмауэр: проверьте правила iptables/ufw/сетевого экрана между клиентом и сервером.
  7. Если устройство — съёмный носитель, убедитесь, что оно не смонтировано и не занято локальной системой на сервере перед экспортом.

Полезные команды для отладки:

dmesg | tail -n 50
journalctl -u usbipd
ps aux | grep usbipd
netstat -an | grep 3240

Чек-листы

Чек-лист для администратора сервера

  • Добавлены репозитории squeeze в /etc/apt/sources.list
  • Настроен apt-pinning (/etc/apt/preferences)
  • Установлены usbip, usbip-source, module-assistant
  • Собраны модули usbip для текущего ядра
  • Модули добавлены в /etc/modules
  • Демон usbipd запущен и слушает порт 3240
  • Устройство привязано через usbip_bind_driver –usbip BUSID
  • Фаервол допускает входящие соединения на 3240 (по необходимости)

Чек-лист для администратора клиента

  • Установлен клиент usbip (совместимая версия)
  • Клиент может достучаться до сервера (ping/telnet)
  • Выполнена команда usbip list -r SERVER
  • Attach выполнен и устройство отображается в системе
  • При необходимости установлены драйверы для устройства

Совместимость, ограничения и альтернативы

Когда это не сработает

  • Аппаратные USB‑устройства, требующие проприетарных контроллеров, могут не работать удалённо.
  • Высокопроизводительные USB‑устройства (например, камеры с низкой задержкой) могут показывать плохую производительность из‑за сетевой латентности.
  • Если устройство монтируется локально на сервере, его сначала нужно корректно отмонтировать.

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

  • USB через удалённый рабочий стол (RDP/VDI) — работает для взаимодействия с USB в контексте сессий пользователя.
  • Аппаратные USB-серверы (device servers) — готовые устройства, которые «выводят» USB в сеть.
  • PCI/USB-передача через SR-IOV/пасsthrough в виртуализации (для гипервизоров) — для более прямого доступа в ВМ.

Совместимость с Windows

В оригинальном материале были рекомендации для Windows-клиента. Для Windows доступны клиенты usbip (в некоторых версиях в составе Windows или как сторонние сборки). Если нужен Windows-клиент, проверьте версии и совместимость реализации usbip для Windows — инструкции по подключению отличаются.

Миграция на новые версии Debian

На более новых релизах Debian usbip доступен в репозитории, и сборка из Squeeze станет ненужной. При обновлении системы удалите apt-pinning и установите штатный пакет из репозиториев текущей версии.

Факты и числа

  • TCP-порт по умолчанию: 3240.
  • Основные модули ядра: usbip и usbip_common_mod.
  • Поддержка в Debian: пакет появился в Squeeze (testing) и позже добавлен в более новые релизы.

Простая методика принятия решения

  1. Нужно ли полноценное USB-соединение в ВМ/удалённо? — Да: пробуем usbip.
  2. Нужна ли минимальная задержка/полоса? — Нет: usbip подходит.
  3. Требуется поддержка Windows-клиента? — Проверяем совместимость клиента для Windows.

Примеры типичных проблем и решение

Проблема: клиент не видит устройство после attach.
Действия: проверить соединение (telnet/ssh), версии usbip, логи на сервере, убедиться, что устройство не монтировано на сервере.

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

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

  • Сервер успешно экспортирует устройство: usbip_bind_driver показывает устройство как связанное.
  • Клиент успешно подключился: usbip attach завершился без ошибок.
  • Устройство полноценно функционирует на клиенте для целевых задач (тесты чтения/записи, тест функционала).

Безопасность и рекомендации

  • Разрешайте порт 3240 только внутри доверенной сети или через VPN.
  • Не экспортируйте критичные устройства без надёжной сегментации сети.
  • Мониторьте логи usbipd и системные журналы на предмет необычной активности.

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

USB-over-IP позволяет удалённо использовать USB-устройства, но для Debian Lenny нужно брать пакеты из Squeeze и собирать модули под ваше ядро. Проверьте совместимость устройства, сетевую конфигурацию и безопасность перед вводом в рабочую эксплуатацию.

Дополнительные материалы: оригинальное руководство AliRezaTaleghani и документация проекта USB/IP.

Поделиться: 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 быстро