USB doorsturen via het netwerk met minimale latentie. Een stuk ijzer over het netwerk. We sturen USB-apparaten, een videokaart, zvukovuha en schijven door naar een externe machine. Usb Newtork Gate installeren

Een zeer krachtig hulpmiddel in de juiste handen. Om verschillende technische redenen heeft de virtuele machine standaard geen directe toegang tot de USB-drive. In dit artikel zoeken we uit hoe je een USB-stick kunt doorsturen naar: virtuele machine Hyper-V. De implementatie van het idee zal eenvoudig zijn, zou je kunnen zeggen, in twee klikken. Geen extra programma's, zoals de "goeroes" van de bank soms adviseren, zijn niet nodig, we gebruiken onze eigen handen en niets meer.

BELANGRIJK. We zullen geen verwijderbare, dat wil zeggen verwijderbare apparaten in de VM kunnen invoegen, hoewel er in dit opzicht enkele trucs zijn, maar daar hebben we het nu niet over. Ons algoritme werkt alleen voor USB, die worden weergegeven als vast. We kunnen geen momentopname maken voor dergelijke schijven.

Aan de slag met manipulaties


BELANGRIJK. Het is helemaal niet nodig om de VM uit te schakelen voordat u deze toevoegt harde schijf... Hiervoor is er een speciale hot add en hot remove technologie.

  1. We maken verbinding met de VM via rdp of openen gewoon de console. We gaan naar schijfbeheer. Als de nieuwe er is, doen we alles goed. We kijken of hij online is. Zo niet, dan repareren we het, zoals eerder, door het contextmenu op te roepen. Onze partities hebben geen koppelpunten en letters, we moeten dit oplossen. Klik op een van de secties klik met de rechtermuisknop en selecteer het item "Wijzig stationsletter of pad ernaar ...". We kiezen een gratis.

USB naar virtueel doorsturen Hyper-V-machine klaar, nu kunnen we het voor onze eigen doeleinden gebruiken.

Tegenwoordig zijn er nogal wat manieren om een ​​USB-apparaat via het netwerk naar een andere computer of virtuele machine door te sturen.
De meest populaire zijn hardwareproducten zoals AnywhereUSB en puur softwareproducten, waarvan ik zelf heb geprobeerd: USB Redirector en USB/IP.
Ik wil je graag vertellen over een andere interessante manier die rechtstreeks werkt met de QEMU-emulator.
Het maakt ook deel uit van het kruidenproject dat officieel wordt onderhouden door RedHat.

UsbRedir, dit open protocol voor het doorsturen van usb-apparaten via tcp naar een afstandsbediening virtuele server ontwikkeld met de steun van RedHat als onderdeel van het kruidenproject. Maar zoals later bleek, kan het vrij succesvol worden gebruikt zonder kruiden. De server is usbredirserver, die het usb-apparaat op een specifieke poort rommelt, en de client is QEMU zelf, die de verbinding van het geëxporteerde usb-apparaat met een specifieke usb-controller van uw virtuele machine emuleert. Dankzij deze aanpak kan absoluut elk besturingssysteem als gastsysteem worden gebruikt, omdat het niet eens weet dat het apparaat op afstand wordt doorgestuurd en alle logica bij QEMU ligt.

Eerst een paar woorden over de bovenstaande oplossingen

  • AnywhereUSB - mooi geen slechte oplossing, maar duur, en heeft onaangename storingen, het gebeurt bijvoorbeeld als een gedeelde flashdrive uitvalt, dan kunt u deze alleen opnieuw aansluiten door deze fysiek te verwijderen en terug te plaatsen.
  • USB / IP - OpenSource-project. Het lijkt alsof het verlaten is. In feite is het behoorlijk buggy. Wanneer de verbinding wordt verbroken, gaat de machine vaak volledig vast en geeft Windows BSOD weer
  • USB Redirector - Geweldige software. Voor het delen van apparaten van linux naar linux is het gratis, in alle andere gevallen kost het al geld, niet zoveel als AnywhereUSB, maar niet gratis als we zouden willen :)
Zoals je kunt zien, is er genoeg om uit te kiezen, maar laten we het eindelijk eens op een andere manier proberen - UsbRedir?

Een virtuele machine instellen

Om te weten waar u de geëxporteerde apparaten kunt aansluiten, moet u de benodigde USB-controllers op de virtuele machine maken:

  • uhci - voor USB1.0
  • ehci - voor USB2.0
  • xhci - voor USB3.0
Voor qemu (geen libvirt)

Voeg opties toe aan de opdracht om de virtuele machine te starten:
-apparaat ich9-usb-ehci1, id = ehci, addr = 1d.7, multifunctioneel = aan -apparaat ich9-usb-uhci1, id = uhci-1, addr = 1d.0, multifunctioneel = aan, masterbus = ehci.0 , firstport = 0 -apparaat ich9-usb-uhci2, id = uhci-2, addr = 1d.1, multifunctioneel = aan, masterbus = ehci.0, firstport = 2-apparaat ich9-usb-uhci3, id = uhci-3 , addr = 1d.2, multifunctioneel = aan, masterbus = ehci.0, eerste poort = 4

Voor libvirt
V bron bestand configuraties van virtuele machines op host & ltdevices & gt verwijder alle USB-controllers en voeg het volgende blok toe:

Trouwens, als je Spice gebruikt, dan is het door nog 3 speciale apparaten aan de controllers toe te voegen, mogelijk om USB-apparaten door te sturen van de Spice-client naar de server.

Voorbeeld onder de spoiler

voor qemu
We voegen de volgende opties toe aan de opdracht om de virtuele machine te starten, naast de controllers die we eerder hebben gedefinieerd:
-chardev spicevmc, naam = usbredir, id = usbredirchardev1 -apparaat usb-redir, chardev = usbredirchardev1, id = usbredirdev1, debug = 3 -chardev spicevmc, naam = usbredir, id = usbredirchardev2 -apparaat usb-redir, bredirdev2 = debug chardev2 = = 3 -chardev spicevmc, naam = usbredir, id = usbredirchardev3 -apparaat usb-redir, chardev = usbredirchardev3, id = usbredirdev3, debug = 3
Voor libvirt
Voeg in het originele configuratiebestand van de virtuele machine in het & ltdevices & gt-knooppunt de volgende opties toe, naast de controllers die we eerder hebben gedefinieerd:

Nu is alles klaar voor verzending.

Server starten

Het usbredirserver-pakket is te vinden in de standaard repositories in bijna alle populaire distributies linux.

We plaatsen de USB-stick in de computer, kijken naar de uitvoer van USB-apparaten:
$ lsusb ... Bus 003 Apparaat 011: ID 125f: c82a A-DATA Technology Co., Ltd. ...

We zien dat het paar vendorid: prodid gelijk is aan 125f:c82a, en de kernel heeft respectievelijk de 003-001 usbbus-usbaddr-flashdrive geïdentificeerd.

Laten we het nu delen op poort 4000:

# Gebruik het paar vendorid: prodid $ usbredirserver -p 4000 125f: c82a # Gebruik het paar usbbus-usbaddr $ usbredirserver -p 4000 003-011

Een apparaat verbinden met een virtuele machine

Via opties bij het starten van VM

Het apparaat dat met de VM moet worden verbonden, kan bij het opstarten worden opgegeven door de volgende opties aan de opstartopdracht toe te voegen:

voor qemu
-chardev socket, id = usbredirchardev1, poort = 4000, host = 192.168.1.123 -apparaat usb-redir, chardev = usbredirchardev1, id = usbredirdev1, bus = ehci.0, debug = 4
Voor libvirt
Dit blok wordt voor de tag geplaatst & lt / apparaten & gt naast de controllers die we eerder hebben gedefinieerd:
Het kan ook worden uitgevoerd met het commando virsh bijlage-apparaat

Of via qemu-monitor

We gaan naar de hypervisor en voeren in de qemu-monitor van onze machine de volgende commando's uit:
# Voeg ons apparaat toe chardev-add socket, id = usbredirchardev1, port = 4000, host = 192.168.1.123 # Sluit het aan op de ehci-controller (USB-2.0) device_add usb-redir, chardev = usbredirchardev1, id = usbredirdev1, bus = ehci 0, foutopsporing = 4
Om de USB-stick uit te schakelen, volstaat de volgende opdracht:
device_del usbredirdev1

Dat is alles, na deze stappen zal uw VM uw USB-flashstation zien en er native mee kunnen werken.

Als er veel apparaten zijn en ze zijn allemaal hetzelfde

Dit is waar een interessante taak verscheen, hoe meerdere identieke apparaten door te sturen naar verschillende VM's?
Tegelijkertijd is het vermeldenswaard dat alle apparaten hetzelfde vendor-id hebben: prodid-paar, en het usbbus-usbaddr-paar is helemaal niet constant, zodra u het apparaat verwijdert en plaatst, verandert het onmiddellijk zijn usbaddr.

Ik heb het opgelost met udev.
Trouwens, als je niet helemaal begrijpt hoe udev werkt, heeft de Debian Wiki een coole

En laten we beginnen

Eerst moeten we het serienummer van ons apparaat achterhalen, waarmee we het in udev zullen identificeren:

Laten we de udev-monitor starten:
$ udevadm monitor --environment --udev
En plaats ons apparaat, daarna zien we meteen een lijst met variabelen voor dit apparaat die udev zo vriendelijk voor ons heeft geïnitialiseerd:
... UDEV toevoegen / apparaten / virtueel / bdi / 8: 16 (bdi) ACTIE = toevoegen DEVPATH = / apparaten / virtueel / bdi / 8: 16 ID_SERIAL_SHORT = 11C130317234004B SEQNUM = 4352 SUBSYSTEEM = bdi USEC_INITIALIZED = 189056149826 ...
Informatie over het serienummer en andere attributen kan op een andere manier worden verkregen, maar houd er rekening mee dat we voor het schrijven van de regels precies de variabelen uit het bovenstaande commando zullen gebruiken, en niet de attributen uit het onderstaande commando. V anders zal de verwijdertrigger niet activeren wanneer het apparaat is losgekoppeld.
$ udevadm info -a -n / dev / bus / usb / 003/011 | grep "(serie)"

Laten we nu een bestand /etc/udev/rules.d/99-usb-serial.rules maken en de volgende regels erin schrijven:
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-regels opnieuw laden:
$ udevadm control --reload-rules
Klaar, als we nu ons apparaat aansluiten, zal het automatisch zoeken naar de poort die we nodig hebben, en wanneer de verbinding wordt verbroken, zal de usbredirserver stoppen met werken.
Voeg naar analogie andere apparaten toe.

Dat is alles. Bedankt voor je interesse:)

Een van de bloglezers, Vovets666, probeerde de gratis USBIP-software en stelde voor om er een artikel over te schrijven.

Vrijwaring:
alles wat hieronder wordt beschreven is mijn persoonlijke visie op het probleem en hoe het op te lossen, wat niet de ultieme waarheid is. Het is heel goed mogelijk dat er andere opties zijn, ik hoor ze met plezier. Als instructie voor het werken met de software is gebruik gemaakt van op internet gevonden materiaal, ik weet niet eens meer waar... Daarnaast ken ik, als Windows-beheerder, Linux nogal oppervlakkig, werkte ik onder deadlines en was er een veel tijd om materiaal te bestuderen / dansen met tamboerijnen deed dat niet, dus ik beschrijf hoe ik het heb gedaan om het te laten werken, en ik weet zeker dat er andere manieren zijn.

We hebben dus virtuele machines - 1C-servers, gemaakt op MSWindowsServer 2008R2. Om de software te laten werken, zijn de HASP-serversleutels die ermee verbonden zijn, vereist. Zoals u weet, kunt u ze niet rechtstreeks verbinden met een VM op Hyper-V. Taak: op de een of andere manier HASP-sleutels doorsturen naar virtuele machines, bij voorkeur met een minimum aan extra hardware en de kosten van licenties.

(Offtopic: voor 1C in recente tijden de mogelijkheid van softwarelicenties van software verscheen, zonder gebruik te maken van HASP-sleutels (zoiets als activering met pincodes). Maar er zijn nuances: de inwisseling voor een licentie met software-activering is niet gratis, wanneer de configuratie van de machine wordt gewijzigd, is reactivering vereist, na een bepaalde limiet blijft de activeringstoestemming naar goeddunken van technische ondersteuning, wat geen ijs is helemaal niet. Daarom werd besloten om gebruik te maken van oude weg met HASP-sleutels).

Opties werden overwogen:

Methode geleverd door Microsoft (zij het voor andere doeleinden):
RemoteFX + RDP7.1. Ik heb om redenen niet gewerkt: er is apparatuur met RemoteFX-ondersteuning nodig, er moeten extra services op de 1C-server (remote desktop access-service) worden geplaatst, de RDP-sessie moet constant van de host naar de virtuele machine blijven hangen, waardoor de sleutel wordt doorgestuurd, is een clientlicentie vereist voor toegang tot RDS ... Misschien vergis ik me in een van de items op deze lijst, maar het totale aantal heeft de methode in de kiem gehackt.

Hardware-apparaten externe fabrikanten... Nadelen: ze kosten geld, bovendien hadden sommige apparaten problemen met de compatibiliteit met de gebruikte besturingssystemen (bijvoorbeeld de Ubox 4100, die we hebben) en die de fabrikant niet ging oplossen. Nu lijken de problemen opgelost (in andere modellen), maar het sediment bleef.

Derde partij software. Nadelen: Vereist: een aparte machine om op te treden als een USB-apparaatserver en worden meestal betaald. Na zoeken
van acceptabele software bleek dat van alle gevonden software alleen het USBIP-pakket gratis is voor commercieel gebruik. Hij stopte ermee.

De installatie en configuratie van de software zelf veroorzaakte geen grote problemen; het pakket bevatte een korte handleiding, plus internet.

Het USBIP ()-pakket vereist 2 geconfigureerde machines om te werken: een server (de sleutel is er rechtstreeks mee verbonden) en een client (deze sleutel wordt ernaar doorgestuurd). Server
een deel van USBIP bestaat alleen onder Linux, clientgedeelte - onder Linux en Windows (inclusief 7 en 2008R2).

1) De server installeren (de machine waarop het USB-apparaat is aangesloten).

We gebruiken een Linux-machine als server. Ik gebruikte Linux Ubuntu v.11.04 (Lubuntu-assembly, die wordt verklaard als de minst veeleisende) als het meest eenvoudige (voor mij) systeem: het wordt zonder problemen geïnstalleerd, het sluit automatisch nieuwe plug-in USB-apparaten aan, na installatie ze zijn standaard geïnstalleerd noodzakelijke componenten bovendien is USBIP aanwezig in de repository. Om op hardware te besparen, is deze machine als virtuele machine gemaakt, op een bestaande ESXi 4.1-host geplaatst en op zijn beurt ernaar doorgestuurd HASP-sleutel vanaf de host met behulp van de standaard ESXi-methode.

De installatie leverde geen problemen op: we installeren het systeem, verbinden het met het netwerk, geven een IP uit, installeren USBIP en de componenten die nodig zijn voor de werking via de pakketbeheerder. Daarnaast zijn er VMware-tools geïnstalleerd (aangezien deze machine een VM op ESXi is).

Voor het geval dat, laat me je eraan herinneren hoe dit wordt gedaan:

Verbind de schijf vanuit de VMware-module met de software (Inventory -> Virtuele machine-> Gast -> VMware Tools installeren / upgraden). Vanaf deze schijf pakken we het archief met de software uit naar de desktop. We starten de terminal en typen erin:

@: ~ $ sudo \ vmware-install.pl -default

2) Server afstemmenUSBsleutels.

We lanceren de terminal. Verdere acties- van opdrachtregel.

· Laad de volgende modules.

@:~$ sudo modprobe usbip

@:~$ sudo modprobe usbip_common_mod

Voer usbip uit als een systeemdaemon:

@:~$ sudo usbipd - NS

we krijgen:

Bind usbip.ko aan een usb-apparaat om exporteerbaar te zijn!

Aandacht! U moet eerst de daemon starten en pas daarna de apparaten aansluiten, anders kunnen er fouten optreden op de client bij het verbinden. (zie notities)

Om de aangesloten USB-apparaten te bekijken, voert u de opdracht uit:

@:~$ lsusb

we krijgen een lijst met aangesloten USB-apparaten met hun identifiers van de vorm:

Bus XXX Apparaat YYY: ID VendorID: DeviceID titel apparaten>

zoiets als:

Bus 002 Apparaat 004: ID 0529: 0001 Aladdin Knowledge Systems HASP v0.06

Bus 002 Apparaat 003: ID 0e0f: 0002 VMware, Inc. Virtuele USB-hub

Bus 001 Apparaat 001: ID 1d6b: 0002 Linux Foundation 2.0 root-hub

Onthoud de combinatie VendorID: DeviceID

We voeren het commando uit:

@:~$ sudo usbip_bind_driver -list

USBIP controleert de lijst met aangesloten apparatuur en geeft deze als volgt weer met hun bus-ID:

- bezet 2-1 (0529: 0001)

2-1: 1.0 -> geen

- busid 2-2 (0e0f: 0002)

2-2: 1.0 -> naaf

……..

In dit geval is de bus-ID die het USB-apparaat aangeeft dat we nodig hebben "2-1".

· Nu verbinden we het apparaat met de server. Wij typen:

@::~$ sudo usbip_bind_driver -usbip 2-1

we krijgen:

** (proces: 1483): DEBUG: 2-1: 1.0 -> geen

** (proces: 1483): DEBUG: schrijf "add 2-1" naar / sys / bus / usb / drivers / usbip / match_busid

** Bericht: bind 2-1 aan usbip, compleet!

Het apparaat is verbonden met USBIP, de toegang vanaf de lokale servermachine gaat verloren.

U kunt ook zien welke apparaten zijn aangesloten op USBIP in dit moment... Om dit te doen, typen we:

@:~$ sudo usbip_bind_driver -list

We krijgen:

- bezet 2-1 (0529: 0001)

2-1: 1.0 -> usbip

- busid 2-2 (0e0f: 0002)

2-2: 1.0 -> naaf

Een apparaat met bus-ID 2-1 is aangesloten op USBIP. Het systeem kan gegevens over dit USB-apparaat van uw systeem naar externe clients verzenden.

De serverconfiguratie is voltooid. Indien nodig kunt u toevoegen en verwijderen
geëxporteerde apparaten.

OptiesUSBIP - linuxserver Gebruik: usbip_bind_driver

- ?, -helpen telefoongesprek
verwijzing
-usbip bezig een apparaat exporteerbaar maken
-andere bezigheden een apparaat gebruiken door een local
bestuurder
-lijst print usb-apparaten en hun
chauffeurs
-lijst2 print usb-apparaten en hun
stuurprogramma's in parseerbare modus
-allusbip alle apparaten exporteerbaar maken

3) MS Windows-clientinstellingen

· Download de distributiekit. We hebben beide versies nodig - 0.1 en 0.2.

· Installeer USB / IPEnumenator. Het is ingesteld om willekeurig te zijn systeemapparaat met stuurprogramma's op schijf. We nemen de driver uit de 0.2-distributiekit:

Voor Windows XP:

1. Pak de bestanden uit in een lokale map.

2. Klik in het Configuratiescherm op "Hardware-installatie", klik in het geopende welkomstvenster van de wizard op "Volgende".

3. Selecteer "Ja, het apparaat is al verbonden" -> "Volgende".

4. Selecteer "Nieuw apparaat toevoegen" -> "Volgende".

5. Selecteer "Hardware handmatig uit de lijst installeren" -> "Volgende".

7. Selecteer "Installeer vanaf schijf" -> "Bekijken", selecteer de map met het uitgepakte stuurprogramma -> "OK".

9. "De wizard is klaar om nieuwe hardware te installeren" -> Selecteer "Volgende" -> Voltooien ".

Voor Windows 7 (en 2008r2):

1. Installatie inschakelen: niet-ondertekende chauffeurs: voer cmd uit van
administrator en voer "bcdedit / settestsigningon" uit.

2. Pak de bestanden uit in een lokale map ..

3. Open "Apparaatbeheer".

4. Klik met de rechtermuisknop op "computernaam" - "Installeer oud apparaat" (of selecteer "Actie" in het menu).

5. Klik in het welkomstvenster van de wizard dat wordt geopend op "Volgende".

6. Selecteer "Apparatuur handmatig uit de lijst installeren" -> "Volgende".

8. Selecteer "Installeer vanaf schijf" -> "Bekijken", selecteer de map met het uitgepakte stuurprogramma -> "OK".

10. "De wizard is klaar om nieuwe hardware te installeren" -> Selecteer "Volgende" -> "Voltooien".

Al deze acties worden ook beschreven in het "gebruik"-bestand dat in het Engels bij het USBIP-pakket wordt geleverd.

· We verbinden USB-apparaten die zijn gemarkeerd als geëxporteerd op de server die we nodig hebben. Om verbinding te maken gebruiken we USBIP uit de distributiekit versie 0.1

Voer cmd uit. Laten we eens kijken welke apparaten klaar zijn voor verbinding:

pad-naar-usbip :> usbip.exe -l

(server-ip - IP-adres van de USB-apparaatserver vanaf punt 2)

C:\ usbip> usbip - ik 192.168.1.13

usbip dbg: usbip_network.c: 229 (tcp_connect) proberen 192.168.1.13 poort 3240

usbip dbg: usbip_network.c: 249 (tcp_connect) verbonden met 192.168.1.13:3240

- 192.168.1.13

usbip dbg: usbip.c: 423 (query_exported_devices) exporteerbaar 2 apparaten

2-1: onbekende leverancier: onbekend product (0529: 0001)

: /sys/devices/pci0000:00/0000:00:11.0/0000:02:02.0/usb2/2-1

: onbekende klasse / onbekende subklasse / onbekend protocol (ff / 00/00)

: 0 - onbekende klasse / onbekende subklasse / onbekend protocol (ff / 00/00)

Als resultaat zien we dat op de server 192.168.1.13 een apparaat met bus-ID 2-1 klaar is voor verbinding - degene die we in stap 2 hebben geconfigureerd. Er kunnen meer apparaten zijn.

pad- tot- usbip:> usbip . exe - een server - ik p > USB - ID kaart

De USB-ID is in ons geval 2-1.

We krijgen veel letters (lijst met parameters) en tot slot:

nieuw usb-apparaat aangesloten op usbvbus-poort 2

Het USB-apparaat zou op het systeem van de client moeten verschijnen. Het is raadzaam om het terminalvenster niet te sluiten.

OptiesUSBIP - windowscliënt Gebruik: usbip

een, -bijvoegen Een extern USB-apparaat aansluiten
-x, -attachall Sluit alle externe USB aan
apparaten op de specifieke host
-d, -losmaken Een geïmporteerde USB loskoppelen
apparaat
-l, -lijst Geëxporteerde USB-apparaten weergeven
p, -poort Status van virtuele USB-poort weergeven
-D, -debug Foutopsporingsinformatie afdrukken
-v, -versie Toon versie
- ?, -h, -help Print deze hulp

Opmerkingen: ondervonden problemen en oplossingen:

1. Ik gebruikte systeemversie 11.04 op een 2.6-kernel. Na het updaten van het systeem naar versie 11.10 (kernel 3.0.4), stopte usbip met werken - het gaf een foutmelding dat het onderdeel niet gevonden was. Ik moest de auto herstellen en updates weigeren. Aan de andere kant, aangezien dit een zeer gespecialiseerde officiële machine is en de toegang ertoe beperkt is, werd dit als niet kritisch beschouwd.

2. In eerste instantie weigerden de hasp-sleutels om verbinding te maken met de client, wat een foutmelding gaf. Tijdens de experimenten bleek dat je eerst de usbip-daemon moet starten en pas daarna de sleutels op de machine moet aansluiten. V verdere fouten verdwenen, de toetsen begonnen in willekeurige volgorde te worden aangesloten, het was niet mogelijk om de fouten te herhalen. Dit is slechts een van die eigenaardigheden die ik noemde.

3. Na het herstarten van de VM van de client - 1C-server, is het soms niet mogelijk om sommige sleutels ermee te verbinden - het geeft fouten. Wellicht komt dit door de uitwisselingssessies met usb-apparaten die vastzitten op de HASP-server. Het wordt behandeld door de HASP-server opnieuw op te starten en de sleutels opnieuw door te sturen naar de client.

USB Network Gate is een programma waarmee gebruikers USB-apparaten kunnen aansluiten die op andere computers zijn aangesloten via IP-kanalen.

Er zijn verschillende implementaties van externe aansluiting van USB-apparaten op de markt, zowel hardware als software. Sommige vereisen bepaalde kennis en vaardigheden van gebruikers, in sommige gevallen kan het opzetten lang duren. USB Network Gate verraste me met zijn eenvoud. Ik heb het programma gedownload, geïnstalleerd, op de Share-knop gedrukt en het apparaat is onmiddellijk beschikbaar voor verbinding op een externe computer waarop de client is geïnstalleerd.

USB Network Gate kan bijvoorbeeld onmisbaar zijn bij het gebruik van USB-tokens op de RDP-server kunt u met het programma exclusieve toegang tot apparaten configureren voor een individuele externe desktopgebruiker, waardoor hij wordt geïsoleerd van andere gebruikers. Het programma kan ook worden gebruikt in virtuele omgeving als het apparaat om de een of andere reden niet rechtstreeks kan worden aangesloten. Er zijn versies voor Windows, Linux (RPM en Deb-pakketten), Apple OS X, en het meest interessante, voor Android. Nu over hoe het werkt.

Server

Het programma is zowel een server als een client. Bij het opstarten worden standaard alle USB-apparaten weergegeven die op de computer zijn aangesloten. U kunt echter het delen van alle poorten weergeven en configureren.

Het is mogelijk om de verbinding voor elk apparaat of elke poort afzonderlijk te configureren, sta de verbinding alleen toe voor een specifiek adres... Om de verbinding te beschermen, zijn autorisatie en encryptie voorzien.


Klant

Bij USB gebruiken Network Gate als client scant de applicatie het lokale netwerk op servers en geeft alle apparaten weer die beschikbaar zijn voor verbinding. Als de server zich op een ander subnet bevindt, bijvoorbeeld bij verbinding via VPN, kunt u deze toevoegen met de knop "Server toevoegen". Nadat ik de toegang tot de printer had geopend, verscheen deze in de lijst met beschikbare verbindingen op mijn MacBook. Naast de printer heb ik een USB-harde schijf aangesloten met HFS + -partities, deze is ook aangesloten, maar de partities werden ongeveer drie minuten aangekoppeld, blijkbaar vanwege hun grote volume.

Samenvatting

Met de proefversie kunt u de toegang tot slechts één geregistreerd apparaat openen - afhankelijk van het licentieniveau, van één tot $89, 95 tot onbeperkt voor $699,95 ... Als u een apparaat snel via een netwerk moet aansluiten, is USB Network Gate wat u nodig heeft, vooral als u geen sterke kennis van computerhardware hebt.

Deze instructies zijn correct vanaf versie 2.

Het lijkt erop, waarom zou ik anders iets schrijven als er een officiële instructie is? Er is hier echter iets wat er niet is.

Er zijn twee opties om een ​​USB-apparaat over te zetten naar een gast:

  • een bepaald apparaat overdragen aan de "gast";
  • zet de USB-poort waarop dit apparaat is aangesloten over.

USB-apparaten doorsturen

Als je een USB-dongle of een externe schijf hebt, dan is het handiger om het apparaat zelf over te zetten naar het gastsysteem, ongeacht op welke USB-poort dit apparaat fysiek is aangesloten. Bij een servicebeurt kunnen we hem immers de volgende keer op een andere connector aansluiten.

# lsusb Bus 002 Apparaat 002: ID 8087: 8000 Intel Corp. Bus 002 Apparaat 001: ID 1d6b: 0002 Linux Foundation 2.0 root-hub Bus 001 Apparaat 002: ID 8087: 8008 Intel Corp. Bus 001 Apparaat 001: ID 1d6b: 0002 Linux Foundation 2.0 root-hub Bus 004 Device 001: ID 1d6b: 0003 Linux Foundation 3.0 root-hub Bus 003 Device 004: ID 051d: 0002 American Power Conversion Uninterruptible Power Supply Bus 003 Device 003: ID 051d : 0002 American Power Conversion Uninterruptible Power Supply Bus 003 Device 002: ID 046d: c00c Logitech, Inc. Optische wielmuisbus 003 Apparaat 001: ID 1d6b: 0002 Linux Foundation 2.0 root-hub

We vinden het apparaat dat we nodig hebben en nemen de ID, die we zullen gebruiken.

Ik had een taak om UPS'en door te sturen.
(De situatie is in feite niet typisch, maar eerder uit de serie zou het niet moeten zijn: op de server en netwerk hardware Er zijn 2 van de eenvoudigste ononderbroken voedingen voor werkstations geleverd. De UPS'en bleken zachtaardig en begonnen met of zonder reden te jammeren. Om snel hun stem te laten horen en nog niet af te rekenen met het UPS-beheer van Debian, werd besloten om twee ononderbroken stroomvoorzieningen aan te sluiten op Windows-gasten.)

In dit stadium ontdekte ik dat beide apparaten die ik nodig had dezelfde ID hadden ... Maar laten we het proberen.

Doorgestuurde apparaten worden geregistreerd in het configuratiebestand van de bijbehorende virtuele machine.

# nano /etc/pve/qemu-server/101.conf usb0: host = 051d: 0002

Opnieuw opgestart. Het apparaat is opgepakt, alles lijkt in orde te zijn. Maar hier herinneren we ons dat het tweede apparaat met dezelfde identifier. Hoe kun je ze uit elkaar houden? De ervaring heeft inderdaad geleerd dat als één identifier wordt toegewezen aan twee virtuele machines, ze bij het inschakelen hetzelfde apparaat van elkaar overnemen. Ondanks het feit dat het hostsysteem meerdere USB-apparaten met deze identifier heeft.

Dit is waar we onthouden dat er een andere manier van doorsturen is.

USB-poort doorsturen

Het is noodzakelijk om te bepalen op welke poort het apparaat dat we nodig hebben is aangesloten.

Eerste manier:

# lsusb -t /: Bus 04.Port 1: Dev 1, Class = root_hub, Driver = xhci_hcd / 6p, 5000M /: Bus 03.Port 1: Dev 1, Class = root_hub, Driver = xhci_hcd / 15p, 480M | __ Poort 4: Dev 2, If 0, Class = HID, Driver = usbhid, 1.5M | __ Poort 7: Dev 3, If 0, Class = HID, Driver = usbfs, 12M | __ Poort 8: Dev 4, If 0, Class = HID, Driver = usbfs, 12M /: Bus 02.Poort 1: Dev 1, Class = root_hub, Driver = ehci_hcd / 3p, 480M | __ Poort 1: Dev 2, If 0, Class = hub, Driver = hub / 8p, 480M /: Bus 01.Poort 1: Dev 1, Class = root_hub, Driver = ehci_hcd / 3p, 480M | __ Poort 1: Dev 2, If 0, Class = hub, Driver = hub / 6p, 480M

Zoals later bleek, zitten de apparaten die ik nodig heb op bus 3, poorten 7 en 8. Maar tot nu toe is dit voor ons niet duidelijk, en hier is de tweede optie:

Qm monitor qm> info usbhost Bus 3, Addr 4, Poort 8, Snelheid 12 Mb/s Klasse 00: USB-apparaat 051d: 0002, Back-UPS XS 650CI FW: 892.R2.I USB FW: R2 Bus 3, Addr 3, Poort 7, Snelheid 12 Mb/s Klasse 00: USB-apparaat 051d: 0002, Back-UPS XS 650CI FW: 892.R2.I USB FW: R2 Bus 3, Addr 2, Poort 4, Snelheid 1.5 Mb/s Klasse 00: USB-apparaat 046d: c00c, USB Optische Muis

Hier zien we duidelijk wie wie is. En nu brutaal:

# nano /etc/pve/qemu-server/101.conf usb0: host = 3-7

Voor de volledigheid zal ik de instructies aanvullen met een voorbeeld uit de officiële documentatie.

Deze optie is mogelijk:

Qm-monitor qm> info usbhost Bus 3, Addr 2, Poort 1.2, Snelheid 1.5 Mb/s Leverancierspecifiek: USB-apparaat 0529: 0001, HASP 2.17

Goedemiddag, amigo's, ik ben blij dat je naar mijn site hebt gekeken, vandaag zullen we een vraag overwegen, zoals hoe te organiseren usb via netwerk en hoe het te gebruiken in virtualisatie. Het onderwerp is behoorlijk relevant en een dergelijke taak komt steeds vaker voor. Speciaal voor die bedrijven die een RDS remote desktop infrastructuur hebben met 1C applicaties, Directum of Tessa.

USB via netwerk

Zoals u al weet, is virtualisatie lange tijd en lange tijd in ons leven gekomen. De servercapaciteiten nemen toe en natuurlijk zijn er technologieën voor rationeel gebruik verschenen, wat isolatie en normaal gebruik van bronnen impliceert, wat heeft geleid tot virtuele machines die al worden gebruikt op hosting- en datacenters. Ik heb het hier allemaal al over gehad, als je geïnteresseerd bent, kijk dan op de links aan de linkerkant en hierboven.

Zoals u weet, vereisen sommige gelicentieerde programma's soms: werk usb toets. Eerder, in de klassieke versie, toen er alleen fysieke servers waren, waren er geen problemen met de werking van een dergelijk schema, maar met de komst van virtualisatie dook het op.

Helaas hebben sommige hypervisors niet de mogelijkheid om USB-apparaten rechtstreeks vanaf de server door te sturen. Een voorbeeld is Hyper-V van Microsoft, die sinds 2008 nog steeds niet zo'n kans biedt in Windows-server 2008R2, hoewel in 2012 R2 al pogingen zijn ondernomen, in tegenstelling tot het vMvare-bedrijf, dat dit toestaat, en ik heb al beschreven hoe een USB-modem door te sturen naar vmware esxi.

Haast je niet om boos te worden, aanhangers van de Redmond-reus, technologie komt je te hulp USB over IP of AnywhereUSB. Met USB over IP kunt u verbinding maken usb via netwerk.

De essentie van USB-forwarding lokaal netwerk... Heb AnywhereUSB-apparaat - het is klein netwerk usb middelpunt. Hieronder staan ​​voorbeelden van modellen op de markt.

  • AnywhereUSB / 2 - 2 USB-poorten, de eenvoudigste in de reeks

  • AnywhereUSB / 5 - 5 USB-poorten, hier kan het al voldoen aan de behoeften van een gemiddeld bedrijf.

  • AnywhereUSB / 14 - 14 USB-poorten, ik hou het meest van de top-end, maar het heeft ook zijn jambs. Er zijn tijden dat het kan bevriezen, en stel je voor dat alle 14 USB-tokens niet meer beschikbaar zijn, mensen op terminalboerderijen verontwaardigd zijn, zaken geld verliezen, of hier is een andere veelgemaakte fout wanneer je systeem geen verbinding maakt met de dongle en je een bericht ziet in het hulpprogramma met de inhoud "". Maar toch is de hardware-oplossing voor het leveren van USB via een lokaal netwerk vele malen stabieler dan software.

De USB-verbinding via het netwerk kan ook worden uitgevoerd via de Duitse apparatuur van bijvoorbeeld het bedrijf SEH, maar in tegenstelling tot DIGI werkt het ook met LINUX-platforms, dus ik heb het token doorgestuurd in CentOS 7, erg handig. Het kost iets meer dan zijn concurrent, maar het is het waard. Zijn verschijning weergegeven in de onderstaande foto. Het heeft ook tot 14 USB-poorten.

AnywhereUSB configureren

Laten we eens kijken hoe het stuk hardware is geconfigureerd om USB-toegang via het netwerk te maken. Zo ziet het er schematisch uit. Jij hebt verschillende soorten USB-apparaten of beveiligingssleutels die u aansluit op een van de 14 poorten, dan stuurt het apparaat het verkeer via het lokale netwerk naar hen door met een speciale software, aan de kant van de klant.

Er zijn verschillende interfaces beschikbaar voor het configureren en beheren van het apparaat:
Webinterface voor configuratie, monitoring en administratie;
AnywhereUSB-configuratiehulpprogramma;
Telnet-opdrachtregelinterface;
Eenvoudig netwerkbeheerprotocol (SNMP).

Om het apparaat te configureren, beschouwen we de webinterface als de handigste en eenvoudigste optie.

IP-adresbeheer

Er zijn verschillende opties om een ​​IP-adres aan AnywhereUSB toe te wijzen:
Vast IP;
Dynamische IP-toewijzing - Met behulp van Dynamic Host Configuration Protocol (DHCP);
Auto Private IP Addressing (APIPA), beter bekend als Auto-IP;

Zoals jij het meest begrijpt De goede weg dit is een statisch ip-adres. Het wordt ingesteld in het item Netwerkconfiguratie. Maak voor uzelf een regel om overal op de servers statica te gebruiken, zodat al uw klanten, die de USB-token via het netwerk hebben aangesloten, er niet achteraan gaan als de server plotseling dynamische adressering heeft.

Het is ook erg handig om in deze mnyu . in te stellen netwerkdiensten daarop beschikbaar. Let op standaard poorten verbindingen. U kunt ze desgewenst opnieuw toewijzen. Uit ervaring kan ik zeggen dat Telnet stabieler werkt dan dezelfde ssh. Probeer in het algemeen het aantal beheerservices te minimaliseren of te isoleren met behulp van VLAN's.

Het meest belangrijke stap bij het configureren van USB-sleutels die via het netwerk aan verschillende servers worden geleverd, is dit de taak van poortgroepen (RealPort USB). In feite zijn RealPort USB groepen die fysieke poorten combineren met: USB-sleutels naar logische groepen, voor het doorsturen van meerdere tokens naar één server of virtuele machine. Zonder RealPort-groepen te maken, kunt u geen enkele client op uw USB-hub aansluiten.

Ze worden aangemaakt in het menu "Toepassingen - RealPort USB". Het algoritme zelf is heel eenvoudig, aan de linkerkant heb je echte usb poorten in volgorde, iets naar rechts, geef je aan in welke groep het account moet zijn, deze of die poort. Vergeet niet een beschrijving in te voeren, het zal erg handig zijn, je kunt het alleen vragen brieven... Daarna kunt u ervan uitgaan dat de USB-forwarding via het lokale netwerk voor 80 procent is voltooid.

Vergeet niet het selectievakje "Dynamic Group Assignment (DGA)" in te schakelen, zodat de poorten onmiddellijk worden toegepast, zonder DIGI opnieuw op te starten.

Op het tabblad "Verbindingsbeheer" ziet u de huidige verbindingen. In feite zijn dit allemaal clients die uw USB-apparaat via een lokaal netwerk hebben aangesloten.

Om de veiligheid te vergroten, kunt u wachtwoordbeveiliging inschakelen ( De geheime sleutel), dit kan worden vergeleken met tweestapsverificatie... Dit doet u in het item "RealPort", schakel de functie "RealPort-authenticatie inschakelen" in en voer het geheime woord in bij Shared Secret.

Wat nu moet gebeuren op de virtuele machine voor de netwerkinteractie van het USB-token en de client, alles is waanzinnig logisch, je moet de stuurprogramma's van AnywhereUSB daar installeren en het ip-adres van het apparaat instellen. Zoals je kunt zien, heb ik hem al aangesloten en heeft hij een intern IP-adres.

Met behulp van een speciaal hulpprogramma, Anywhere View, kunt u de beschikbaarheid en bezetting van alle apparaten controleren. Misschien is dit de eenvoudigste en meest betrouwbare methode om tokens, flashdrives en verschillende modems door te sturen naar je virtuele machines via het lokale netwerk, de apparaten zelf kosten anders, maar als je al geld hebt uitgegeven aan software en hypervisors, denk ik dat indien nodig, koop Dit :).

Over het algemeen is er veel om een ​​soortgelijk schema te implementeren met het doorsturen van USB-apparaten via een lokaal netwerk, er zijn softwareversies, maar het is altijd beter om hardware te gebruiken.

De taak om een ​​USB-apparaat via een lokaal netwerk op een externe pc aan te sluiten, komt regelmatig voor. Onder de snede wordt het verhaal van mijn zoektochten in deze richting uiteengezet, en het pad naar een kant-en-klare oplossing op basis van een open-sourceproject met een beschrijving van de obstakels die zorgvuldig door verschillende mensen langs dit pad zijn gesteld, evenals manieren om ze te omzeilen.

Deel één, historisch

Als de machine virtueel is, is dit allemaal niet moeilijk. De functionaliteit van USB-forwarding van host naar virtuele machine verscheen in VMWare 4.1. Maar in mijn geval was de beveiligingssleutel, herkend als WIBU-KEY, nodig in andere keer verbinding maken met verschillende machines, en niet alleen virtuele.
De eerste zoekronde in 2009 leidde me naar een stuk hardware genaamd TrendNet TU2-NU4
Voordelen:
  • werkt soms zelfs
minpuntjes:
  • werkt niet altijd. Stel dat de Guardant Stealth II-beveiligingssleutel er niet doorheen start, vervloekt de fout "apparaat kan niet worden gestart".
  • Beheersoftware (lees - USB-apparaten aan- en afkoppelen) is tot het uiterste pathetisch. Commandoregelschakelaars, automatisering - nee, niet gehoord. Alles alleen met je handen. Nachtmerrie.
  • de besturingssoftware zoekt het stuk hardware zelf in het netwerk door uit te zenden, dus het werkt alleen binnen één uitzendsegment van het netwerk. U kunt het IP-adres van het stuk ijzer niet met de hand opgeven. Een stuk ijzer op een ander subnet? Dan heb je een probleem.
  • de ontwikkelaars hebben op het apparaat gehamerd, het verzenden van bugrapporten is nutteloos.
De tweede ronde vond plaats op een tijdstip dat niet zo ver weg was, en leidde me naar het onderwerp van het artikel -. Het trekt aan met zijn openheid, vooral omdat de jongens van ReactOS een driver voor Windows voor hen hebben ondertekend, dus nu zelfs op x64 werkt alles zonder krukken zoals testmodus:... Veel dank aan het ReactOS-team daarvoor! Alles klinkt mooi, laten we proberen te voelen, is het echt zo? Helaas wordt het project zelf ook stopgezet en kun je niet op steun rekenen - maar waar die van ons niet is verdwenen, is de bron daar, we komen er wel uit!

Deel twee, server-linux

Een USB/IP-server die USB-apparaten deelt via het netwerk kan alleen worden opgestart op een Linux-gebaseerd besturingssysteem. Nou, linux is zo linux, we installeren op de virtuele machine van Debian 8 in minimale configuratie, standaard armbeweging:

Sudo apt-get update sudo apt-get upgrade sudo apt-get install usbip
Geïnstalleerd. Verder suggereert internet dat je de usbip-module moet laden, maar - hallo, de eerste rake. Zo'n module is er niet. Dit komt omdat de meeste handleidingen op het net verwijzen naar de oudere 0.1.x branch, en in het extreme 0.2.0 hebben de usbip-modules verschillende namen.

Dat is waarom:

Sudo modprobe usbip-core sudo modprobe usbip-host sudo lsmod | grep usbip
Welnu, voeg de volgende regels toe aan / etc / modules om ze automatisch te laden bij het opstarten van het systeem:

Usbip-core usbip-host vhci-hcd
Laten we de usbip-server starten:
sudo usbipd -D
Verder vertelt de wereldgeest ons dat de set met usbip wordt geleverd met scripts waarmee we de server kunnen besturen - om te laten zien welk apparaat het via het netwerk zal delen, de status te zien, enzovoort. Een ander tuingereedschap wacht hier op ons - deze scripts in de 0.2.x-tak zijn opnieuw hernoemd. U kunt een lijst met opdrachten krijgen met

Sudo usbip
Na het lezen van de beschrijving van de commando's, wordt het duidelijk dat usbip zijn Bus-ID wil weten om het vereiste USB-apparaat te delen. Beste toeschouwers, er is rake nummer drie in de arena: de Bus ID die ons zal geven lsusb(schijnbaar de meest voor de hand liggende manier) - het past niet bij haar! Feit is dat usbip hardware zoals USB-hubs negeert. Daarom zullen we het ingebouwde commando gebruiken:

[e-mail beveiligd]: ~ $ sudo usbip list -l - busid 1-1 (064f: 0bd7) WIBU-Systems AG: BOX / U (064f: 0bd7)
Opmerking: hier en verder in de lijsten zal ik alles beschrijven aan de hand van het voorbeeld van mijn specifieke USB-dongle. Uw hardwarenaam en VID: PID-paar kunnen en zullen anders zijn. De mijne heet Wibu-Systems AG: BOX / U, VID 064F, PID 0BD7.

Nu kunnen we ons apparaat delen:

[e-mail beveiligd]: ~ $ sudo usbip bind --busid = 1-1 usbip: info: bind apparaat op busid 1-1: voltooid
Hoera, kameraden!

[e-mail beveiligd]: ~ $ sudo usbip list -r localhost Exporteerbare USB-apparaten ===================== - 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: Leverancierspecifieke klasse / onbekende subklasse / onbekend protocol (ff / 00 / ff)
Drie hoera, kameraden! De server heeft het stuk hardware over het netwerk gedeeld, en we kunnen het verbinden! Het blijft alleen om de autostart van de usbip-daemon toe te voegen aan /etc/rc.local

Usbipd -D

Deel drie, client-side en verwarrend

Verbind het gedeelde apparaat via het netwerk met de machine onder Debian-beheer ik heb het meteen op dezelfde server geprobeerd en alles was goed verbonden:

Sudo usbip attach --remote = localhost --busid = 1-1
Verhuizen naar Windows. In mijn geval was het Windows Server 2008R2 Standard Edition. De officiële handleiding vraagt ​​om eerst de driver te installeren. De procedure wordt perfect beschreven in de leesmij die bij de Windows-client is gevoegd, we doen alles zoals geschreven, alles werkt. Werkt ook zonder problemen op XP.

Na het uitpakken van de client proberen we onze sleutel te mounten:

C: \ Program Files \ USB-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) kan apparaat niet vinden
Oh Oh. Er is iets fout gegaan. We gebruiken de Google-vaardigheid. Er zijn fragmentarische vermeldingen dat er iets mis is met de constanten, aan de serverzijde, bij het overschakelen naar versie 0.2.0, hebben de ontwikkelaars de protocolversie gewijzigd, maar ze vergaten dit in de client voor Win te doen. De voorgestelde oplossing is om de constante in de bron te wijzigen en de client opnieuw op te bouwen.

Maar ik wil Visual Studio echt niet downloaden omwille van deze procedure. Maar ik heb de goede oude Hiew. In de broncode wordt de constante gedeclareerd als een dubbel woord. Laten we in het bestand kijken naar 0x00000106 en het vervangen door 0x00000111. Vergeet niet dat de bytevolgorde omgekeerd is. Het resultaat is twee wedstrijden, patch:

00000CBC: 06 11 00000E0A: 06 11
Iiii ... ja!

C: \ Program Files \ USB-IP> usbip -a% server-ip% 1-1 nieuw usb-apparaat aangesloten op usbvbus-poort 1
Dit kon de presentatie beëindigen, maar de muziek duurde niet lang. Nadat ik de server opnieuw had opgestart, ontdekte ik dat het apparaat op de client niet kan worden gemonteerd!

C: \ Program Files \ USB-IP> usbip -a% server-ip% 1-1 usbip err: usbip_windows.c: 829 (attach_device) kan apparaat niet vinden
En dat is alles. Zelfs de alwetende Google kon hier geen antwoord op geven. En tegelijkertijd wordt de opdracht om de apparaten die beschikbaar zijn op de server weer te geven heel correct weergegeven - hier is het, de sleutel, die u kunt koppelen. Ik probeer het onder Linux te mounten - het werkt! En als je het nu onder Windows probeert? Verschrikking - het werkt!

De laatste rake: er staat iets niet in de servercode. Bij het delen van een apparaat leest het niet het aantal USB-descriptors ervan. En bij het mounten van een apparaat van onder Linux, wordt dit veld ingevuld. Helaas ben ik bekend met Linux-ontwikkeling op het "make && make install"-niveau. Daarom werd het probleem opgelost met een nogal vuile hack - toe te voegen aan /etc/rc.local

Usbip koppelen --remote = localhost --busid = 1-1 usbip-poort usbip detach --port = 00

Het laatste deel

Na wat beproeving werkt het. Het gewenste resultaat is ontvangen, nu kan de sleutel op elke pc worden gemonteerd (en natuurlijk ook ontkoppeld), ook buiten het broadcast-netwerksegment. Als u wilt, kunt u dit doen met behulp van een shellscript. Wat leuk is - het plezier is helemaal gratis.
Ik hoop dat mijn ervaring de hackers zal helpen om de hark te omzeilen die op mijn voorhoofd staat. Bedankt voor de aandacht!

Soms is het nodig om toegang te krijgen tot een USB-apparaat dat is aangesloten op een van de computers in het netwerk. Dit kan een USB-stick zijn die gekopieerd moet worden naar een van de computers of naar een virtuele machine, of, als een complexere optie, een USB-printer die via het netwerk beschikbaar moet worden gesteld voor meerdere apparaten.

In dit artikel zullen we verschillende programma's bekijken waarmee u deze functie kunt implementeren. Een daarvan is USB Network Gate. het betaald programma, maar het stelt je in staat om USB-apparaten heel snel en gemakkelijk via het netwerk in Linux te delen. Het programma heeft een gebruiksvriendelijke grafische interface en is zeer eenvoudige installatie... Overweeg ook een gratis alternatief voor usbip, waarmee je usb kunt delen over het netwerk in de terminal. Laten we beginnen met een commercieel programma.

Usb Network Gate is een programma van Elitma Software waarmee u via het netwerk toegang krijgt tot alle USB-apparaten die op uw computer zijn aangesloten. Bovendien kan het niet alleen een lokaal netwerk zijn, maar ook internet.

Naast de Linux-versie heeft het programma versies voor Windows, Mac en zelfs een Android-applicatie. Een licentie met de mogelijkheid om één USB-poort over het netwerk te zetten kost $ 89,99 maar heeft een proefperiode van 14 dagen. Na afwerking proefperiode u kunt uw apparaten niet delen, maar u kunt al gedeelde apparaten verbinden.

Usb Newtork Gate installeren

Het installeren van USB Network Gate op Linux is heel eenvoudig. U kunt het installatiepakket voor uw distributie downloaden op de officiële website.

Hier hoeft u alleen maar op de downloadknop te klikken en vervolgens de versie voor uw distributie te selecteren:

Nadat de download is voltooid, gaat u om te installeren naar de map met het bestand en voert u het volgende uit:

dpkg -i usb_network_gate.deb

Voor Ubuntu, of:

rpm -i usb_network_gate.rpm

Voor RedHat en andere rpm-systemen. Het programma heeft mogelijk de bibliotheek libudev.so.0 nodig om het programma te laten werken. Als deze versie van de bibliotheek niet beschikbaar is op uw systeem, maakt u een link naar libudev.so.1 met de volgende opdracht:

ln -s /usr/lib/libudev.so.1 /usr/lib/libudev.so.0

USB-apparaten via het netwerk bedienen

U kunt het programma uitvoeren vanuit het hoofdmenu of door in de terminal uit te voeren:

Het hoofdvenster van het programma ziet er als volgt uit:

Om een ​​USB-apparaat via het netwerk te delen, klikt u er met de rechtermuisknop op en selecteert u in contextmenu paragraaf Deel.

In het geopende venster kunt u informatie over het apparaat zien en specificeren: aanvullende instellingen, bijvoorbeeld of codering, compressie of wachtwoord moet worden gebruikt om de verbinding te verifiëren:

Op een externe machine, om ons apparaat te verbinden, moet je het eerst vinden. Ga hiervoor naar het tabblad Externe USB-apparaten en druk op de knop Vind:

In het geopende venster, als de computers zich in het lokale netwerk bevinden, kunt u gewoon op Alles zoeken klikken, zo niet, dan moet u het ip-adres opgeven van de computer waarop het USB-apparaat wordt gedeeld en vervolgens klikken op Vind:

Om USB aan te sluiten, selecteert u eenvoudig de optie Verbinden in het contextmenu:

Om het uit te schakelen, selecteert u gewoon de optie Loskoppelen.

USBIp

Het is een gratis open source-hulpprogramma broncode om toegang te krijgen tot USB-apparaten via het netwerk. Het verliest op veel manieren van USB Network Gate, voornamelijk door het ontbreken van: grafische interface en complex maatwerk.

usbip installeren

Het programma wordt geïnstalleerd vanuit de officiële repositories:

sudo apt-get install linux-tools-generic

Of voor Red Hat:

sudo yum installeer usbip

Je moet ervoor zorgen dat de versie van het programma overeenkomt met je kernel, omdat nieuwe versies meestal niet helemaal compatibel zijn met oudere versies van de kernel. Op dit moment is bijvoorbeeld versie 2.0 relevant voor kernel 4.2. Let daarom op de compatibiliteit en alles zal werken, en als het niet werkt, weet je al wat het probleem is.

Server afstemmen

Downloaden vereiste modules pitten:

sudo modprobe usbip-host

$ sudo modprobe usbip-core

We starten de daemon:

Het programma is klaar voor gebruik. Nu, met behulp van lsusb, vinden we ons apparaat:

Bus 002 Apparaat 014: ID 13fe: 5500 Kingston Technology Company Inc

We hebben een paar VendorID nodig: DeviceID, hier is het: 13fe: 5500

Voer nu uit:

sudo usbip lijst -l

Busid 2-2 (13fe: 5500)
2-2: 1.0 -> usb-opslag

Busid 4-1 (0458: 0708)
4-1: 1.0 -> usbhid
4-1: 1.1 -> usbhid

Busid 4-3 (09da: 9090)
4-3: 1.0 -> usbhid
4-3: 1.1 -> usbhid
Het programma scant alle aangesloten apparaten en toont beide het gewenste formaat, samen met hun bezigheden. De optie -l geeft aan wat er moet worden gescand lokale apparaten... Zoals u kunt zien, staat ons USB-apparaat als eerste in de lijst.

Nu we de busid kennen, kunnen we het USB-apparaat via het netwerk in Linux delen:

usbip bind -b 2-2

usbip: info: bind apparaat op busid 2-2: voltooid

Klaar, ons USB-apparaat is gedeeld, het blijft om het te verbinden met klant machine... We kijken naar de lijst met beschikbare apparaten:

sudo usbip-lijst -r 192.168.56.1

Exporteerbare USB-apparaten
======================
- 192.168.56.1
2-2: Kingston Technology Company Inc. : onbekend product (13fe: 5500)
: /sys/devices/pci0000:00/0000:00:13.2/usb2/2-1
: (Gedefinieerd op interfaceniveau) (00/00/00)

Na -r moet u uw ip-adres opgeven. Het blijft om ons apparaat aan te sluiten:

sudo usbip attach -r 192.168.56.1 -b 2-2

Om een ​​apparaat los te koppelen, moet u eerst de poort ervan achterhalen:

Schakel vervolgens uit:

sudo usbip los 00

En we stoppen met het delen van het apparaat via het netwerk op de server:

sudo usbip unbind -b 2-2

Dat is alles. Zoals je kunt zien, is het werken met het consoleprogramma veel moeilijker, maar voor degenen die geen geld willen uitgeven aan een licentie, zal het een uitstekende oplossing zijn. Nu kunt u bijvoorbeeld probleemloos een printer delen via een netwerk in linux of een ander USB-apparaat, ongeacht de gebruikte distributiekit.

De hele klas vergelijkbare apparaten bestaat al heel lang. Tien jaar geleden kon USB-over-IP-technologie worden aangetroffen in sommige thuisrouters, waar het werd gebruikt om op afstand toegang te krijgen tot een printer. Het is in deze hoedanigheid dat ze nu vaak worden aangeboden, aangezien USB 2.0 en een 100-megabit-netwerk voldoende zijn voor deze behoeften. Er is ook schoon Software oplossingen die de USB-poorten doorsturen van de machine waarop de server draait. Dit segment verrast met twee fenomenen. Ten eerste is de gemiddelde poortprijs ongeveer $ 50 voor zowel software- als hardwareoplossingen. Ten tweede zijn er bijna geen USB 3.0-apparaten.

Over het algemeen, doorsturen via de USB-interface, vooral: moderne normen is niet zo'n triviale taak. De bus zelf is niet eens veeleisend op de bandbreedte - toch zal alles tegen zijn netwerkinterface tot 1 Gbit / s (125 MB / s), en de vertragingen die zijn extern netwerk moeilijk te controleren. Het is dus makkelijk om USB-over-IP te organiseren, maar efficiënt doen is dat niet meer. SEH is al heel lang bezig met deze taak. SEH myUTN-2500 is een server met drie poorten die: toegang op afstand via een lokaal en wereldwijd (zoals vermeld) netwerk naar USB 3.0-poorten. Bovendien heeft het veel functies die vereist zijn in een bedrijfsomgeving: toegangscontrole en codering, bewaking en beheer op afstand, compatibiliteit met een hele OS-dierentuin en brede netwerkmogelijkheden.

⇡ Inhoud en uiterlijk van de verpakking

SEH myUTN-2500 ziet eruit als een kleine lichtbak gemaakt van matblauw plastic met afmetingen 99 × 140 × 32 mm en een gewicht van 160 g. Ventilatiegaten nee, maar het apparaat wordt nog steeds niet erg heet tijdens het gebruik. Het is alleen bedoeld voor gebruik binnenshuis met temperatuur omgeving van 5 tot 40 ° C en relatieve vochtigheid 20-80%. Het voorpaneel bevat zeven LED's die de algemene apparaatstatus en netwerk- en USB-activiteit aangeven. Alle indicatoren zijn klein en zwak. Er zit een informatiesticker op de onderkant, evenals zeer kleine maar verrassend vasthoudende rubberen voetjes in de hoeken.

Er zijn drie USB 3.0-poorten aan de achterkant, een RJ-45-connector voor Gigabit netwerkverbinding, een verzonken resetknop en een aansluiting voor de stroomkabel. De derde USB-poort kan ook worden gebruikt om andere apparaten op te laden, deze levert 1,5 A. SEH myUTN-2500 ondersteunt gelijktijdig werken maximaal 12 USB-apparaten, maar er is één functie - voor samengestelde USB-apparaten of hubs kunt u geen afzonderlijke VID / PID's selecteren voor doorsturen naar de client: het zal de fysieke USB-poort als geheel zijn, en daarmee al zijn "slaves ", virtueel en echt. Tot 16 gebruikers kunnen myUTN-2500 tegelijkertijd gebruiken, wat duidelijk overbodig is.

Meegeleverd met het apparaat standaard set: documentatie, garantie kaart en een voeding. De voedingseenheid is vrij groot (98 × 49 × 33 mm), maar is universeel: AC-ingang 100-240 V, 50/60 Hz; DC-uitgang 12 V, 3 A. Het apparaat heeft een standaard C8-aansluiting, de kit wordt geleverd met een geschikte kabel van 1,7 m met een C-type stekker aan het uiteinde, en een snoer van iets meer dan een meter strekt zich uit vanaf de PSU zelf. In de stand-bymodus verbruikt myUTN-2500 ongeveer 0,2 A van de voeding en bij volledige belasting van alle drie de USB-poorten - ongeveer 2,4 A. Formeel geeft de fabrikant 3 jaar garantie op het apparaat en u kunt er nog 2 krijgen jaren daarna. wanneer u zich op de site registreert, maar in Rusland moet u blijkbaar ophelderen garantieverplichtingen van de verkoper.

