เอาล่ะ ถึงตอนนี้ คุณก็เชี่ยวชาญกับ KVM พอสมควรแล้ว เรามีบทช่วยสอนจำนวนหนึ่ง รวมถึงบทแนะนำพื้นฐานและการตั้งค่าและการใช้งานระดับกลาง การกำหนดค่าเครือข่ายและที่เก็บข้อมูล และการตั้งค่า KVM ควบคู่ไปกับ VirtualBox ขั้นตอนต่อไปคือการเรียนรู้เกี่ยวกับการเชื่อมโยงเครือข่าย เพื่อให้เราสามารถให้ที่อยู่ IP ภายนอกที่ใช้งานได้แก่เครื่องเสมือนของเรา ในกรณีที่เราจำเป็นต้องส่งต่อพอร์ตและอื่นๆ
สิ่งที่ฉันจะแสดงให้คุณเห็นในวันนี้จะแตกต่างจากสิ่งที่คุณเคยเห็นในบทช่วยสอนส่วนใหญ่ที่อื่นเล็กน้อย กล่าวคือ ฉันจะพยายามหลีกเลี่ยงแนวทางการบังคับเดรัจฉานที่คุณอาจเคยเห็นในบทช่วยสอนอื่นๆ ฉันจะแสดงวิธีที่เป็นไปได้สองวิธีในการเปิดเผยเครื่องเสมือนของคุณสู่โลกภายนอก วิธีหนึ่งคือการแฮ็ค แต่ก็เป็นอัจฉริยะอย่างแน่นอน คุณไม่เคยเห็นมาก่อน! และเราจะพูดถึงข้อจำกัดและปัญหาที่อาจเกิดขึ้นเล็กน้อย
หมายเหตุ:ภาพที่ถ่ายจาก Wikipedia ได้รับอนุญาตภายใต้ CC BY-SA 3.0; ทีเซอร์ดัชนีเงื่อนไขเดียวกัน
การเตรียมตัวเบื้องต้น
ให้เราเริ่มต้นด้วยการตรวจสอบความเป็นจริง เครือข่ายแบบบริดจ์นั้นน่าเกลียดเล็กน้อยและต้องการความเข้าใจเกี่ยวกับบรรทัดคำสั่งของ Linux อย่างไรก็ตาม บางครั้งการเชื่อมก็มีความจำเป็น หากคุณต้องการเรียกใช้เซิร์ฟเวอร์บางประเภทภายในเครื่องเสมือน คุณอาจต้องการระบุที่อยู่ IP ภายนอกเพื่อให้โฮสต์อื่นสามารถสื่อสารกับเซิร์ฟเวอร์ได้โดยตรง
ตัวอย่าง:เราเตอร์ของคุณให้ที่อยู่ในช่วง 10.0.0.X โฮสต์จริงของคุณใช้ 10.0.0.4 แต่เครื่องเสมือนของคุณทำงานด้วย 192.168.2.133 หากไม่มีการเปลี่ยนแปลงวิธีการตีความแพ็กเก็ตที่ระบบส่งไปมา ลูกข่ายบนเครือข่าย 10.0.0 จะไม่สามารถพูดคุยกับลูกข่ายบนเครือข่าย 192.168.2 ได้
คุณสามารถแก้ไขปัญหาได้โดยใช้การเชื่อมโยง ซึ่งจะทำให้เครื่องเสมือนของคุณสามารถเชื่อมต่อกับเราเตอร์และรับที่อยู่ IP ภายนอกได้ ในบริบทนี้ ภายนอกหมายถึงอะไรก็ตามที่โฮสต์จริงของคุณใช้อยู่ ไม่จำเป็นต้องเป็นที่อยู่ที่ไม่ใช่ส่วนตัว
ตามค่าเริ่มต้น KVM จะสร้างบริดจ์ของตัวเอง 192.168.122.1 อุปกรณ์นี้ทำหน้าที่เป็นเราเตอร์เสมือนสำหรับเครื่องเสมือนของคุณและจะให้ที่อยู่ IP ในช่วงนี้ อย่างไรก็ตาม เราต้องการให้เครื่องของเราเช่าที่อยู่ภายนอก ในบทช่วยสอนนี้ นี่คือช่วง 192.168.2
ทางเลือกสองทางเลือก
มีสองวิธีที่เราสามารถลองทำสิ่งนี้ได้
หนึ่ง เราจะสร้างสะพาน อุปกรณ์สองเครื่องจะเชื่อมต่อกัน อุปกรณ์ทางกายภาพของเรา eth1 และอุปกรณ์เสมือนที่เรียกว่า vnet0 หลังจากที่เราแน่ใจว่าบริดจ์ของเราทำงานได้อย่างถูกต้อง เราจะยอมรับการเปลี่ยนแปลงไปยังไฟล์การกำหนดค่าเครือข่ายบนดิสก์ เครื่องเสมือนจะเช่าที่อยู่ IP จากเราเตอร์ สิ่งนี้คล้ายกับที่เราทำกับ VirtualBox นี่คือวิธีการที่เราจะกล่าวถึงที่นี่
วิธีที่สองไม่รับประกันว่าจะได้ผล แต่อาจทำได้ หากอะแดปเตอร์เครือข่ายของคุณรองรับการเชื่อมต่อแบบสำเร็จรูป คุณอาจใช้งานได้โดยตรง การเปลี่ยนแปลงเพียงอย่างเดียวที่คุณต้องทำคือกำหนดซับเน็ตขนาดเล็กของแอดเดรสให้กับบริดจ์เสมือนของคุณใน KVM ซึ่งไม่ทับซ้อนกับแอดเดรสที่ใช้โดยโฮสต์จริงบนเครือข่ายข้อจำกัด
มีหลายสิ่งที่ผิดพลาดได้ เราเตอร์ของคุณอาจไม่รองรับการเชื่อมต่อ อินเทอร์เฟซเครือข่ายของคุณอาจไม่รองรับการเชื่อมต่อ การเช่าที่อยู่ IP ที่มีอยู่ของคุณอาจถูกจำกัด คุณอาจมีไฟร์วอลล์รบกวน ประการสุดท้าย โดยเฉพาะสำหรับ Ubuntu คุณอาจพบปัญหาและข้อขัดแย้งหาก Network Manager กำลังจัดการอินเทอร์เฟซแบบบริดจ์
สำหรับการอ่านเพิ่มเติม โปรดดูเอกสารต่อไปนี้:
การตั้งค่าบริดจ์บน Linux Foundation
เครือข่าย KVM - เอกสารประกอบชุมชน Ubuntu
เอาล่ะ ตอนนี้คุณรู้แล้วว่าอะไรอยู่ข้างหน้าเรา การเชื่อมโยงไม่ใช่เรื่องง่ายอย่างแน่นอน มีหลายสิ่งที่คุณต้องคำนึงถึง ประการแรก อะแดปเตอร์เครือข่ายของคุณรองรับการบริดจ์หรือไม่ ตัวอย่างเช่น ในแล็ปท็อปบางรุ่น อแด็ปเตอร์ไร้สายไม่รองรับโหมดการทำงานนี้จริงๆ ประการที่สอง คุณสบายใจที่จะเล่นซอกับการตั้งค่าเครือข่ายหรือไม่? ประการที่สาม คุณกำลังพยายามทำอะไรให้สำเร็จ บางที NAT อาจดีพอสำหรับคุณ?
แนวคิดพื้นฐานของเครือข่าย
ในขณะที่กล่องทดสอบของฉันคือ Ubuntu ฉันต้องการให้บทช่วยสอนนี้ไม่เชื่อเรื่องพระเจ้า การติดตามเอกสารชุมชน Ubuntu KVM เป็นสิ่งที่ดี แต่จะใช้ได้กับระบบที่ใช้ Debian เท่านั้น ดังนั้น เรามาเบี่ยงเบนประเด็นเล็กน้อยและแนะนำแนวคิดเกี่ยวกับเครือข่ายที่ใช้ได้ทั้งกับระบบ RedHat และ SUSE
ในระบบที่ใช้ Debian เช่น Ubuntu การกำหนดค่าเครือข่ายถาวรจะอยู่ภายใต้ /etc/network/interfaces บนระบบที่ใช้ RedHat ร่วมกับเพื่อนและครอบครัวของ SUSE การกำหนดค่าเครือข่ายจะถูกจัดเก็บไว้ในไฟล์แต่ละไฟล์ภายใต้ /etc/sysconfig/network ซึ่งมักจะนำหน้าด้วย ifcfg-ethX หรือ ifcfg-eth-MAC-address แทนที่ eth ทั่วไปด้วยชื่ออินเทอร์เฟซที่สอดคล้องกันตามที่คุณเห็นในระบบของคุณโดยใช้คำสั่ง ifconfig
คุณยังสามารถสร้างบริดจ์โดยใช้ยูทิลิตี brctl ในบรรทัดคำสั่ง โดยไม่ต้องเปลี่ยนแปลงไฟล์กำหนดค่าของคุณ แต่การตั้งค่าจะหายไปทุกครั้งที่คุณเริ่มบริการเครือข่ายใหม่ นี่เป็นวิธีที่แนะนำในการทดสอบก่อน ก่อนที่จะแก้ไขไฟล์ระบบใดๆ และอย่าลืมสำรองข้อมูลการกำหนดค่าของคุณก่อนที่จะเล่นซอ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าเครือข่าย โปรดดูบทความคำสั่ง Linux ของฉัน
สร้างสะพาน
ตอนนี้เราพร้อมที่จะเล่นแล้ว ฉันขอแนะนำให้คุณเริ่มต้นด้วยการใช้คำสั่ง brctl, ifconfig และ dhclient คุณจะขอโทษหากฉันไม่ได้ลงรายละเอียดมากเกินไปเกี่ยวกับวิธีการใช้งานเหล่านี้ หากมีคนต้องการมาก ก็จะมีการสอนเพิ่มเติม โดยทั่วไป ลำดับจะเป็นดังนี้ (ด้วย sudo หรือเป็นรูท) - สมมติว่า br0 อุปกรณ์จริงและ/หรือเสมือน eth0/1 และ DHCP เช่าจากสวิตช์หรือเราเตอร์:
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
brctl บวกbr br0
brctl บวก br0 eth0
brctl บวก br0 eth1
dhclient br0
โปรดทราบว่าอาจไม่มีอแด็ปเตอร์เสมือนจนกว่าคุณจะสร้างและเริ่มเครื่องเสมือน ดังนั้น คุณไม่จำเป็นต้องเพิ่มอะแด็ปเตอร์เสมือนในตอนนี้ KVM จะทำสิ่งนั้นให้คุณโดยอัตโนมัติ หากคุณเลือกเครือข่ายบริดจ์ในตัวเลือกขั้นสูง
หากคุณเห็นอินเทอร์เฟซบริดจ์ของคุณเช่าที่อยู่ภายนอกจากเซิร์ฟเวอร์ DHCP แสดงว่าคุณมาถูกทางแล้ว สำหรับผู้ใช้ตามบ้าน เซิร์ฟเวอร์ DHCP จะเป็นเราเตอร์ หากคุณมีการเชื่อมต่ออินเทอร์เน็ตโดยตรง อาจเป็นไปไม่ได้ เนื่องจาก ISP ของคุณอาจไม่อนุญาตให้มีที่อยู่ IP มากกว่าหนึ่งที่อยู่ต่อผู้ใช้
เมื่ออินเทอร์เฟซบริดจ์ปรากฏขึ้น ตรวจสอบให้แน่ใจว่าฟังก์ชันการทำงานของเครือข่ายของคุณยังคงไม่เปลี่ยนแปลง คุณอาจต้องแก้ไข /etc/resolv.conf และอาจแก้ไขตารางเส้นทาง
หากวิธีนี้ได้ผล คุณอาจต้องการยืนยันการเปลี่ยนแปลงกับไฟล์การกำหนดค่าเครือข่าย โปรดทราบว่าตัวอย่างของฉันเป็นแบบทั่วไป คล้ายกับที่แสดงในเอกสารประกอบชุมชนมาก ตัวอย่างเช่น คุณอาจต้องเปิดใช้งาน Spanning Tree Protocol (STP) บนสะพานของคุณ เพื่อจัดการเส้นทางกระโดดหรือเส้นทางวนหลายจุดอย่างเหมาะสม
โดยเฉพาะอย่างยิ่ง ในกรณีของเรา เราต้องการแก้ไข /etc/network/interface และเพิ่ม br0 ที่นั่น หากคุณต้องการ STP โปรดเปลี่ยน bridge_stp off เป็น bridge_stp on คุณสามารถตรวจสอบว่าบริดจ์ของคุณทำอะไรได้บ้างโดยออกคำสั่ง btctl show
และความสนุกของ STP - ฟังดูซุกซนใช่ไหม
สร้างเครื่องเสมือน
เราเรียนรู้วิธีการทำสิ่งนี้มาก่อน ดังนั้นมันจึงไม่ใช่เรื่องใหม่ ในขั้นตอนสุดท้าย ภายใต้ตัวเลือกขั้นสูง ให้เปลี่ยนการกำหนดที่อยู่เครือข่ายและตรวจสอบให้แน่ใจว่าอแด็ปเตอร์เสมือนมีที่อยู่ MAC เฉพาะที่ไม่ขัดแย้งกับที่อยู่อื่น
หากคุณโชคดี คุณอาจไม่ต้องตั้งค่าการเชื่อมต่อแบบพิเศษด้วยซ้ำ อะแดปเตอร์เครือข่ายของคุณสามารถรองรับได้ตั้งแต่แกะกล่อง จากนั้นคุณก็สบายดี! แต่คุณอาจจะโชคไม่ดีนัก
เพื่อให้แน่ใจว่าทุกอย่างใช้งานได้:
หากคุณสามารถ ping ได้คุณสามารถแฮ็กได้ สิ่งนี้เกือบจะเหมือนกับที่เราทำกับ VirtualBox ตอนนี้ คุณสามารถเปิดเผยบริการ แบ่งปันข้อมูล และทุกสิ่งที่คุณต้องการ สนุก.
การตั้งค่าทางเลือก (อาจใช้ไม่ได้ แต่ก็ยอดเยี่ยม)
คุณอาจจะไม่ได้โชคดีขนาดนั้น Network Manager อาจปฏิเสธที่จะให้ความร่วมมือ และอาจมีปัญหาอื่นๆ มากมายกับการตั้งค่าของคุณ เพื่อจุดประสงค์นี้ คุณอาจต้องการสร้างอะแดปเตอร์เครือข่ายเสมือนแยกต่างหาก และกำหนดเส้นทางไปยังอุปกรณ์จริงที่คุณเชื่อว่ารองรับการเชื่อมต่อได้ทันที คำนึงถึงที่อยู่ IP ที่ขัดแย้งกัน
สุดท้าย หากสิ่งนี้ใช้ได้ผลสำหรับคุณ คุณสามารถลองใช้แฮ็คที่สกปรกมากๆ สร้างเครือข่ายเสมือนที่ใช้พื้นที่ /24 เดียวกันกับเครือข่ายของคุณ ตัวอย่างเช่น หากเราเตอร์ของคุณอยู่บนเครือข่าย 192.168.2.0 ให้สร้างเครือข่ายเสมือนที่เริ่มต้นที่ 192.168.2.160 และระบุที่อยู่เพียงช่วงเล็กๆ อาจเป็น 16 ที่อยู่รวมกัน ตรวจสอบให้แน่ใจว่าเราเตอร์ของคุณไม่ให้ที่อยู่เหล่านั้นกับไคลเอนต์อื่นในเครือข่าย
ตัวอย่าง:ฉันสร้างเครือข่าย 192.168.2.160/28 ฉันไม่คาดหวังว่าเราเตอร์ของฉันจะเช่าที่อยู่ในช่วงนั้น แต่ฉันสามารถจำกัดการกำหนด DHCP ได้ จากนั้น กำหนดเส้นทางเครือข่ายเสมือนไปยังอุปกรณ์จริง ในกรณีนี้คืออแด็ปเตอร์ไร้สาย eth1
และตอนนี้ สร้างเครื่องเสมือนของคุณและกำหนดเส้นทางไปยัง eth1 เช่นเดียวกับด้านบน เมื่อออนไลน์แล้ว ให้สังเกตความร่วมมือที่น่ารัก โฮสต์มีที่อยู่ .102, NIC เสมือน virbr1 มีที่อยู่ .161 ในขณะที่เครื่องเสมือนมีที่อยู่ .168
และนี่คือการ ping จากกล่อง Windows 7 ที่มีอยู่จริงบนเครือข่ายเดียวกัน ด้วยที่อยู่ .103 การ ping อะแด็ปเตอร์เสมือนด้วยที่อยู่ .161 บนกล่อง Ubuntu Lucid ทั้งสองแบบไร้สาย ทั้งคู่เชื่อมต่อผ่านเราเตอร์เดียวกัน แสดงให้เห็นว่าน่ารักและฉลาดแค่ไหน การตั้งค่าเป็นจริง ตอนนี้มันไม่ได้ผลเสมอไป แต่เมื่อมันได้ผล มันก็เป็นอัจฉริยะ
เครื่องเสมือนที่มีอยู่
สำหรับเครื่องเสมือนที่มีอยู่แล้ว คุณสามารถแก้ไขการตั้งค่าได้โดยเปลี่ยนคำสั่งภายใต้ /etc/libvirt/ เครื่องเสมือนแต่ละเครื่องมีไฟล์การกำหนดค่า .xml แยกต่างหาก คุณจะต้องเปิดเครื่องเสมือนของคุณเพื่อให้การเปลี่ยนแปลงมีผล ตัวอย่างเช่น:
<ประเภทอินเทอร์เฟซ='บริดจ์'>
<ที่อยู่ mac='00:11:22:33:44:55'/>
<ซอร์สบริดจ์='br0'/>
อินเตอร์เฟส>
สรุป
การตั้งค่าเครือข่ายแบบบริดจ์ของ KVM นั้นไม่ง่ายเลย มันเป็นมิตรกับ VirtualBox เมื่อสองหรือสามปีที่แล้ว แต่สามารถจัดการได้ แม้ว่าข้อจำกัดที่แท้จริงของคุณคือความเข้าใจและการทำงานของโทโพโลยีเครือข่าย มันจะดีขึ้นตามกาลเวลาอย่างแน่นอน
หากคุณโชคดี อะแดปเตอร์เครือข่ายของคุณจะรองรับการเชื่อมต่อทันที ถ้าไม่ คุณจะต้องสร้างอะแดปเตอร์บริดจ์และกำหนดอุปกรณ์เครือข่ายจริงและเสมือน จากนั้น แก้ไขปัญหาที่อาจเกิดขึ้นกับ DNS, DHCP หรือการกำหนดเส้นทาง สุดท้าย ในฐานะที่เป็นแฮ็กสกปรก คุณอาจต้องการลองใช้ช่วงเครือข่ายของคุณในทางที่ผิดและสร้างเครือข่ายย่อยภายในเครือข่ายย่อย ตรวจสอบให้แน่ใจว่าที่อยู่ IP ไม่ทับซ้อนกัน จากนั้นกำหนดเส้นทางอะแดปเตอร์เสมือนของคุณไปยังอุปกรณ์ทางกายภาพของคุณ
บทช่วยสอนนี้ค่อนข้างพื้นฐานแต่แฝงไปด้วยเล่ห์เหลี่ยม แต่อาจมีปัญหามากมายที่ยังไม่ได้เปิดเผย หากคุณมีคำถาม ข้อเสนอแนะ หรือต้องการเคล็ดลับในการเอาชนะการตั้งค่าเครือข่ายที่ยุ่งยากใน KVM โปรดส่งอีเมลมาหาฉัน แล้วฉันอาจสร้างภาคต่อเพื่อแก้ไขปัญหาใหม่เหล่านี้
ไชโย