การเปรียบเทียบการส่งต่อเครือข่าย Usb ของโปรแกรม ใช้แพ็คเกจ USBIP ฟรีเพื่อส่งต่อ USB ไปยังเครื่องเสมือน หากมีอุปกรณ์จำนวนมากและพวกเขาเหมือนกันทั้งหมด

สวัสดีตอนเช้าฉันมีความสุขที่คุณได้ดูเว็บไซต์ของฉันวันนี้เราจะพิจารณาคำถามเช่นวิธีการจัดระเบียบ usb ผ่านเครือข่ายและวิธีการใช้งานในการจำลองเสมือน หัวข้อมีความเกี่ยวข้องมากและงานดังกล่าวพบบ่อยขึ้น

usb ผ่านเครือข่าย

อย่างที่คุณรู้แล้วการจำลองเสมือนเข้ามาในชีวิตของเราเป็นเวลานานและนาน ความจุของเซิร์ฟเวอร์กำลังเพิ่มขึ้นและตามธรรมชาติแล้วเทคโนโลยีสำหรับการใช้เหตุผลของพวกเขาได้แสดงให้เห็นถึงความโดดเดี่ยวและการใช้ทรัพยากรตามปกติซึ่งก่อให้เกิดเวอร์ชวลแมชชีนที่ใช้ในโฮสติ้งและดาต้าเซ็นเตอร์อยู่แล้ว ฉันได้พูดคุยเกี่ยวกับสิ่งนี้ถ้าคุณสนใจดูลิงค์ด้านซ้ายและด้านบน

การจำลองเสมือนซึ่งเป็นเทคโนโลยีที่ช่วยให้คุณสร้างรุ่นเสมือนจริงของอุปกรณ์หรือทรัพยากรเช่นเซิร์ฟเวอร์อุปกรณ์เก็บข้อมูลเครือข่ายหรือแม้กระทั่งระบบปฏิบัติการมาเป็นเวลาหลายปีแล้ว มันให้คุณประโยชน์มากมายที่ยากที่จะจินตนาการเมื่อเราเคยอยู่ใน "โลกทางกายภาพ" แต่ระวัง - virtualization ยังมีข้อเสีย

การตั้งค่าเครื่องเสมือน

มีสองวิธีหลักในการแก้ปัญหานี้


หากคุณเชื่อมต่ออุปกรณ์กับโฮสต์ในขณะที่เครื่องเสมือนกำลังทำงานและหน้าต่างเปิดใช้งานอยู่อุปกรณ์จะเชื่อมต่อกับระบบเกสต์โดยอัตโนมัติและไม่เชื่อมต่อกับโฮสต์ นี่จะทำให้คุณมีตัวเลือกในการตัดการเชื่อมต่อหนึ่งในอุปกรณ์ที่เชื่อมต่ออยู่แล้วเพื่อให้คุณสามารถเพิ่มพอร์ตสำหรับอุปกรณ์ที่เสียบใหม่หรือละเว้นอุปกรณ์ใหม่ หากคุณเลือกหลังอุปกรณ์จะเชื่อมต่อกับโฮสต์

อย่างที่คุณทราบบางครั้งบางโปรแกรมที่มีลิขสิทธิ์ต้องใช้คีย์ usb ในการทำงาน ก่อนหน้านี้ในรุ่นคลาสสิกเมื่อมีเซิร์ฟเวอร์ทางกายภาพเท่านั้นไม่มีปัญหากับการดำเนินการของโครงการดังกล่าว แต่ด้วยการถือกำเนิดของ virtualization มันโผล่ขึ้นมา

น่าเสียดายที่ไฮเปอร์ไวเซอร์บางตัวไม่มีความสามารถในการส่งต่อโดยตรงจากเซิร์ฟเวอร์ อุปกรณ์ USB... ตัวอย่างคือ Hyper-V จาก Microsoft ซึ่งตั้งแต่ 208 ยังไม่มีโอกาสเช่นนี้ซึ่งแตกต่างจาก vMvare ซึ่งอนุญาตสิ่งนี้และฉันได้อธิบายวิธีส่งต่อโมเด็ม USB ไปยัง vmware esxi แล้ว

หากฮับใช้สำหรับเชื่อมต่ออุปกรณ์กับโฮสต์คุณจะไม่เห็นฮับอุปกรณ์เสมือนเท่านั้น





