Nếu bạn không muốn thực hiện bất kỳ cấu hình nào bên trong máy khách, thì tùy chọn duy nhất là máy chủ DHCP cung cấp địa chỉ IP tĩnh. Nếu bạn sử dụng bridge
chế độ, đó có thể sẽ là một số máy chủ DHCP bên ngoài. Tham khảo hướng dẫn của nó để tìm hiểu làm thế nào để phục vụ cho thuê tĩnh.
Nhưng ít nhất là trong các chế độ chuyển tiếp nat
hoặc route
, bạn có thể sử dụng tính năng tích hợp sẵn của libvirt dnsmasqd
(Các phiên bản gần đây hơn của libvirtd hỗ trợ tùy chọn "dhcp-hostsfile" của dnsmasq). Đây là cách thực hiện:
Trước tiên, tìm ra địa chỉ MAC của máy ảo bạn muốn gán địa chỉ IP tĩnh:
virsh dumpxml $VM_NAME | grep 'mac address'
Sau đó chỉnh sửa mạng
virsh net-list
virsh net-edit $NETWORK_NAME # Probably "default"
Tìm <dhcp>
phần, giới hạn phạm vi động và thêm mục nhập máy chủ cho máy ảo của bạn
<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>
Sau đó, khởi động lại VM của bạn (hoặc khởi động lại máy khách DHCP của nó, vd ifdown eth0; ifup eth0
)
Cập nhật: Tôi thấy có những báo cáo rằng thay đổi có thể không có hiệu lực sau khi "chỉnh sửa mạng virsh". Trong trường hợp đó, hãy thử điều này sau khi chỉnh sửa:
virsh net-destroy $NETWORK_NAME
virsh net-start $NETWORK_NAME
... và khởi động lại máy khách DHCP của VM.
Nếu điều đó vẫn không hoạt động, bạn có thể phải
- dừng dịch vụ libvirtd
- giết bất kỳ quá trình dnsmasq vẫn còn sống
- bắt đầu dịch vụ libvirtd
Lưu ý: Không có cách nào máy chủ KVM có thể buộc VM với hệ điều hành không xác định và cấu hình không xác định sử dụng một cấu hình mạng nhất định. Nhưng nếu biết rằng VM sử dụng một giao thức cấu hình mạng nhất định - giả sử DHCP - bạn có thể sử dụng giao thức đó. Đây là những gì bài viết này giả định.
Một số HĐH (ví dụ: một số bản phân phối Linux) cũng cho phép chuyển các tùy chọn cấu hình mạng vào máy khách, ví dụ như thông qua dòng lệnh kernel. Nhưng điều đó rất cụ thể đối với HĐH và tôi thấy không có lợi thế nào so với phương thức DHCP.