Nyalin USB/IP

Tugas nyambungkeun alat USB ka PC jauh liwat jaringan lokal rutin timbul. Dina cut, sajarah pilarian kuring di arah ieu diatur, sarta jalur ka solusi siap-dijieun dumasar kana hiji proyék open-source. USB/IP kalayan pedaran ngeunaan halangan sacara saksama diatur ku sagala rupa jalma dina jalur ieu, kitu ogé cara pikeun bypass aranjeunna.

Bagian kahiji, sajarah

Upami mesin virtual - sadayana ieu gampang. Pungsi USB diteruskeun tina host ka mesin virtual muncul dina VMWare 4.1. Tapi dina hal kuring, konci kaamanan, anu dikenal salaku WIBU-KEY, kedah dihubungkeun dina waktos anu béda-béda ka mesin anu béda, sanés ngan ukur virtual.
Babak kahiji pilarian dina jauh 2009 ngarah kuring ka sapotong beusi disebut TrendNet TU2-NU4
pro:

  • sakapeung malah jalan

kontra:

  • teu salawasna jalan. Anggap konci panyalindungan Guardant Stealth II teu ngamimitian ngaliwatan eta, swearing kalawan kasalahan "alat teu bisa dimimitian".
  • software manajemén (baca - ningkatna tur unmounting alat USB) nyaeta pathetic ka ekstrim. Saklar garis paréntah, automation - henteu, teu acan uninga. Sagalana ngan ku leungeun. Ngimpina.
  • software kontrol neangan potongan beusi sorangan dina jaringan ku siaran, jadi ieu ngan jalan dina hiji bagean jaringan siaran. Anjeun teu bisa nangtukeun alamat IP tina sapotong beusi ku leungeun. Sapotong beusi dina subnet séjén? Teras anjeun gaduh masalah.
  • pamekar ngoleksi dina alat, teu aya gunana pikeun ngirim laporan bug.

Babak kadua kajantenan dina waktos anu teu jauh, sareng nyababkeun kuring kana topik tulisan - proyék USB/IP. Mikat kalawan openness, utamana saprak guys ti Misalna aranjeunna nandatanganan supir pikeun Windows, jadi ayeuna sagalana jalan sanajan dina x64 tanpa crutches kawas mode test. Anu seueur hatur nuhun ka tim ReactOS! Sagalana disada éndah, hayu urang coba ngarasakeun eta, bener kitu? Hanjakalna, proyék éta sorangan ogé ditinggalkeun, sareng anjeun henteu tiasa ngandelkeun dukungan - tapi dimana milik kami henteu ngaleungit, sumberna aya, kami bakal terang!

Bagian kadua, server-linux

Pangladén USB/IP anu ngabagi alat USB dina jaringan ngan ukur tiasa disetél dina OS berbasis Linux. Nya, Linux nyaéta Linux, janten pasang dina mesin virtual Debian 8 dina konfigurasi minimum, gerakan leungeun standar:

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

Mapan. Salajengna, Internét nunjukkeun yén anjeun kedah ngaunduh modul usbip, tapi - halo, rake munggaran. Henteu aya modul sapertos kitu. Sarta sakabeh sabab lolobana manual dina jaringan nujul kana cabang heubeul 0.1.x, sarta dina panganyarna 0.2.0 modul usbip boga ngaran béda.

Ku sabab eta:

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

Nya, hayu urang tambahkeun garis-garis ieu kana /etc/modules pikeun ngamuat sacara otomatis dina ngamimitian sistem:

usbip-core
usbip-host
vhci-hcd

Hayu urang ngamimitian server usbip:

sudo usbipd -D

Salajengna, pikiran universal nyarioskeun ka urang yén usbip hadir sareng skrip anu ngamungkinkeun urang pikeun ngatur server - nunjukkeun alat mana anu bakal dibagikeun dina jaringan, ningali status, sareng saterasna. Di dieu alat taman sejen awaits kami - Aksara ieu dina cabang 0.2.x, deui, geus diganti. Anjeun tiasa nampi daptar paréntah sareng

sudo usbip