หาก My Computer ไม่แสดงว่าเป็นที่เก็บข้อมูลแบบถอดได้อาจเป็นเพราะไดรฟ์ถูกตัดการเชื่อมต่อ ขยายที่เก็บข้อมูลและเลือกการจัดการดิสก์ เมื่อไดรฟ์ของคุณออนไลน์จะมีการกำหนดอักษรระบุไดรฟ์

เลื่อนเมาส์ไปที่รายการเหล่านี้เพื่อดูเมนูแบบเรียงซ้อนของอุปกรณ์ที่เชื่อมต่อกับคอมพิวเตอร์ของคุณและพร้อมใช้งาน หากคุณเชื่อมต่ออุปกรณ์ใหม่กับคอมพิวเตอร์แม่ข่ายและคุณสมบัติการเชื่อมต่ออัตโนมัติไม่ได้เชื่อมต่อกับเครื่องเสมือนอุปกรณ์จะเชื่อมต่อกับโฮสต์เป็นครั้งแรก

อย่ารีบร้อนที่จะโกรธแค้นสมัครพรรคพวกของ Redmond ยักษ์เทคโนโลยีมาช่วยคุณ USB ผ่าน IP หรือ AnywhereUSB USB over IP อนุญาตให้คุณเชื่อมต่อ usb ผ่านเครือข่าย.

AnywhereUSB เป็นฮับ usb ขนาดเล็กในเครือข่าย ด้านล่างนี้เป็นตัวอย่างของรุ่นในตลาด

  • ที่ใดก็ได้ USB / 2 - 2 พอร์ต USB


จากนั้นคุณสามารถระงับหรือยกเลิกการเชื่อมต่อเครื่องเสมือนหรือตัดการเชื่อมต่ออุปกรณ์จากเครือข่าย เวิร์กสเตชันรักษาการเชื่อมต่อโดยการเขียนรายการเชื่อมต่ออัตโนมัติไปยังไฟล์การกำหนดค่าเครื่องเสมือน หนึ่งในคุณสมบัติหลักของ virtualization คือนามธรรมฮาร์ดแวร์ แม้แต่ในระบบที่ไม่ได้ทำเวอร์ช่วลไลเซชั่นทรัพยากรเหล่านี้จะถูกแชร์ ส่วนประกอบฮาร์ดแวร์อื่น ๆ อีกมากมายมีความซับซ้อนมากขึ้นเพราะพวกเขามักจะไม่ใช้ร่วมกันแม้ใน แอปพลิเคชันแต่ละรายการ... สิ่งนี้นำเสนอความท้าทายเฉพาะในโลกเสมือนจริง

  • ที่ใดก็ได้ USB / 5 - 5 พอร์ต USB


  • ทุกที่ USB / 14 - 14 พอร์ต USB



หมายเหตุ: ปัญหาที่พบและวิธีแก้ไข

หากคุณมีปัญหาคาดหวังคำตอบทั้งหมดจากฉัน: "ฉันพูดอย่างนั้น" ในไฮเปอร์ไวเซอร์ประเภท 2 ระบบปฏิบัติการควบคุมจะถูกติดตั้งบนฮาร์ดแวร์โดยตรงและไฮเปอร์ไวเซอร์เป็นแอปพลิเคชั่นอื่นที่ทำงานอยู่ภายใน

ตัวอย่างใต้สปอยเลอร์

ไฮเปอร์ไวเซอร์ Type 1 ไม่ใช่แอปพลิเคชัน เมล็ดเหล่านี้ไม่ใช่เมล็ดแขก ระบบปฏิบัติการโอ้ ไฮเปอร์ไวเซอร์ Type 2 นั้นเป็นแอปพลิเคชัน shim ที่อ้างว่ามีอุปกรณ์ฮาร์ดแวร์ที่รูทซึ่งยอดเยี่ยมเพราะมันไม่ต้องการการแยกระดับเดียวกับไฮเปอร์ไวเซอร์ประเภท 1 ในทางทฤษฎีแล้วดูเหมือนว่าจะทำอะไรบางอย่างแม้ว่ามันจะฟังดูคล้ายกับแฮ็คสกปรกและความเสี่ยงในการแยกฉนวน แต่ความเป็นไปได้ทางเทคนิคนั้นไม่สำคัญ

การกำหนดค่า AnywhereUSB

ลองมาดูกันว่าชิ้นส่วนของฮาร์ดแวร์มีการกำหนดค่าเพื่อให้เข้าถึง usb ผ่านเครือข่าย

