Как настроить сервер и клиент USB-over-IP в Mandriva 2010.0
Кратко: подробно показано, как собрать и запустить usbip на Mandriva 2010.0, экспортировать USB-устройство с сервера и подключить его с клиента. Включены команды сборки, привязки BUSID и рекомендации по безопасности и отладке.
Версия и автор
Version 1.0
Author: Falko Timme
Следите за мной в Twitter
Введение
В этом руководстве показано, как настроить сервер USB-over-IP на Mandriva 2010.0 и соответствующий клиент (также Mandriva 2010.0). Проект USB/IP реализует общую систему шаринга USB-устройств по IP: USB I/O сообщения инкапсулируются в TCP/IP и передаются между компьютерами. USB-over-IP полезен, например, для виртуальных машин, которым нужен удалённый доступ к USB-устройствам хоста.
Важно: я не даю гарантий, что инструкция сработает в вашей среде — проверяйте конфигурации и резервные копии перед изменениями.
1 Предварительное замечание
Это руководство основано на инструкции AliRezaTaleghani How To Modify Your Gnu/Linux Box To Serve As A USB Over IP Server, но адаптировано под Mandriva 2010.0 (сервер и клиент). Если вы планируете клиент на Windows, посмотрите оригинал AliRezaTaleghani — эта часть там остаётся актуальной.
В примерах я использую сервер server1.example.com с IP 192.168.0.100 и клиент client1.example.com с IP 192.168.0.101, оба под Mandriva 2010.0. Замените адреса и имена хостов на свои.
2 Установка и использование USB/IP на сервере
server1:
Сначала загрузим модуль ядра usbip:
modprobe usbipПроверим, загрузился ли модуль:
lsmod | grep usbipОжидаемый вывод похож на этот:
[root@server1 administrator]# lsmod | grep usbip
usbip 17988 0
usbip_common_mod 22168 1 usbip
usbcore 219188 2 usbip
[root@server1 administrator]#Чтобы модуль загружался автоматически при старте, добавьте его в /etc/modprobe.preload:
vi /etc/modprobe.preload| [...] usbip |
Пакета usbip для Mandriva 2010.0 нет в репозиториях, поэтому соберём его вручную:
urpmi wget flex gcc gcc-c++ libsysfs-devel libglib2.0-develcd /tmp
wget http://downloads.sourceforge.net/project/usbip/usbip/0.1.7/usbip-0.1.7.tar.gz?use_mirror=kent
tar xvfz usbip-0.1.7.tar.gz
cd usbip-0.1.7/src/
./autogen.sh
./configure
make
make installusbip ожидает файл с базой Vendor/Device ID (usb.ids) в /usr/share/hwdata, а в Mandriva 2010.0 он находится в /usr/share/usb.ids — создадим симлинк:
mkdir /usr/share/hwdata
ln -sf /usr/share/usb.ids /usr/share/hwdata/Запустим демон usbip:
usbipd -DПример вывода:
[root@server1 src]# usbipd -D
Bind usbip.ko to a usb device to be exportable!
[root@server1 src]#Теперь подключите USB-устройство, которое хотите экспортировать (в примере — флешка SanDisk).
Выполните:
lsusbНайдите Vendor/Device ID в формате:
Bus XXX Device YYY: ID VendorID:DeviceIDПример вывода на сервере:
[root@server1 src]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 058f:6362 Alcor Micro Corp. Hi-Speed 21-in-1 Flash Card Reader/Writer (Internal/External)
Bus 001 Device 003: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
[root@server1 src]#Vendor/Device ID флешки в примере: 0781:5151.
Запустите:
bind_driver --listПример вывода:
[root@server1 src]# bind_driver --list
List USB devices
- busid 1-4 (058f:6362)
1-4:1.0 -> usb-storage
- busid 1-5 (0781:5151)
1-5:1.0 -> usb-storage
[root@server1 src]#Как видно, Vendor/Device ID 0781:5151 соответствует BUSID 1-5. Этот BUSID нужен, чтобы привязать устройство к usbip:
bind_driver --usbip 1-5Пример вывода:
[root@server1 src]# bind_driver --usbip 1-5
(process:5807): DEBUG: 1-5:1.0 -> usb-storage
(process:5807): DEBUG: unbinding interface
(process:5807): DEBUG: write "add 1-5" to /sys/bus/usb/drivers/usbip/match_busid
Message: bind 1-5 to usbip, complete!
[root@server1 src]#Готово — устройство экспортировано и доступно для клиентов usbip.
Проверьте, что демон usbipd слушает порт 3240, и откройте порт в брандмауэре при необходимости:
netstat -tapВ примере видно прослушивание 3240 порта:
[root@server1 src]# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:nfs *:* LISTEN -
...
tcp 0 0 *:3240 *:* LISTEN 5780/usbipd
...
[root@server1 src]#3 Быстрые советы по безопасности и отладке
Важно: USB-over-IP предоставляет прямой доступ к USB-устройствам. Разрешайте соединения только между доверенными хостами и используйте сетевые механизмы защиты (firewall, VPN).
- Разрешайте порт 3240 только для доверенных адресов.
- Для тестов используйте VLAN или отдельную тестовую сеть.
- При проблемах проверьте логи демона и dmesg на клиенте и сервере.
Когда это не сработает
- Устройство использует нестандартные драйверы/firmware, не поддерживаемые usbip.
- Требуется высокопроизводительная/низкозадержанная передача (USB-over-IP добавляет накладные расходы).
- На клиенте/сервере несовместимые версии ядра или usbip-библиотек.
Альтернативные подходы
- Подключать устройство физически к нужному хосту.
- Использовать специализированные сетевые USB-хабы (аппаратные устройства).
- Для виртуальных машин — проброс USB через гипервизор (если поддерживается) вместо сетевого usbip.
Мини-методология для внедрения в прод среде
- Тестирование: сконфигурируйте тестовый сервер и клиент в изолированной сети.
- Совместимость: проверьте поддерживаемые устройства и драйверы.
- Безопасность: настройте firewall/VPN, ограничьте доступ по IP.
- Документирование: фиксируйте BUSID и назначение устройств.
- Мониторинг: следите за загрузкой сети и логами usbipd.
Чеклист администратора перед экспортом устройства
- Сделан бэкап данных с USB-устройства.
- Модуль usbip добавлен в /etc/modprobe.preload.
- Порт 3240 открыт только для доверенных адресов.
- Привязка bind_driver выполнена и проверена.
- Клиент протестирован в тестовой среде.
Короткий глоссарий
- BUSID — системный идентификатор USB-порта/прибора (пример: 1-5).
- usbipd — демон, предоставляющий USB-over-IP сервис.
- bind_driver — утилита, связывающая конкретное USB-устройство с драйвером usbip.
Резюме
USB-over-IP позволяет гибко делиться физическими USB-устройствами по сети, что удобно для виртуальных машин и удалённых хостов. На Mandriva 2010.0 usbip нужно собрать вручную, затем запустить демон, найти BUSID устройства и привязать устройство для экспорта. Не забывайте про безопасность (порт 3240) и совместимость драйверов.
Ключевые команды упомянуты в тексте: modprobe usbip, lsmod, lsusb, bind_driver –list, bind_driver –usbip
Дополнительные рекомендации: проверяйте логи и используйте ограничение доступа по IP/VPN при развёртывании в продакшн.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента