หากคุณไม่ต้องการทำการกำหนดค่าใด ๆ ภายในแขกตัวเลือกเดียวคือเซิร์ฟเวอร์ DHCP ที่แจกที่อยู่ IP แบบคงที่ หากคุณใช้bridge
โหมดนั่นอาจเป็นเซิร์ฟเวอร์ DHCP ภายนอกบางตัว ศึกษาคู่มือของมันเพื่อค้นหาวิธีการให้เช่าแบบคงที่
แต่อย่างน้อยในโหมดไปข้างหน้าnat
หรือroute
คุณสามารถใช้ libvirt ในตัวdnsmasqd
(เวอร์ชันล่าสุดของ libvirtd รองรับตัวเลือก "dhcp-hostsfile" ของ dnsmasq) นี่คือวิธี:
ก่อนอื่นให้ค้นหาที่อยู่ MAC ของ VM ที่คุณต้องการกำหนดที่อยู่ IP แบบคงที่:
virsh dumpxml $VM_NAME | grep 'mac address'
จากนั้นแก้ไขเครือข่าย
virsh net-list
virsh net-edit $NETWORK_NAME # Probably "default"
ค้นหา<dhcp>
ส่วน จำกัด ช่วงแบบไดนามิกและเพิ่มรายการโฮสต์สำหรับ VM ของคุณ
<dhcp>
<range start='192.168.122.100' end='192.168.122.254'/>
<host mac='52:54:00:6c:3c:01' name='vm1' ip='192.168.122.11'/>
<host mac='52:54:00:6c:3c:02' name='vm2' ip='192.168.122.12'/>
<host mac='52:54:00:6c:3c:03' name='vm3' ip='192.168.122.12'/>
</dhcp>
จากนั้นรีบูต VM ของคุณ (หรือรีสตาร์ทไคลเอ็นต์ DHCP เช่นifdown eth0; ifup eth0
)
อัปเดต: ฉันเห็นว่ามีรายงานว่าการเปลี่ยนแปลงอาจไม่มีผลหลังจาก "virsh net-edit" ในกรณีนี้ให้ลองทำสิ่งนี้หลังจากแก้ไข:
virsh net-destroy $NETWORK_NAME
virsh net-start $NETWORK_NAME
... และรีสตาร์ทไคลเอ็นต์ DHCP ของ VM
หากยังไม่ได้ผลคุณอาจต้องทำ
- หยุดบริการ libvirtd
- ฆ่ากระบวนการ dnsmasq ใด ๆ ที่ยังมีชีวิตอยู่
- เริ่มบริการ libvirtd
หมายเหตุ: ไม่มีวิธีใดที่โฮสต์ KVM สามารถบังคับให้ใช้ VM ด้วยระบบปฏิบัติการที่ไม่รู้จักและการกำหนดค่าที่ไม่รู้จักเพื่อใช้การกำหนดค่าเครือข่ายที่แน่นอน แต่ถ้ารู้ว่ารู้ว่า VM ใช้โพรโทคอลการกำหนดค่าเครือข่ายบางตัว - พูด DHCP - คุณสามารถใช้มันได้ นี่คือสิ่งที่โพสต์นี้ถือว่า
OS บางตัว (เช่น Linux distros บางตัว) อนุญาตให้ส่งตัวเลือกการกำหนดค่าเครือข่ายไปยังแขกเช่นผ่านบรรทัดคำสั่งเคอร์เนล แต่นั่นก็เฉพาะเจาะจงกับระบบปฏิบัติการและฉันไม่เห็นความได้เปรียบเหนือวิธี DHCP