นี่คือลักษณะที่จะ


อินเทอร์เฟซหลายรายการมีไว้สำหรับการกำหนดค่าและจัดการอุปกรณ์
•เว็บอินเตอร์เฟสสำหรับการกำหนดค่าการตรวจสอบและการจัดการ
•ยูทิลิตี้กำหนดค่า AnywhereUSB;
•อินเตอร์เฟส Telnet Command-Line;
• Simple Network Management Protocol (SNMP)

มันไม่เหมาะ แต่เงื่อนไขการออกใบอนุญาตเป็นสิ่งที่ดีสำหรับคนส่วนใหญ่และทำให้งานเสร็จ บันทึก. ตัวเลือกที่สี่ที่ไม่ได้สำรวจในบทความนี้คือ โซลูชันซอฟต์แวร์... Reader Tim แนะนำหนึ่งในแอปพลิเคชั่นเหล่านี้และพูดคุยเกี่ยวกับประสบการณ์ของเขาด้วย คุณจะไม่มีการรับประกันใด ๆ เกี่ยวกับตำแหน่งที่เครื่องเสมือนจะทำงานเป็นครั้งคราว ใน "การโยกย้ายสดโดยไม่ต้อง การเข้าถึงทั่วไป»แม้ไม่มีคลัสเตอร์จะไม่ล็อคเครื่องเสมือนสำหรับโฮสต์ที่เฉพาะเจาะจงอีกต่อไป

วิธีที่ 2: โพรโทคอลเดสก์ท็อประยะไกล




เมื่อติดตั้งระบบปฏิบัติการบนเครื่องเสมือนจะคล้ายกับเครื่องจริง ดังนั้นคุณสามารถเปิดใช้งานการเชื่อมต่อเดสก์ท็อประยะไกลในหน้าต่างคุณสมบัติของระบบ




นอกจากนี้ยังมีเครื่องมือที่ยอดเยี่ยมที่เรียกว่า Remote Desktop Connection Manager มันเป็นรถบักกี้และไม่เสถียร แต่ความสามารถในการจัดเก็บการตั้งค่าการเชื่อมต่อที่ไม่เหมือนใครมากมายสำหรับโฮสต์ระยะไกลในต้นไม้แบบลำดับชั้นทำให้มันคุ้มค่ากับความยุ่งยากเล็กน้อย

ในการกำหนดค่าอุปกรณ์ให้พิจารณาเว็บอินเตอร์เฟสเป็นตัวเลือกที่สะดวกและง่ายที่สุด

การจัดการที่อยู่ IP

มีหลายตัวเลือกในการกำหนดที่อยู่ IP ให้กับ AnywhereUSB:
• IP แบบคงที่
•การกำหนด IP แบบไดนามิก - การใช้ Dynamic Host Configuration Protocol (DHCP);
•ที่อยู่ IP ส่วนตัวอัตโนมัติ (APIPA) หรือที่รู้จักกันดีในชื่อ Auto-IP;

วิธีเปิดใช้งานโหมดเซสชันเพิ่มเติม




สิ่งนี้ไม่แตกต่างจากวิธีการที่เราเชื่อมต่ออุปกรณ์ในเซสชันระยะไกลเป็นเวลานานมาก







ไม่ต้องการการเชื่อมต่อเครือข่ายโดยตรงจากแขกเพียงสำหรับโฮสต์ ... คุณอาจพบว่าอุปกรณ์บางอย่างไม่ทำงานเช่นเดียวกับอุปกรณ์ไฮเปอร์ไวเซอร์ Type 2 คนอื่นอาจไม่ทำงานเลย มันถูกปิดการใช้งานโดยค่าเริ่มต้นสำหรับระบบปฏิบัติการเหล่านี้ เพื่อเปิดใช้งานโหมดเซสชั่นขยาย

อย่างที่คุณสามารถจินตนาการได้วิธีที่ถูกต้องที่สุดคือที่อยู่ IP แบบคงที่ มันถูกตั้งค่าในรายการ Network Configuration


ใน mnu เดียวกันจะสะดวกมากในการตั้งค่าบริการเครือข่ายที่มีอยู่


คำแนะนำซื้อ - เครื่องมือตรวจสอบประสิทธิภาพเครือข่าย

