Статьи

Usb кидок по мережі порівняння програм. Використання безкоштовного пакету USBIP для проброса USB всередину віртуальних машин. Якщо пристроїв багато і всі вони однакові.

  1. usb через мережу
  2. Налаштування віртуальної машини
  3. Примітки: Виникаючі проблеми та їх вирішення
  4. Приклад під спойлером
  5. Налаштування AnywhereUSB
  6. Управління IP адресою
  7. Рекомендації щодо купівлі - інструменти для моніторингу продуктивності мережі
  8. Для початку кілька слів про вишеперчісленних рішеннях
  9. Якщо пристроїв багато і всі вони однакові
  10. Додаткові міркування щодо периферійних пристроїв
  11. Для початку кілька слів про вишеперчісленних рішеннях
  12. Налаштування віртуальної машини
  13. Для qemu (без libvirt)
  14. для libvirt
  15. для qemu
  16. для libvirt
  17. запуск сервера
  18. Підключення пристрою до віртуальної машини
  19. для qemu
  20. для libvirt
  21. Або через qemu-monitor
  22. Якщо пристроїв багато і всі вони однакові
  23. І так приступимо

Добрий день, амігос, радий що ти завітав до мене на сайт, сьогодні ми розглянемо таке питання, як організувати usb по мережі і як це використовувати в віртуалізації. Тема досить актуальна, і зустрічається таке завдання все частіше.

usb через мережу

Як ви вже знаєте в наше життя, давно і на довго увійшла віртуалізація. Потужності серверів ростуть, і природно з'явилися технології раціонального їх використання, що мають на увазі ізоляцію і нормальну утилізацію ресурсів, що породило віртуальні машини, які вже використовують і на хостингах і дата центрах. Я вже розповідав про все це, якщо цікаво подивіться по посиланнях зліва і вище.

Віртуалізація, тобто технологія, яка дозволяє створювати віртуальну версію пристрою або ресурсу, такого як сервер, пристрій зберігання, мережа або навіть операційна система, існує вже багато років. Він пропонує вам безліч переваг, які важко собі уявити, коли одного разу ми жили в «фізичному світі». Але будьте обережні - віртуалізація також має деякі недоліки.

Налаштування віртуальної машини

Існує два основних способи вирішення цієї проблеми.
Існує два основних способи вирішення цієї проблеми
Якщо ви підключаєте пристрій до головного комп'ютера, коли віртуальна машина працює і його вікно активно, пристрій буде автоматично з'єднуватися гостьовий системі, а не до хосту. Це дасть вам можливість відключити одне з уже підключених пристроїв, щоб ви могли звільнити порт для знову вставленого пристрою або проігнорувати новий пристрій. Якщо ви виберете останнє, пристрій буде підключено до хосту.

Як ви знаєте іноді деякі ліцензійні програми, вимагаю для роботи usb ключ. Раніше в класичному варіанті, коли були тільки фізичні сервера, з роботою такої схеми проблем не було, але з появою віртуалізації вона виплила на ружу.

На жаль, у деяких гіпервізора, немає можливості прокидати на пряму з сервера USB пристрої . Прикладом може служити Hyper-V від компанії Microsoft, який з 208 року до сих пір не несе в собі таку можливість, на відміну від компанії vMvare, яка це дозволяє і я вже розповідав як прокинути USB модем в vmware esxi.

Якщо концентратор використовується для підключення пристроїв до хосту, ви не побачите концентратор, а тільки віртуальні пристрої.
Якщо концентратор використовується для підключення пристроїв до хосту, ви не побачите концентратор, а тільки віртуальні пристрої

Якщо «Мій комп'ютер» не вказує його як знімне сховище, можливо, це пов'язано з тим, що диск відключений. Розгорніть «Зберігання» і виберіть «Керування дисками». Після того, як ваш диск отримає статус «Онлайн», йому буде присвоєно буква диска.