Saatos maca pedaran paréntah, janten jelas yén pikeun ngabagikeun alat USB anu diperyogikeun, usbip hoyong terang ID Bus na. Pamirsa anu hormat, rake nomer tilu aya dina arena: ID Bus anu bakal masihan kami lsusb (éta sigana cara anu paling atra) - éta henteu cocog sareng anjeunna! Kanyataanna nyaéta usbip teu malire hardware sapertos hub USB. Ku alatan éta, urang bakal ngagunakeun paréntah diwangun-di:

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

Catetan: salajengna dina daptar kuring bakal ngajelaskeun sadayana nganggo conto konci USB khusus kuring. Ngaran hardware anjeun sareng pasangan VID:PID tiasa sareng bakal béda. Tambang disebut Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.

Ayeuna urang tiasa ngabagi alat urang:

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

Horeeee, sobat!

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)

Tilu surak, sobat! server dibagikeun potongan beusi ngaliwatan jaringan, tur urang tiasa nyambungkeun eta! Tetep ngan pikeun nambahkeun autostart daemon usbip ka /etc/rc.local

usbipd -D

Bagian katilu, sisi klien sareng ngabingungkeun

Kuring nyobian nyambungkeun alat anu dibagikeun dina jaringan ka mesin Debian langsung dina server anu sami, sareng sadayana nyambungkeun:

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

Hayu urang ngaléngkah ka Windows. Bisi kuring éta Windows Server 2008R2 Standard Edition. Pituduh resmi naroskeun anjeun masang supir heula. Prosedur ieu sampurna dijelaskeun dina readme napel klien windows, urang ngalakukeun sagalana sakumaha geus ditulis, sagalana jalan kaluar. Dina XP ogé jalan tanpa masalah.

Saatos unpacking klien, urang coba mun Gunung konci kami:

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

oh oh. Aya nu lepat. Kami nganggo kaahlian Google. Aya nyebatkeun fragméntasi yén aya anu salah dina konstanta; dina bagian server, pamekar ngarobih versi protokol nalika ngalih ka versi 0.2.0, tapi aranjeunna hilap ngalakukeun ieu dina klien Win. Solusi anu diusulkeun nyaéta ngarobih konstanta dina kode sumber sareng ngawangun deui klien.

Tapi kuring henteu hoyong unduh Visual Studio demi prosedur ieu. Tapi kuring boga Hiew heubeul alus. Dina kode sumber, konstanta dinyatakeun salaku kecap ganda. Hayu urang tingali dina file 0x00000106, ngagentos ku 0x00000111. Inget, urutan bait dibalikkeun. Hasilna aya dua patandingan, patch:

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

Eeeee... enya!

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

Ieu bisa geus réngsé presentasi, tapi musik teu maén keur lila. Saatos rebooting server, Kuring manggihan yén alat dina klien nu teu dipasang!

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

Sareng éta. Malah sadaya-nyaho Google teu bisa ngajawab ieu keur kuring. Sareng dina waktos anu sami, paréntah pikeun nunjukkeun alat-alat anu sayogi dina server leres-leres nunjukkeun - ieu mangrupikeun konci, anjeun tiasa pasang. Kuring nyobian dipasang ti handapeun Linux - éta tiasa dianggo! Sareng upami ayeuna cobian tina handapeun Windows? Oh sial - éta jalan!

The rake panungtungan: hal teu ditambahkeun dina kode server. Nalika ngabagikeun alat, éta henteu maca jumlah deskriptor USB tina éta. Sareng nalika masang alat tina handapeun Linux, lapangan ieu dieusi. Hanjakalna, kuring wawuh sareng pamekaran dina Linux dina tingkat "make && make install". Ku alatan éta, masalah ieu direngsekeun ku Hack rada kotor - nambahkeun kana /etc/rc.local

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

Bagian ahir

Saatos sababaraha rebab, éta jalan. Hasil anu dipikahoyong parantos dicandak, ayeuna koncina tiasa dipasang ka PC mana waé (sareng unmounted, tangtosna, ogé), kalebet anu di luar bagéan jaringan siaran. Upami anjeun hoyong, anjeun tiasa ngalakukeun éta nganggo skrip cangkang. Naon anu saé - kasenangan leres pisan gratis.
Kuring miharep éta pangalaman abdi bakal nulungan habrazhiteli ka meunang sabudeureun rake nu imprinted on dahi kuring. Nuhun kana perhatosanana!

sumber: www.habr.com

Tambahkeun komentar