เลือกทรัพยากรท้องถิ่นที่คุณต้องการใช้ ... เพื่อเลือกทรัพยากรท้องถิ่นเช่นดิสก์ หากคุณยังคงสนับสนุนอุปกรณ์ต่อพ่วง ดาวน์โหลดคู่มือฟรี โซลูชันการตรวจสอบประสิทธิภาพเครือข่ายจะต้องตอบสนองความซับซ้อนที่เพิ่มขึ้นของเครือข่ายและความต้องการที่เพิ่มขึ้นของผู้ใช้และแอปพลิเคชัน

ก่อนอื่นคำสองสามคำเกี่ยวกับการแก้ปัญหาข้างต้น

  • คุณลืมใส่ที่อยู่อีเมลของคุณ
  • ที่อยู่อีเมลนี้ไม่ถูกต้อง
  • คุณมีอักขระครบจำนวนสูงสุดแล้ว
  • โปรดป้อนที่อยู่อีเมล บริษัท ของคุณ
หากคุณอยู่นอกสหรัฐอเมริกาคุณยอมรับว่าข้อมูลส่วนบุคคลของคุณจะถูกโอนไปยังสหรัฐอเมริกาและดำเนินการที่นั่น การสนับสนุนอุปกรณ์ต่อพ่วงเหล่านี้มีความสำคัญอย่างยิ่งที่จะได้รับประโยชน์สูงสุดจากเดสก์ทอปเสมือนของคุณ หากไม่มีการเข้าถึงเครื่องพิมพ์พอร์ตและอุปกรณ์ต่อพ่วงอื่น ๆ ที่รู้จักกันแล้วจะเป็นการยากที่จะสร้างการรับสำหรับเดสก์ท็อปเสมือน


บนแท็บการจัดการ Conection คุณสามารถดูการเชื่อมต่อปัจจุบัน



หากมีอุปกรณ์จำนวนมากและพวกเขาเหมือนกันทั้งหมด

ในฐานะผู้ดูแลระบบคุณต้องรู้ว่าอุปกรณ์ภายนอกใดบ้างที่อยู่ในตลาดและวิธีที่คุณสามารถสนับสนุนอุปกรณ์เหล่านั้นได้ อย่างไรก็ตามคุณต้องระวังด้วยฟังก์ชั่นนี้ ผลิตภัณฑ์การจำลองเสมือนสำหรับเดสก์ท็อปแต่ละตัวมีการสนับสนุนอุปกรณ์ต่อพ่วงที่แตกต่างกันเล็กน้อย

เทคโนโลยีนี้สามารถใช้ได้กับตัวเลือกเครือข่ายมากมาย ในด้านการแพทย์เครื่องตรวจสอบความดันโลหิตเซ็นเซอร์อัตราการเต้นหัวใจและอุปกรณ์ต่อพ่วงอื่น ๆ ได้รับการสนับสนุน สิ่งเหล่านี้รวมถึงแป้นพิมพ์เมาส์และสมาร์ทการ์ด ไม่สำคัญว่าอุปกรณ์เหล่านี้จะเชื่อมต่อกับลูกค้าอย่างไร อุปกรณ์ต่อพ่วงเหล่านี้ใช้งานได้ในเซสชันเดสก์ท็อปเสมือนเท่านั้นเนื่องจากโปรโตคอลที่รองรับนั้นรองรับ

ตอนนี้สิ่งที่ต้องทำต่อไปบนเครื่องเสมือนคือทุกอย่างมีเหตุผลอย่างมากคุณต้องติดตั้งไดรเวอร์จากที่ใดก็ได้ที่นั่นและตั้งค่าที่อยู่ IP ของอุปกรณ์ อย่างที่คุณเห็นฉันได้เชื่อมต่อแล้วและมีที่อยู่ IP ภายใน


ด้วยความช่วยเหลือของยูทิลิตี้พิเศษ Anywhere View คุณสามารถตรวจสอบความพร้อมใช้งานและการใช้งานของอุปกรณ์ทั้งหมด บางทีนี่อาจเป็นวิธีที่ง่ายและน่าเชื่อถือที่สุดในการส่งต่อโทเค็นแฟลชไดรฟ์และโมเด็มต่าง ๆ ไปยังเครื่องเสมือนของคุณอุปกรณ์เหล่านี้มีราคาต่างกัน แต่ถ้าคุณใช้เงินไปกับซอฟต์แวร์และไฮเปอร์ไวเซอร์แล้ว

