ในที่สุดฉันก็พบวิธีที่เหมาะสมในการบรรลุเป้าหมายของคำถาม มันบอกเป็นนัยถึงการเชื่อมโยงกับ Linux เพราะฉันไม่สามารถแก้ปัญหาด้วยเครือข่าย libvirt ได้
ขั้นตอน:
- ระบุอินเตอร์เฟส KVM VM อาจมีชื่ออินเตอร์เฟสเริ่มต้นด้วย
vnet*
ในตัวอย่างนี้vnet0
และvnet1
สร้างลินุกซ์บริดจ์ด้วย:
brctl addbr virbr1
เชื่อมต่อส่วนต่อประสานทางกายภาพและส่วนต่อประสาน KVM VMs เข้ากับบริดจ์ใหม่:
คำเตือน: หากคุณเชื่อมต่อกับเซิร์ฟเวอร์จริงผ่านเครือข่าย (SSH, Telnet ฯลฯ ) คุณจะสูญเสียการเชื่อมต่อ ใช้เทอร์มินัลหรือวิธีอื่น (เช่นอินเทอร์เฟซอื่นที่มีการเชื่อมต่อ)
brctl addif virbr1 vnet0
brctl addif virbr1 vnet1
brctl addif virbr1 eth0
- กำหนดค่าอินเทอร์เฟซเซิร์ฟเวอร์จริงที่ไม่มีที่อยู่ IP ที่กำหนด:
ใน CentOS 6.5 ให้แก้ไขไฟล์/etc/sysconfig/network-scripts/ifcfg-eth0
ด้วยเนื้อหาเหล่านี้:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NAME=eth0
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
- กำหนดค่าบริดจ์เซิร์ฟเวอร์จริงเพื่อให้มีที่อยู่ IP:
ใน CentOS 6.5 ให้แก้ไขไฟล์/etc/sysconfig/network-scripts/ifcfg-virbr1
ด้วยเนื้อหาเหล่านี้:
DEVICE=virbr1
BOOTPROTO=none
ONBOOT=yes
IPADDR=<physical_server_public_ip_address>
NETMASK=<physical_server_public_ip_netmask>
GATEWAY=<physical_server_gateway_ip_address>
NAME=virbr1
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
NM_CONTROLLED=no
DNS1=<physical_server_primary_dns_server_ip_address>
DNS2=<physical_server_secondary_dns_server_ip_address>
- รีสตาร์ทเครือข่ายเซิร์ฟเวอร์จริง:
service network restart
หมายเหตุ: คุณควรกู้คืนการเชื่อมต่อเครือข่ายเซิร์ฟเวอร์จริง (ผ่านทางอินเทอร์เฟซและบริดจ์)
- กำหนดค่าอินเตอร์เฟสเครือข่ายของ KVM VMs:
ขึ้นอยู่กับระบบปฏิบัติการของ VM อย่างไรก็ตามควรมีที่อยู่ IP, netmask และเกตเวย์เริ่มต้นอย่างน้อย เห็นได้ชัดว่าเซิร์ฟเวอร์ DNS จะทำการกำหนดค่าให้เสร็จสมบูรณ์
การกำหนดค่าทั้งหมดเหล่านี้เป็นแบบคงที่และสามารถทดแทนได้ด้วยการกำหนด DHCP ในกรณีนี้ที่อยู่ MAC ของบริดจ์และอินเตอร์เฟส KVM VM อาจมีประโยชน์