Наведіть курсор миші на один з цих елементів, щоб побачити каскадне меню пристроїв, які підключені до вашого комп'ютера і доступні для використання. Якщо ви фізично підключіть новий пристрій до головного комп'ютера, а функція Автоматичне з'єднання не вдалося підключитися до віртуальної машини, пристрій спочатку підключається до хосту.

Не поспішайте засмучуватися, адепти редмондсого гіганта, на виручку вам приходить технологія USB over IP або AnywhereUSB. USB over IP дозволяє підключити usb через мережу.

AnywhereUSB це невеликий мережевий usb хаб. Нижче приблизні моделі, представлені на ринку.

  • AnywhereUSB / 2 - 2 порти USB


AnywhereUSB / 2 - 2 порти USB

Потім ви можете призупинити або відключити віртуальну машину або відключити пристрій від мережі. Робоча станція зберігає з'єднання, записуючи запис Автоматичне з'єднання в файл конфігурації віртуальної машини. Однією з головних особливостей віртуалізації є абстракція апаратного забезпечення. Навіть в невіртуалізірованних системах ці ресурси поділяються. Багато інших апаратні компоненти більш складні, оскільки вони зазвичай не використовуються спільно, навіть в окремих додатках . Це являє собою особливу проблему в світі віртуалізації.

  • AnywhereUSB / 5 - 5 портів USB


AnywhereUSB / 5 - 5 портів USB

  • AnywhereUSB / 14 - 14 портів USB


AnywhereUSB / 14 - 14 портів USB


Примітки: Виникаючі проблеми та їх вирішення

Якщо у вас є проблеми, очікуйте від мене всіх відповідей: «Я так сказав». У гіпервізора типу 2 операційна система управління встановлюється безпосередньо на апаратне забезпечення, а гипервизор - це ще один додаток, яке працює всередині нього.

Приклад під спойлером

Гіпервізор типу 1 не є додатками. Це ядра, відмінні від ядер в гостьових операційних систем ах. Гипервизор типу 2 являє собою, по суті, прокладку додатки, яка прикидається, що забезпечує кореневе апаратний пристрій, що прекрасно, тому що воно не вимагає такої ж міри ізоляції, як гипервизор 1-го типу. Теоретично це звучить як щось, що можна зробити, хоча це також схоже на брудний злом і ризик поділу ізоляції. Але технічна здійсненність не має значення.

Налаштування AnywhereUSB

Давайте розглянемо як налаштовується залізяка, для того щоб зробити доступ ЮСБ по мережі.

Ось як це буде виглядати.


Ось як це буде виглядати

Для настройки і управління пристроєм передбачено кілька інтерфейсів:
• 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;

Як розумієте найправильніший спосіб це статичний ip адресу. Здається він в пункті Network Configuration.


Здається він в пункті Network Configuration

У цьому ж мню дуже зручно задавати мережеві служби, доступні на ньому.


У цьому ж мню дуже зручно задавати мережеві служби, доступні на ньому

Рекомендації щодо купівлі - інструменти для моніторингу продуктивності мережі

Виберіть локальний ресурс, який ви хочете використовувати. . Щоб вибрати локальний ресурс, наприклад диск. Якщо ви продовжуєте підтримувати периферійні пристрої. Завантажити безкоштовне керівництво. Рішення для моніторингу продуктивності мережі повинні відповідати підвищеної складності мереж і підвищеним вимогам користувачів і додатків.

Для початку кілька слів про вишеперчісленних рішеннях

  • Ви забули ввести свою адресу електронної пошти.
  • Ця електронна адреса не є дійсним.
  • Ви досягли максимальної кількості символів.
  • Вкажіть адресу електронної пошти компанії.

Якщо ви перебуваєте за межами Сполучених Штатів, ви погоджуєтеся з тим, що ваша особиста інформація буде передана в Сполучені Штати і оброблена там. Підтримка таких периферійних пристроїв надзвичайно важлива для максимально комфортної роботи з віртуальними робочими столами. Без доступу до відомим принтерів, портам і іншим периферійних пристроїв стає важко встановити прийом для віртуальних робочих столів.