นอกจากนี้ยังเป็นไปได้ที่จะใช้เทคโนโลยีที่จัดทำโดยผู้ผลิตซึ่งเน้นน้อยลงในเครือข่าย เดสก์ท็อปเสมือนอาจไม่สามารถรับมือกับเวลาแฝงที่สูงในการเข้าถึงอุปกรณ์เหล่านี้ ในทางกลับกันสิ่งนี้นำไปสู่ข้อผิดพลาดการหมดเวลาและความไม่แน่นอน

เดสก์ท็อปเสมือนที่ไม่เสถียรถูกอ้างถึงว่าเป็นช่วงที่ "ลบ" เซสชันเมื่อผู้ใช้ออกจากระบบ ข้อมูลจากเซสชันล่าสุดจะไม่ถูกบันทึก สถานการณ์นี้มีผลต่อเซิร์ฟเวอร์และระบบย่อยที่เกี่ยวข้อง สำหรับเดสก์ท็อปเสมือนที่คงอยู่ผู้ใช้จะได้รับมอบหมายเครื่องเสมือนเดียวกันเสมอเมื่อเข้าสู่ระบบ


วันนี้มีหลายวิธีที่จะส่งต่ออุปกรณ์ USB ไปยังคอมพิวเตอร์เครื่องอื่นหรือเครื่องเสมือนผ่านเครือข่าย
ที่ได้รับความนิยมมากที่สุดคือผลิตภัณฑ์ฮาร์ดแวร์เช่น AnywhereUSB และผลิตภัณฑ์ซอฟต์แวร์ล้วนๆซึ่งฉันลองด้วยตัวเอง: USB Redirector และ USB / IP
ฉันอยากจะบอกคุณเกี่ยวกับวิธีที่น่าสนใจอีกวิธีหนึ่งที่ทำงานได้โดยตรงกับตัวจำลอง QEMU
นอกจากนี้ยังเป็นส่วนหนึ่งของโครงการเครื่องเทศอย่างเป็นทางการโดย RedHat

สภาพแวดล้อมเดสก์ทอปเสมือนจริงบางเครื่องรองรับสแกนเนอร์ที่อนุญาตให้คุณสร้างสำเนาเอกสารและภาพถ่ายดิจิทัล พวกเขาสามารถส่งผ่านเครือข่าย สิ่งนี้ทำให้เป็นอิสระไม่ว่าลูกค้าจะเชื่อมต่อกับอุปกรณ์โดยตรงหรือไม่ การพิมพ์มีความก้าวหน้าอย่างมาก แต่ก็ยังคงมีปัญหากับเดสก์ท็อปเสมือนจริง ทางออกหนึ่งคือเปลี่ยนเส้นทางเครื่องพิมพ์ มันแมปเครื่องพิมพ์ของลูกค้าโดยตรงหรือโดยอ้อมแล้วทำซ้ำกับเซสชันเดสก์ทอปเสมือน

ทันทีที่ผู้ใช้พิมพ์จากเดสก์ท็อปเสมือนจริงงานพิมพ์จะถูกส่งไปยังไคลเอนต์และเครื่องพิมพ์ มีคันโยกมากมายที่ตั้งค่าไว้ในระหว่างกระบวนการพิมพ์และแน่นอนว่ามีบางอย่างผิดปกติ ไดรเวอร์เครื่องพิมพ์สามารถปฏิเสธบริการได้อย่างง่ายดายหรือบริการ Print Spooler อาจขัดข้องในไคลเอนต์เสมือนหรือเซสชันเดสก์ท็อป นี่คือไดรเวอร์นับร้อยหรือพันในเกม อย่างไรก็ตามมีทางเลือกที่ซับซ้อนน้อยกว่า

UsbRedir เป็นโปรโตคอลเปิดสำหรับการส่งต่ออุปกรณ์ USB ผ่าน tcp ไปยังเซิร์ฟเวอร์เสมือนระยะไกลพัฒนาโดยได้รับการสนับสนุนจาก RedHat ซึ่งเป็นส่วนหนึ่งของโครงการเครื่องเทศ แต่เมื่อมันปรากฏออกมาก็สามารถใช้งานได้ค่อนข้างประสบความสำเร็จโดยไม่มีเครื่องเทศ เซิร์ฟเวอร์คือ usbredirserver ซึ่งทำหน้าที่สะดุดอุปกรณ์ usb ในพอร์ตเฉพาะและไคลเอนต์คือ QEMU เองซึ่งจำลองการเชื่อมต่อของอุปกรณ์ usb ที่ส่งออกไปยังคอนโทรลเลอร์ usb ที่เฉพาะเจาะจงของเครื่องเสมือนของคุณ ด้วยวิธีนี้ระบบปฏิบัติการใด ๆ ที่สามารถใช้เป็นระบบแขกได้เนื่องจากไม่ทราบว่าอุปกรณ์นั้นถูกส่งต่อจากระยะไกลและตรรกะทั้งหมดอยู่กับ QEMU