⇡ Specificaties

Specificaties SEH myUTN-2500 USB Deviceserver
Chipset / Controller n.v.t
Geheugen n.v.t
Interfaces 1 × 10/100/1000 Mbps Ethernet, 3 × USB 3.0 / 1 × CDP
Snelheid 1 × USB tot 100 MB/s; 3 × USB tot 30 MB/s elk
Apparaten Maximaal 12 apparaten, inclusief samengestelde apparaten; tot 16 gebruikers
Indicatoren Voeding, toestand, activiteit, netwerk
Hardwareknoppen Resetten
Afmetingen (B × D × H) 99 x 140 x 32 mm
Gewicht 160 gram
Voeding Gelijkstroom 12V 3A
Voorwaarden t van 5 tot 40°C; rel. vochtigheid 20-80%; alleen binnen
Garantie 3 jaar
Prijs € 200
Mogelijkheden
Netwerk Statisch IP / DHCP / BOOTP / Zeroconf (Bonjour); IPv4 / IPv6; VLAN; SNMPv1 / v3
Toegang USB-poortsleutel; login / wachtwoord of 802.1x EAP-MD5 / TLS / TTLS / FAST / PEAP
Bescherming VLAN, IP, MAC, VID/PID-filter; HID-USB-vergrendeling
Encryptie Verkeer: SSL 3.0, TLS 1.0 / 1.1 / 1.2; import van S/MIME, CA, PKCS #12 certificaten
Beheer / Meldingen Webinterface; SNMPv1 / v3 MD5 / SHA + DES / AES, MIB; SMTP / POP3 (met EDS)
Min. OS-versie Windows XP / Server 2003; MacOS X 10.8.x; Linux 2.6.32

⇡ Webinterface en instellingen

Het apparaat wordt voornamelijk bestuurd via de webinterface, die in meerdere talen beschikbaar is, maar er is geen Russisch bij. Voor elke parameter staat er weliswaar een korte, maar begrijpelijke beschrijving in. Het apparaat krijgt automatisch een IP-adres via DHCP/BOOTP of via Bonjour (Zeroconf). Standaard is de interface toegankelijk via HTTP en HTTPS, maar zonder autorisatie. De hoofdpagina bevat basisinformatie over de status van myUTN-2500: adres, firmwareversie, naam, lijst met apparaten en aangesloten clients. Voor het gemak kunt u aan elke USB-poort een specifieke naam toewijzen, evenals de hostnaam, de korte beschrijving en contactgegevens (bijvoorbeeld technische ondersteuning of netwerkbeheerder). Alle instellingen kunnen in een apart bestand worden opgeslagen en indien nodig worden geïmporteerd.

Basisinstellingen SEH myUTN-2500

SEH myUTN-2500 ondersteunt zowel IPv4- als IPv6-netwerken. Voor IPv4 is werken in VLAN ook beschikbaar, en u kunt het beheer van instellingen afzonderlijk verbieden of toestaan, alleen via hetzelfde VLAN waar het apparaat zich bevindt. Afzonderlijk kunt u maximaal drie VLAN's specificeren waar clients zich bevinden. Bovendien kan toegang tot een specifieke USB-poort van de server alleen specifiek worden toegestaan ​​vanuit één VLAN-netwerk, waardoor oproepen van andere clients worden verboden. Er zijn ook traditionele witte lijsten van IP-adressen of subnetten en MAC-adressen - tot 16 regels in totaal. Voor SNMPv3 worden lees-/schrijfrechten afzonderlijk ingesteld en kan MD5 / SHA + DES / AES-beveiliging worden geselecteerd. Voor massabeheer van apparaten via SNMP biedt SEH een apart NetTool-hulpprogramma en kant-en-klare MIB-bestanden.

Netwerkinstellingen SEH myUTN-2500

Voor basisgebeurtenissen - opnieuw opstarten van het apparaat, aansluiten / loskoppelen van USB-apparaat en (de)activering van de USB-poort - worden meldingen verzonden per e-mail (POP3 en SMTP) en SNMP. Daarnaast kan myUTN-2500 regelmatig een melding sturen over zijn huidige toestand twee ontvangers. Encryptie is ook beschikbaar voor e-mails en digitale handtekening... S / MIME, CA, PKCS #12-certificaten kunnen worden geïmporteerd, aangezien het apparaat in eerste instantie alleen zelfondertekende van de fabrikant bevat. Toegangscontrole is mogelijk via ingebouwde middelen (beheerder en gewone gebruiker met wachtwoorden), of via een externe RADIUS-server via EAP-MD5 / TLS / TTLS / FAST / PEAP.

Beveiligingsinstellingen SEH myUTN-2500

Er zijn verschillende functies om het rechtstreeks werken met USB-apparaten te beschermen. Ten eerste kan al het verkeer tussen de client en myUTN-2500 worden versleuteld met SSL 3.0 of TLS 1.0 / 1.1 / 1.2. Het is onmogelijk om een ​​specifieke set algoritmen en sleutellengtes in te stellen, alleen de keuze van het coderingsniveau is beschikbaar - klein, gemiddeld, hoog. Ten tweede kunt u voor elke USB-poort zijn eigen toegangssleutel instellen (in feite een wachtwoord) en / of alleen werken met specifieke VID's en PID's van USB-apparaten toestaan, evenals toegang toestaan ​​vanaf één specifiek VLAN-netwerk, zoals reeds vermeld bovenstaand. Ten derde is er voor alle USB-poorten tegelijk een optie om het gebruik van HID-apparaten te verbieden, wat erg belangrijk is, omdat het aanvallen vermijdt wanneer bijvoorbeeld een toetsenbordemulator op de poort is aangesloten, die het typen en het invoeren van sneltoetsen simuleert .

⇡ Werken met het apparaat

Werken met myUTN-2500 na initiële setup de webinterface is uiterst eenvoudig. Het volstaat om het SEH UTN Manager-programma te installeren, met of zonder GUI. Bovendien worden de service en het stuurprogramma geïnstalleerd. Het programma heeft versies voor Windows XP / Vista / 7/8/10 en server Windows-varianten, voor Mac OS X vanaf OS X 10.8, evenals DEB- en RPM-pakketten voor Linux-distributies met kernel 2.6.32 of hoger. Los daarvan is bepaald dat voor OS X ouder dan 10.11.2 de ondersteuning voor USB-apparaten beperkt is. Met elke nieuwe softwareversie verbeteren ontwikkelaars echter de compatibiliteit.

Na het starten scant UTN Manager automatisch netwerken op alle beschikbare interfaces en biedt aan om een ​​lijst met alle gedetecteerde myUTN-apparaten te onthouden. Voor elk van hen wordt een lijst met aangesloten USB-apparaten en hun status weergegeven. Met een paar klikken kunt u ze allemaal verbinden. Het besturingssysteem bepaalt zelf het nieuwe aangesloten apparaat alsof het is aangesloten op een echte USB-poort van een pc of server - het enige dat overblijft is om het te installeren vereiste stuurprogramma's en ga ermee aan de slag.

Het UTN Manager-programma heeft, net als de webinterface, geen ondersteuning voor de Russische taal, hoewel dit in dit geval geen probleem is, aangezien er een minimum aan instellingen en functies in het programma zijn. Auto-mounting van USB-apparaten is beschikbaar, ook wanneer aangesloten op een andere myUTN-poort. ik heb een kans eenvoudigste automatisering- bijvoorbeeld USB koppelen met gelijktijdige (of met een gespecificeerde vertraging) lancering van het uitvoerbare bestand dat door de gebruiker is geselecteerd en automatisch ontkoppelen nadat het programma is beëindigd. U kunt eenvoudig de automatische uitschakelperiode van de poort instellen.

⇡ Testen

V laatste versie firmware en software voor Windows, die een paar maanden geleden uitkwamen, is de driverarchitectuur aanzienlijk opnieuw ontworpen. Met name ondersteuning voor latency en bandbreedtegevoelige USB-apparaten is toegevoegd voor het overzetten van bijvoorbeeld audio- of videostreams. Helaas bleek dat de enige min of meer geschikte kandidaat voor de rol van testexemplaar - een door Microsoft gefabriceerde webcam - al lang niet meer door Microsoft zelf wordt ondersteund en geen drivers heeft voor Windows 10. Laten we een standaardschijf gebruiken om te testen, die wordt gebruikt in routertests: SSD Kingston SSDNow V + 200 met één NTFS-volume in een USB 3.0 LanShuo INIC-4009-doos. naar het gebruikelijke thuisrouter myUTN-2500 en was verbonden. Er waren geen QoS- of vormgevingsinstellingen.