На вкладці Conection Management можна подивитися поточні підключення.



Якщо пристроїв багато і всі вони однакові

Як адміністратор, вам потрібно знати, які зовнішні пристрої знаходяться на ринку і як ви можете їх підтримувати. Однак ви повинні виконувати цю функцію з обережністю. Кожен великий продукт для віртуалізації настільних комп'ютерів трохи відрізняється підтримкою периферійних пристроїв.

Ця технологія може використовуватися з безліччю мережевих опцій. У медичній галузі також підтримуються монітори артеріального тиску, датчики серцевого ритму і інші периферійні пристрої. До них відносяться клавіатури, миші і смарт-карти. Неважливо, як ці пристрої підключаються до клієнта. Ці периферійні пристрої просто працюють в сеансах віртуального робочого столу, тому що базовий протокол забезпечує їх підтримку.

Тепер, що далі потрібно зробити на віртуальній машині, тут все до неподобства логічно, потрібно поставити там драйвера від AnywhereUSB і задати ip адресу пристрою. Як бачите я вже підключив її і у неї є внутрішній Ip адреса.


За допомогою спеціальної утиліти, Anywhere View можна перевірити доступність і зайнятість усіх пристроїв. Мабуть це самий простий і надійний метод проброса токенов, флешок і різних модемів в ваші віртуальні машини, самі пристрої коштують по різному, але якщо ви вже витратилися на софт і Гіпервізор, думаю при необхідності купіть і це :).

Також можливе використання технологій, що надаються виробником, які менш напружені в мережі. Віртуальний робочий стіл може не впоратися з великими затримками при доступі до цих пристроїв. Це, в свою чергу, призводить до помилок, таймаут та нестабільності.

Нестабільні віртуальні робочі столи називаються тими, де сеанс «видалений» при виході користувача з системи. Інформація з останнього сеансу не зберігається. Ця обставина вражає сервер і відповідні підсистеми. Для постійних віртуальних робочих столів користувачеві завжди призначається одна і та ж віртуальна машина при вході в систему.


На сьогоднішній день существет досить багато способів прокинути USB-пристрій на інший комп'ютер або виртуалку по мережі.
З найбільш популярних - железячние такі як AnywhereUSB і чисто програмні продукти, з тих що я спробував сам: USB Redirector і USB / IP.
Я б хотів розповісти вам ще про один цікавий спосіб, який працює безпосередньо з емулятором QEMU.
Він так само є частиною проекту spice, офіційно підтримуваним RedHat.

Деякі віртуалізовані настільні середовища підтримують сканери, які дозволяють створювати цифрові копії документів і фотографій. Вони можуть передаватися по мережі. Це робить його незалежним, чи є клієнт безпосередньо підключений до пристрою чи ні. Друк зробила величезний прогрес, але все одно проблема з віртуальними робочими столами. Одним з рішень є перенаправлення принтера. Він безпосередньо або побічно відображає принтер клієнта, а потім дублює його на сеанс віртуального робочого столу.

Як тільки користувачі друкують з їх віртуального робочого столу, завдання на друк передається клієнту і принтера. Це багато важелів, які приводяться в рух під час процесу друку, і, звичайно ж, деякі речі можуть піти не так. Драйвери принтера можуть легко відмовити в обслуговуванні, або служба диспетчера черги друку може відбутися збій на віртуальному сеансі клієнта або настільного комп'ютера. Ось сотні або тисячі драйверів в грі. Однак існує менш складна альтернатива.

UsbRedir, це відкритий протокол для проброса usb-пристроїв по tcp на віддалений віртуальний сервер, розроблений за підтримки RedHat в рамках проекту spice. Але як виявилося їм можна цілком успішно користуватися і без spice. У ролі сервера виступає usbredirserver, який нишпорить usb-пристрій на певний порт, а в якості клієнта сам QEMU, який емулює підключення експортованого usb-пристрої в певний usb-контролер вашої віртуальної машини. Завдяки такому підходу в якості гостьової системи може використовуватися абсолютно будь-яка ОС, так як вона навіть не знає, що пристрій є проброшенним віддалено, а вся логіка лягає на QEMU.

