게스트 내부에서 구성을 수행하지 않으려는 경우 유일한 옵션은 고정 IP 주소를 전달하는 DHCP 서버입니다. bridge
모드 를 사용한다면 아마도 외부 DHCP 서버 일 것입니다. 정적 임대 서비스를 제공하는 방법은 설명서를 참조하십시오.
그러나 적어도 정방향 모드에서는 nat
또는을 route
사용하면 libvirt의 내장 기능을 사용할 수 있습니다 dnsmasqd
(최신 버전의 libvirtd는 dnsmasq의 "dhcp-hostsfile"옵션을 지원합니다). 방법은 다음과 같습니다.
먼저 고정 IP 주소를 할당하려는 VM의 MAC 주소를 찾으십시오.
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
... VM의 DHCP 클라이언트를 다시 시작하십시오.
그래도 문제가 해결되지 않으면
- libvirtd 서비스를 중지하십시오
- 아직 살아있는 dnsmasq 프로세스를 종료하십시오.
- libvirtd 서비스를 시작하십시오
참고 : KVM 호스트가 알 수없는 OS 및 알 수없는 구성을 가진 VM이 특정 네트워크 구성을 사용하도록 할 수있는 방법은 없습니다. 그러나 VM이 DHCP와 같은 특정 네트워크 구성 프로토콜을 사용한다는 것을 알고 있다면 사용할 수 있습니다. 이것이이 게시물의 가정입니다.
일부 OS (예 : 일부 Linux 배포판)도 네트워크 구성 옵션을 게스트로 전달할 수 있습니다 (예 : 커널 명령 줄). 그러나 이것은 OS에 매우 다르며 DHCP 방법보다 이점이 없습니다.