Taming USB/IP

Travay la konekte yon aparèy USB ak yon PC aleka atravè yon rezo lokal regilyèman rive. Anba koupe a se istwa rechèch mwen an nan direksyon sa a, ak chemen an nan yon solisyon pare-fè ki baze sou yon pwojè sous louvri. USB/IP ak yon deskripsyon nan obstak yo ak anpil atansyon enstale pa divès moun sou chemen sa a, osi byen ke fason yo kontourne yo.

Premye pati, istorik

Si machin nan se vityèl, tout bagay sa a se fasil. Fonksyonalite USB voye soti nan lame a nan machin vityèl la parèt nan VMWare 4.1. Men, nan ka mwen an, kle sekirite a, idantifye kòm WIBU-KEY, te dwe konekte ak machin diferan nan diferan moman, epi yo pa sèlman moun ki vityèl.
Premye tou nan rechèch tounen nan 2009 te mennen m 'nan yon moso pyès ki nan konpitè yo rele TrendNet TU2-NU4
Pou:

  • pafwa li menm travay

Kont:

  • pa toujou travay. Ann di kle pwoteksyon Guardant Stealth II la pa kòmanse atravè li, sèmante ak erè "aparèy la pa ka kòmanse."
  • Lojisyèl pou jere (li: monte ak demonte aparèy USB) trè pòv. Bouton liy kòmand, automatisation - non, nou pa tande. Tout bagay fèt ak men ou. Kochma.
  • Lojisyèl kontwòl la chèche pyès ki nan konpitè tèt li sou rezo a pa difize, kidonk li travay sèlman nan yon segman emisyon rezo a. Ou pa ka presize adrès IP pyès ki nan konpitè a manyèlman. Èske pyès pyès ki nan konpitè sou yon lòt sous-rezo? Lè sa a, ou gen yon pwoblèm.
  • Devlopè yo te bay moute sou aparèy la, voye rapò ensèk se initil.

Dezyèm tou a te rive nan yon tan ki pa tèlman lwen, epi li mennen m 'nan sijè a nan atik la - USB/IP pwojè. Atire ak ouvèti li yo, espesyalman depi mesye yo soti nan ReactOS Yo te siyen yon chofè pou Windows, kidonk kounye a menm sou x64 tout bagay ap travay san okenn beki tankou mòd tès. Pou sa anpil mèsi ak ekip ReactOS la! Tout bagay son bèl, ann eseye santi li, èske li vrèman konsa? Malerezman, pwojè a li menm tou abandone, epi ou pa ka konte sou sipò - men kote pa nou an pa te disparèt, kòd sous la la, nou pral kalkile li!

Pati de, sèvè-Linux

Yon sèvè USB/IP ki pataje aparèy USB sou yon rezo kapab sèlman enstale nan yon OS ki baze sou Linux. Oke, Linux se Linux, enstale Debian 8 sou machin vityèl la nan yon konfigirasyon minim, mouvman men estanda:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install usbip

Etabli. Lè sa a, entènèt la sijere ke ou bezwen telechaje modil la usbip, men - alo, premye rato. Pa gen okenn modil sa yo. Sa a se paske pi fò nan manyèl yo sou rezo a refere a branch ki pi gran 0.1.x, ak nan dènye 0.2.0 modil usbip yo gen non diferan.

Se poutèt sa:

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo lsmod | grep usbip

Oke, ann ajoute liy sa yo nan /etc/modules pou chaje yo otomatikman lè sistèm lan kòmanse:

usbip-core
usbip-host
vhci-hcd

Ann kòmanse sèvè usbip la:

sudo usbipd -D

Anplis de sa, bon konprann inivèsèl la di nou ke usbip vini ak scripts ki pèmèt nou jere sèvè a - montre ki aparèy li pral pataje sou rezo a, wè estati a, ak sou sa. Isit la yon lòt zouti jaden ap tann nou - scripts sa yo nan branch 0.2.x la, ankò, yo te chanje non. Ou ka jwenn yon lis kòmandman lè l sèvi avèk

sudo usbip

Apre ou fin li deskripsyon kòmandman yo, li vin klè ke yo nan lòd yo pataje aparèy USB ki nesesè yo, usbip vle chèche ID otobis li yo. Chè telespektatè, rato nimewo twa nan tèren an: Didantite otobis la ki pral ban nou lsusb (li ta sanble fason ki pi evidan) - pa kostim li! Reyalite a se ke usbip inyore pyès ki nan konpitè tankou sant USB. Se poutèt sa, nou pral sèvi ak kòmandman an entegre:

user@usb-server:~$ sudo usbip list -l
 - busid 1-1 (064f:0bd7)
   WIBU-Systems AG : BOX/U (064f:0bd7)

Remak: isit la ak pi lwen nan lis yo mwen pral dekri tout bagay lè l sèvi avèk egzanp lan nan kle USB espesifik mwen an. Non pyès ki nan konpitè ou ak pè VID:PID ka diferan epi yo pral diferan. Mwen rele Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.

Koulye a, nou ka pataje aparèy nou an:

user@usb-server:~$ sudo usbip bind --busid=1-1
usbip: info: bind device on busid 1-1: complete

Hurray, kanmarad!

user@usb-server:~$ sudo usbip list -r localhost
Exportable USB devices
======================
 - localhost
        1-1: WIBU-Systems AG : BOX/U (064f:0bd7)
           : /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb1/1-1
           : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)

Twa bravo, kanmarad! Sèvè a pataje pyès ki nan konpitè sou rezo a, epi nou ka konekte li! Tout sa ki rete se ajoute autostart nan demon usbip la nan /etc/rc.local

usbipd -D

Pati twa, kliyan-bò ak konfizyon

Mwen te eseye imedyatman konekte aparèy la pataje sou rezo a nan yon machin ki kouri Debian sou menm sèvè a, ak tout bagay konekte parfe:

sudo usbip attach --remote=localhost --busid=1-1

Ann ale nan Windows. Nan ka mwen an se te Windows Server 2008R2 Standard Edition. Manyèl ofisyèl la mande w enstale chofè a an premye. Pwosedi a parfe dekri nan readme ki enkli ak kliyan Windows la, nou fè tout bagay jan sa ekri, tout bagay ap mache. Li travay tou sou XP san okenn difikilte.

Lè nou fin depake kliyan an, nou eseye monte kle nou an:

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip_windows.c: 756 (query_interface0) recv op_common
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

O oh. Yon bagay ale mal. Ann sèvi ak konpetans Google la. Gen mansyone fragman ke yon bagay ki mal ak konstan yo nan pati nan sèvè, devlopè yo chanje vèsyon an pwotokòl lè yo deplase nan vèsyon 0.2.0, men nan kliyan an Win yo bliye fè sa. Solisyon yo pwopoze a se chanje konstan nan kòd sous la ak rebati kliyan an.

Men, mwen reyèlman pa vle telechaje Visual Studio pou pwosedi sa a. Men, mwen gen bon ansyen Hiew la. Nan kòd sous la, konstan an deklare kòm yon mo doub. Ann chèche 0x00000106 nan dosye a, ranplase li ak 0x00000111. Pa bliye, lòd la byte se ranvèse. Rezilta a se de match, nou patch:

[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11

Aaaand... wi!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
new usb device attached to usbvbus port 1

Sa a te kapab nan fen istwa a, men mizik la pa t jwe pou lontan. Apre rdemare sèvè a, mwen dekouvri ke aparèy la sou kliyan an pa te monte!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Se tout. Menm Google tout konnen an pa t 'kapab reponn sa a pou mwen. Ak an menm tan an, lòd la montre aparèy ki disponib sou sèvè a byen kòrèkteman montre - isit la li se, kle a, ou ka monte li. Mwen eseye monte soti nan Linux - li travay! E si nou eseye kounye a soti nan Windows? Oh laterè - li travay!

Dènye rato a: yon bagay pa te ekri nan kòd sèvè a. Lè pataje yon aparèy, li pa li kantite deskriptè USB ki soti nan li. Epi lè w ap monte yon aparèy soti nan Linux, jaden sa a ranpli. Malerezman, mwen abitye ak devlopman pou Linux nan nivo "fè & & fè enstale". Se poutèt sa, pwoblèm nan te rezoud lè l sèvi avèk yon Hack olye sal - ajoute nan /etc/rc.local

usbip attach --remote=localhost --busid=1-1
usbip port
usbip detach --port=00

Pati final la

Apre kèk eprèv, li travay. Te vle a te reyalize, kounye a kle a ka monte nan nenpòt PC (ak demonte, nan kou, tou), ki gen ladan deyò segman nan emisyon nan rezo a. Si ou vle, ou ka fè sa lè l sèvi avèk yon script shell lòd. Ki sa ki bèl se ke plezi a se absoliman gratis.
Mwen espere ke eksperyans mwen pral ede entru yo jwenn alantou rato a ki anprint sou fwon mwen an. Mèsi pou atansyon ou!

Sous: www.habr.com

Add nouvo kòmantè