ข้อควรพิจารณาเพิ่มเติมสำหรับอุปกรณ์ต่อพ่วง

สิ่งนี้จะแทนที่ไดรเวอร์เฉพาะสำหรับเครื่องพิมพ์ที่เกี่ยวข้อง อย่างไรก็ตามทางเลือกเหล่านี้ก็มีข้อเสียเช่นกัน แน่นอนว่าพวกเขาไม่สามารถรองรับทุกคุณสมบัติของเครื่องพิมพ์ที่มีอยู่ทุกเครื่อง หากเครื่องพิมพ์มีคุณสมบัติที่ไดรเวอร์ทั่วไปไม่สามารถข้ามได้แสดงว่าไม่สามารถใช้งานได้ นี่เป็นข้อดีที่งานพิมพ์ถูกบีบอัดและทำให้ลดภาระงานบนเครือข่าย อุปกรณ์จำนวนมากที่สามารถใช้เป็นไคลเอนต์เดสก์ท็อปเสมือนมีหน้าจอแบบมัลติทัช

ก่อนอื่นคำสองสามคำเกี่ยวกับการแก้ปัญหาข้างต้น

  • AnywhereUSB เป็นวิธีการแก้ปัญหาที่ดี แต่มีราคาแพงและมีข้อบกพร่องที่น่ารังเกียจเช่นหากแฟลชไดรฟ์ที่ใช้ร่วมกันหลุดออกไปคุณสามารถเชื่อมต่อกลับคืนได้โดยการลบและแทรกเท่านั้น
  • USB / IP - โครงการ OpenSource ดูเหมือนว่ามันจะถูกทิ้งร้าง ที่จริงแล้วมันเป็นรถบั๊กกี้ เมื่อการเชื่อมต่อถูกทำลายเครื่องมักจะเข้าสู่ Freezee ที่สมบูรณ์และหน้าต่างแสดง BSOD
  • ตัวเปลี่ยนเส้นทาง USB - ซอฟต์แวร์ที่ยอดเยี่ยม สำหรับการแชร์อุปกรณ์จาก linux ไปยัง linux นั้นฟรีในกรณีอื่น ๆ ทั้งหมดมีค่าใช้จ่ายไม่มากเท่ากับ AnywhereUSB แต่ไม่ฟรีเท่าที่เราต้องการ :)
อย่างที่คุณเห็นมีให้เลือกมากมาย แต่สุดท้ายเราก็ลองวิธีอื่น - UsbRedir

การตั้งค่าเครื่องเสมือน

ในการที่จะเชื่อมต่อกับอุปกรณ์ที่ส่งออกคุณจะต้องสร้างตัวควบคุม usb ที่จำเป็นบนเครื่องเสมือน:

  • uhci - สำหรับ USB1.0
  • ehci - สำหรับ USB2.0
  • xhci - สำหรับ USB3.0
สำหรับ qemu (ไม่มี libvirt)

เพิ่มตัวเลือกให้กับคำสั่งเพื่อเริ่มเครื่องเสมือน:
-device ich9-usb-ehci1, id \u003d ehci, addr \u003d 1d.7, มัลติฟังก์ชั่ \u003d บนอุปกรณ์ ich9-usb-uhci1, id \u003d uhci-1, addr \u003d 1d.0, มัลติฟังก์ชั่ \u003d บน, masterbus \u003d ehci.0 , firstport \u003d 0 -device ich9-usb-uhci2, id \u003d uhci-2, addr \u003d 1d.1, มัลติฟังก์ชั่ \u003d เปิด, masterbus \u003d ehci.0, firstport \u003d 2-device ich9-usb-uhci3, id \u003d uhci-3 , addr \u003d 1d.2, มัลติฟังก์ชั่น \u003d เปิด, masterbus \u003d ehci.0, firstport \u003d 4