Додаткові міркування щодо периферійних пристроїв

Це замінює спеціальні драйвери для відповідних принтерів. Однак ці альтернативи також мають недоліки. Звичайно, вони не можуть підтримувати кожну функцію будь-якого доступного принтера. Якщо у принтера є функція, яку універсальний драйвер не може обійти, він просто непридатний. Перевага цього полягає в тому, що завдання на друк стискається і, таким чином, знижує навантаження на мережу. Багато пристроїв, які можуть використовуватися в якості віртуальних настільних клієнтів, мають екрани з декількома сенсорними екранами.

Для початку кілька слів про вишеперчісленних рішеннях

  • AnywhereUSB - досить непогане рішення, але дороге, і має неприємний глюки, наприклад буває якщо розшарений флешка відвалюється, то перепідключити її назад можна тільки фізично вийнявши і вставивши її.
  • USB / IP - OpenSource проект. Ніби як був покинутий. За фактом глючить досить сильно. При розриві з'єднання, машина частенько йде в цілковитий freezee, а windows показує BSOD
  • USB Redirector - Чудова софтіна. Для розшарювання пристроїв з linux на linux безкоштовна, у всіх інших випадках вже коштує грошей, не так багато як AnywhereUSB, але і не безкоштовно як хотілося б :)

Як видно є з чого вибрати, але давайте ж нарешті спробуємо ще один спосіб - UsbRedir?

Налаштування віртуальної машини

Для того що б було куди підключати експортовані пристрою, на віртуальній машині потрібно створити необхідні usb-контролери:

  • uhci - для USB1.0
  • ehci - для USB2.0
  • xhci - для USB3.0
Для qemu (без libvirt)

Додайте опції в команду запуску віртуальної машини:
-device ich9-usb-ehci1, id = ehci, addr = 1d.7, multifunction = on -device ich9-usb-uhci1, id = uhci1, addr = 1d.0, multifunction = on, masterbus = ehci.0 , firstport = 0 -device ich9-usb-uhci2, id = uhci2, addr = 1d.1, multifunction = on, masterbus = ehci.0, firstport = 2 -device ich9-usb-uhci3, id = uhci3 , addr = 1d.2, multifunction = on, masterbus = ehci.0, firstport = 4

для libvirt

У вихідному файлі конфігурації віртуальної машини в вузлі & ltdevices & gt видаляємо все USB контролери і додаємо следущий блок:

До речі, якщо ви використовуєте spice, то додавши до контролерів ще 3 спеціальних девайса, стане можливий кидок usb-пристроїв з клієнта spice на сервер.

Приклад під спойлером

для qemu

Додаємо наступні опції в команду запуску віртуальної машини, крім контролерів визначення нами раніше:
-chardev spicevmc, name = usbredir, id = usbredirchardev1 -device usbredir, chardev = usbredirchardev1, id = usbredirdev1, debug = 3 -chardev spicevmc, name = usbredir, id = usbredirchardev2 -device usbredir, chardev = usbredirchardev2, id = usbredirdev2, debug = 3 -chardev spicevmc, name = usbredir, id = usbredirchardev3 -device usbredir, chardev = usbredirchardev3, id = usbredirdev3, debug = 3

для libvirt

У вихідному файлі конфігурації віртуальної машини в вузлі & ltdevices & gt додаємо наступні опції, крім контролерів визначення нами раніше:

Тепер все готово для здійснення проброса.

запуск сервера

Пакет usbredirserver можна знайти в стандартних репозиторіях практично у всіх популярних дистрибутивах linux.

Вставляємо флешку в комп'ютер, дивимося висновок usb-пристроїв:
$ Lsusb ... Bus 003 Device 011: ID 125f: c82a A-DATA Technology Co., Ltd. ...

