กำหนดค่าที่อยู่ IP สาธารณะใน KVM VMs


12

ฉันมีเซิร์ฟเวอร์จริงที่ใช้งาน CentOS 6.5 โดยมีหนึ่งอินเทอร์เฟซที่เชื่อมต่อกับอินเทอร์เน็ต (พร้อมที่อยู่ IP สาธารณะหนึ่งอัน) ภายในเซิร์ฟเวอร์นี้ฉันมี VMs สองตัวที่สร้างขึ้นด้วย KVM ผ่าน libvirt โดยมีหนึ่งอินเทอร์เฟซ ฉันต้องการกำหนดที่อยู่ IP สาธารณะหนึ่งรายการให้กับแต่ละ VM แล้วใช้การเชื่อมต่อกับเซิร์ฟเวอร์จริงต่อไป

โทโพโลยีเครือข่ายภาพนี้แสดงให้เห็นถึงสิ่งที่ฉันมีในสีดำและสิ่งที่ฉันต้องการในสีน้ำเงิน:

ฉันลองหลายวิธีเช่นเพิ่มบริดจ์ Linux ด้วยbrctlและเชื่อมต่อเซิร์ฟเวอร์จริงและทั้ง VM เสมือน แต่มันใช้งานไม่ได้และฉันสูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ทางกายภาพ

ฉันเปิดให้ใช้บริดจ์ Linux หรือเครือข่าย libvirt

ฉันจะรับที่อยู่ IP สาธารณะในทั้ง VM และในเซิร์ฟเวอร์ทางกายภาพได้อย่างไร


ลองเพิ่มอะแดปเตอร์ที่สองในเครื่องเสมือนและเชื่อมต่อเข้ากับเครือข่ายเซิร์ฟเวอร์ภายใน
shcherbak

เครือข่ายเซิร์ฟเวอร์ภายในใด ต่อไปฉันต้องการตั้งค่าคำถามถ้าเป็นไปได้
ออกจากระบบ

สมมติว่าสิ่งนี้จะช่วยได้: [KVM - สร้างเครื่องเสมือนที่มี 2 บริดจ์อินเทอร์เฟซ] ( askubuntu.com/questions/581771/… ), [บริดจ์เครือข่าย KVM พร้อม NIC สองตัว] ( serverfault.com/questions/130134/ … )
shcherbak

อีกครั้งฉันอยากจะมีเพียงหนึ่งอินเตอร์เฟสต่อ VM ถ้าเป็นไปได้
ออกจากระบบ

ฉันตอบคำถามที่คล้ายกันเกี่ยวกับเดเบียน kvm โฮสต์ & แขกเมื่อวานนี้ unix.stackexchange.com/questions/245073/ … - นอกจากรายละเอียดเล็กน้อยของการตั้งค่าอินเทอร์เฟซแล้วควรจะคล้ายกันกับ centos
cas

คำตอบ:


5

ในที่สุดฉันก็พบวิธีที่เหมาะสมในการบรรลุเป้าหมายของคำถาม มันบอกเป็นนัยถึงการเชื่อมโยงกับ Linux เพราะฉันไม่สามารถแก้ปัญหาด้วยเครือข่าย libvirt ได้

ขั้นตอน:

  1. ระบุอินเตอร์เฟส KVM VM อาจมีชื่ออินเตอร์เฟสเริ่มต้นด้วยvnet*

ในตัวอย่างนี้vnet0และvnet1

  1. สร้างลินุกซ์บริดจ์ด้วย:

    brctl addbr virbr1

  2. เชื่อมต่อส่วนต่อประสานทางกายภาพและส่วนต่อประสาน KVM VMs เข้ากับบริดจ์ใหม่:

คำเตือน: หากคุณเชื่อมต่อกับเซิร์ฟเวอร์จริงผ่านเครือข่าย (SSH, Telnet ฯลฯ ) คุณจะสูญเสียการเชื่อมต่อ ใช้เทอร์มินัลหรือวิธีอื่น (เช่นอินเทอร์เฟซอื่นที่มีการเชื่อมต่อ)

brctl addif virbr1 vnet0
brctl addif virbr1 vnet1
brctl addif virbr1 eth0
  1. กำหนดค่าอินเทอร์เฟซเซิร์ฟเวอร์จริงที่ไม่มีที่อยู่ IP ที่กำหนด:

ใน CentOS 6.5 ให้แก้ไขไฟล์/etc/sysconfig/network-scripts/ifcfg-eth0ด้วยเนื้อหาเหล่านี้:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NAME=eth0
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
  1. กำหนดค่าบริดจ์เซิร์ฟเวอร์จริงเพื่อให้มีที่อยู่ 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>
  1. รีสตาร์ทเครือข่ายเซิร์ฟเวอร์จริง:

service network restart

หมายเหตุ: คุณควรกู้คืนการเชื่อมต่อเครือข่ายเซิร์ฟเวอร์จริง (ผ่านทางอินเทอร์เฟซและบริดจ์)

  1. กำหนดค่าอินเตอร์เฟสเครือข่ายของ KVM VMs:

ขึ้นอยู่กับระบบปฏิบัติการของ VM อย่างไรก็ตามควรมีที่อยู่ IP, netmask และเกตเวย์เริ่มต้นอย่างน้อย เห็นได้ชัดว่าเซิร์ฟเวอร์ DNS จะทำการกำหนดค่าให้เสร็จสมบูรณ์

การกำหนดค่าทั้งหมดเหล่านี้เป็นแบบคงที่และสามารถทดแทนได้ด้วยการกำหนด DHCP ในกรณีนี้ที่อยู่ MAC ของบริดจ์และอินเตอร์เฟส KVM VM อาจมีประโยชน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.