สำหรับ libvirt
ในไฟล์การกำหนดค่าดั้งเดิมของเครื่องเสมือนในโฮสต์ & ltd อุปกรณ์ & gt ลบคอนโทรลเลอร์ USB ทั้งหมดและเพิ่มบล็อคต่อไปนี้:

อย่างไรก็ตามถ้าคุณใช้เครื่องเทศจากนั้นเพิ่มอุปกรณ์พิเศษอีก 3 ตัวลงในคอนโทรลเลอร์คุณจะสามารถส่งต่ออุปกรณ์ usb จากไคลเอนต์เครื่องเทศไปยังเซิร์ฟเวอร์ได้

ตัวอย่างใต้สปอยเลอร์

สำหรับ qemu
เราเพิ่มตัวเลือกต่อไปนี้ในคำสั่งสำหรับการเริ่มเครื่องเสมือนนอกเหนือจากตัวควบคุมที่เรากำหนดไว้ก่อนหน้านี้:
-chardev spicevmc, ชื่อ \u003d usbredir, id \u003d usbredirchardev1 -device usb-redir, -chardev-chardev \u003d usbredirchardev1, id \u003d usbredirdev1, ดีบัก \u003d 3 -chardev spicevmc, ชื่อ \u003d usbredirch, id \u003d usbredirchardev1, \u003d usbredirdev2, debug \u003d 3 -chardev spicevmc, ชื่อ \u003d usbredir, id \u003d usbredirchardev3 -device usb-redir, chardev \u003d usbredirchardev3, id \u003d usbredirdev3, debug \u003d 3
สำหรับ libvirt
ในไฟล์กำหนดค่าเริ่มต้นของเครื่องเสมือนในโหนด & ltdevices & gt ให้เพิ่มตัวเลือกต่อไปนี้นอกเหนือจากตัวควบคุมที่เรากำหนดไว้ก่อนหน้านี้:

ตอนนี้ทุกอย่างพร้อมสำหรับการส่งต่อ

เซิร์ฟเวอร์เริ่มทำงาน

แพ็คเกจ usbredirserver สามารถพบได้ในที่เก็บมาตรฐานในการแจกแจงลินุกซ์ที่เป็นที่นิยมเกือบทั้งหมด

เราใส่ USB แฟลชไดรฟ์ลงในคอมพิวเตอร์ดูผลลัพธ์ของอุปกรณ์ usb:
$ lsusb ... รถบัส 003 อุปกรณ์ 011: ID 125f: c82a A-DATA Technology Co. , Ltd. ...

เราจะเห็นว่าผู้ขายคู่: prodid เท่ากับ 125f: c82a และเคอร์เนลได้ระบุแฟลชไดรฟ์ usbbus-usbaddr 003-001 ตามลำดับ

ตอนนี้มาแบ่งปันกันที่พอร์ต 4000:

# การใช้ผู้จำหน่ายคู่: prodid $ usbredirserver -p 4000 125f: c82a # การใช้คู่ usbbus-usbaddr $ usbredirserver -p 4000 003-011

การเชื่อมต่ออุปกรณ์กับเครื่องเสมือน

ผ่านตัวเลือกเมื่อเริ่มต้น VM

อุปกรณ์ที่ต้องเชื่อมต่อกับ VM สามารถระบุได้เมื่อเริ่มต้นด้วยการเพิ่มตัวเลือกต่อไปนี้ในคำสั่งเริ่มต้น

สำหรับ qemu
-chardev socket, id \u003d usbredirchardev1, พอร์ต \u003d 4000, host \u003d 192.168.1.123 -device usb-redir, chardev \u003d usbredirchardev1, id \u003d usbredirdev1, บัส \u003d ehci.0, debug \u003d 4
สำหรับ libvirt
บล็อกนี้ถูกวางไว้ด้านหน้าแท็ก & lt / อุปกรณ์ & gtถัดจากตัวควบคุมที่เรากำหนดไว้ก่อนหน้านี้:
มันสามารถดำเนินการได้ด้วยคำสั่ง อุปกรณ์ virsh แนบ

หรือผ่านทาง qemu-monitor