Бачимо що пара vendorid: prodid дорівнює 125f: c82a, а ядро ​​визначило флешці 003-001 usbbus-usbaddr відповідно.

Тепер давайте розшарено її на 4000 порт:

# Використовуючи пару vendorid: prodid $ usbredirserver -p 4000 125f: c82a # Використовуючи пару usbbus-usbaddr $ usbredirserver -p 4000 003-011

Підключення пристрою до віртуальної машини

Через опції при запуску ВМ

Пристрій яке потрібно підключити до ВМ можна вказати при запуску, додавши наступні опції в команду запуску

для qemu

-chardev socket, id = usbredirchardev1, port = 4000, host = 192.168.1.123 -device usb-redir, chardev = usbredirchardev1, id = usbredirdev1, bus = ehci.0, debug = 4

для libvirt

Цей блок рамещать перед тегом & lt / devices & gt, поруч з контролерами певними нами раніше:
Його так само можна виконати командою virsh attach-device

Або через qemu-monitor

Заходимо на гипервизор і в qemu-monitor нашої машини виконуємо наступні команди:
# Додаємо наш пристрій chardev-add socket, id = usbredirchardev1, port = 4000, host = 192.168.1.123 # підключити його в ehci контролер (USB-2.0) device_add usb-redir, chardev = usbredirchardev1, id = usbredirdev1, bus = ehci. 0, debug = 4
Що б відключити флешку досить такої команди:
device_del usbredirdev1

На цьому все, після даних кроків ваша ВМ побачить вашу флешку і зможе з нею нативної працювати.

Якщо пристроїв багато і всі вони однакові

Ось тут з'явилася цікава задача, як прокинути кілька однакових комплектуючих на різні ВМ?
При цьому, варто зазначити, всі пристрої мають однакову пару vendorid: prodid, а пара usbbus-usbaddr зовсім не постійна, варто тільки вийняти і вставити пристрій, так воно відразу змінить свій usbaddr.

Я вирішив її за допомогою udev.
До речі якщо ви не зовсім розумієте як працює udev, на Debian Wiki є класна

І так приступимо

Для початку нам треба дізнатися серійник нашого пристрою, за яким і будемо ідентифікувати його в udev:

Запустимо udev-монітор:
$ Udevadm monitor --environment --udev
І вставимо наш пристрій, після цього ми відразу побачимо список змінних цього пристрою які udev люб'язно Ініціалізувати для нас:
... UDEV add / devices / virtual / bdi / 8: 16 (bdi) ACTION = add DEVPATH = / devices / virtual / bdi / 8: 16 ID_SERIAL_SHORT = 11C130317234004B SEQNUM = 4352 SUBSYSTEM = bdi USEC_INITIALIZED = 189056149826 ...
Інформацію про серійний номер і інших аттрибутах можна отримати і іншим способом, але варто враховувати що для написання правил ми будемо використовувати саме змінні з команди вище, а не атрибути з команди нижче. В іншому разі не буде відпрацьовувати тригер remove при відключенні пристрою.
$ Udevadm info -a -n / dev / bus / usb / 003/011 | grep "{serial}"

Тепер создадаім файл /etc/udev/rules.d/99-usb-serial.rules і запишемо в нього такі правила:
ACTION == "add", ENV {ID_SERIAL_SHORT} = "11C130317234004B", RUN + = "/ usr / bin / usbredirserver -p 4000 $ attr {busnum} - $ attr {devnum}" ACTION == "remove", ENV {ID_SERIAL_SHORT } = "11C130317234004B", RUN + = "/ usr / bin / fuser -k 4000 / tcp"

Перезавантажити udev-правила:
$ Udevadm control --reload-rules
Готово, тепер при підключенні нашого пристрою, воно буде автоматично шарітся на потрібний нам порт, а при відключенні usbredirserver припинятиме свою роботу.
За аналогією додаємо і інші пристрої.

На цьому все. Дякую за проявлений інтерес:)

Новости