เราไปที่ไฮเปอร์ไวเซอร์และใน qemu-monitor ของเครื่องของเราดำเนินการคำสั่งต่อไปนี้:
# เพิ่มซ็อกเก็ตอุปกรณ์ของเราเพิ่มซ็อกเก็ต id \u003d usbredirchardev1 พอร์ต \u003d 4000 โฮสต์ \u003d 192.168.1.123 # เชื่อมต่อกับคอนโทรลเลอร์ ehci (USB-2.0) device_add usb-redir, chardev \u003d usbredirchardev1, บัส \u003d ebredirdev1, บัส \u003d ehci 0, debug \u003d 4
หากต้องการปิดใช้งานแฟลชไดรฟ์คำสั่งต่อไปนี้เพียงพอ:
device_del usbredirdev1

หลังจากทำตามขั้นตอนเหล่านี้แล้ว VM ของคุณจะเห็นแฟลชไดรฟ์ USB ของคุณและสามารถใช้งานได้จริง

หากมีอุปกรณ์จำนวนมากและพวกเขาเหมือนกันทั้งหมด

นี่คือที่ที่มีงานที่น่าสนใจปรากฏขึ้นจะส่งต่ออุปกรณ์ที่เหมือนกันหลาย ๆ เครื่องไปยัง VM ที่แตกต่างกันอย่างไร
ในเวลาเดียวกันก็ควรสังเกตว่าอุปกรณ์ทั้งหมดมีผู้ขายเดียวกัน: คู่ prodid และคู่ usbbus-usbaddr ไม่คงที่เลยทันทีที่คุณลบและใส่อุปกรณ์ก็จะเปลี่ยน usbaddr ทันที

ฉันแก้ไขมันด้วย udev
อย่างไรก็ตามถ้าคุณไม่เข้าใจว่า udev ทำงานอย่างไร Debian Wiki มีความเท่ห์

ลองเริ่มกันเลย

อันดับแรกเราต้องค้นหาหมายเลขซีเรียลของอุปกรณ์ของเราซึ่งเราจะระบุหมายเลขนั้นใน udev:

มาเริ่ม udev monitor กันดีกว่า:
$ udevadm มอนิเตอร์ --environment --udev
และใส่อุปกรณ์ของเราหลังจากนั้นเราจะเห็นรายการตัวแปรสำหรับอุปกรณ์นี้ทันทีที่ udev ได้เตรียมใช้งานสำหรับเรา:
... UDEV เพิ่ม / อุปกรณ์ / เสมือน / bdi / 8: 16 (bdi) ACTION \u003d เพิ่ม DEVPATH \u003d / อุปกรณ์ / เสมือน / bdi / 8: 16 ID_SERIAL_SHORT \u003d 11C130317234004B SEQNUM \u003d 4352 ระบบย่อย \u003d bdi USEC_INITIALIZED \u003d 189056149826 ...
ข้อมูลเกี่ยวกับซีเรียลและแอ็ตทริบิวต์อื่น ๆ สามารถหาได้ในอีกทางหนึ่ง แต่มันควรจะเป็นที่ทราบกันดีว่าในการเขียนกฎเราจะใช้ตัวแปรจากคำสั่งด้านบนไม่ใช่คุณลักษณะจากคำสั่งด้านล่าง มิฉะนั้นทริกเกอร์ลบจะไม่ทำงานเมื่ออุปกรณ์ถูกตัดการเชื่อมต่อ
ข้อมูล $ udevadm -a -n / dev / bus / usb / 003/011 | grep "(อนุกรม)"

ตอนนี้ให้สร้างไฟล์ /etc/udev/rules.d/99-usb-serial.rules และเขียนกฎต่อไปนี้ลงไป:
ACTION \u003d\u003d "เพิ่ม", ENV (ID_SERIAL_SHORT) \u003d "11C130317234004B", RUN + \u003d "/ usr / bin / usbredirserver -p 4000 $ attr (busnum) - $ attr (devnum)" ACTION \u003d\u003d "ลบ", ENV (ID_SERIAL_SHORT) ) \u003d "11C130317234004B", RUN + \u003d "/ usr / bin / fuser -k 4000 / tcp"

โหลดกฎ udev อีกครั้ง:
การควบคุม $ udevadm - โหลดกฎ
เสร็จแล้วตอนนี้เมื่อเราเชื่อมต่ออุปกรณ์ของเรามันจะค้นหาพอร์ตที่เราต้องการโดยอัตโนมัติและเมื่อเราตัดการเชื่อมต่อผู้ใช้เบราว์เซอร์มันจะหยุดทำงาน
เราเพิ่มอุปกรณ์อื่นโดยการเปรียบเทียบ

นั่นคือทั้งหมดที่ ขอขอบคุณสำหรับความสนใจของคุณ:)