libvirt NAT 구성 - DHCP가 작동하지 않습니다

libvirt NAT 구성 - DHCP가 작동하지 않습니다

libvirt 네트워크 NAT 구성을 사용하고 싶습니다.

libvirt 라고https://wiki.libvirt.org/page/Virtual_network_%22default%22_has_not_been_started:

"1) 실제로 물리적 시스템에서 dnsmasq를 사용하여 DHCP를 제공하지 않는 경우물리적 네트워크, dnsmasq를 완전히 비활성화해야 합니다."

내 컨텍스트에 해당하므로 호스트 시스템에서 dnsmasq를 중지하고 비활성화합니다.

qemu 시스템에서:

virsh # net-edit default

<network>
 <name>default</name>
 <uuid>b6ef8506-d4c7-4bba-9fe7-8f971ea87d10</uuid>
 <forward mode='nat'>
  <nat>
   <port start='1024' end='65535'/>
  </nat>
 </forward>
 <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:06:86:de'/>
  <domain name='circus.net'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
   <dhcp>
    <range start='192.168.122.2' end='192.168.122.10'/>
   </dhcp>
  </ip>
</network>

기본 네트워크를 시작합니다.

virsh # net-start default
Network default started

virsh # net-list
Name State Autostart Persistent
----------------------------------------------------------
default active no yes

게스트 S0 및 S1을 시작합니다.

virsh # start S0
Domain S0 started

virsh # start S1
Domain S1 started

virsh # list
Id Name State
----------------------------------------------------
1 S0 running
2 S1 running

하지만 DHCP가 작동하지 않는 것 같습니다.

virsh # net-dhcp-leases default
Expiry Time MAC address Protocol IP address Hostname Client ID or DUID
-------------------------------------------------------------------------------

호스트 머신에서:

ping: S1: Name or service not known

내가 시도한 것 :

virt-manager에서

hostnamectl set-hostname server1
hostnamectl set-hostname server0

virsh # shutdown S0
virsh # shutdown S1
virsh # net-destroy default

호스트에서:

tcpdump -i virbr0

qemu에서:

virsh # net-start default
virsh # start S0
virsh # start S1

tcpdump는 virbr0에 아무 것도 표시되지 않습니다.

제 질문은 이 경우 DHCP를 어떻게 작동시키느냐는 것입니다.

추가 질문:

1. libvirt에서 nat conf는 상자(기본 conf)에서 작동해야 하며 아무 작업도 수행하지 않습니다. 'out of the box'가 정확히 무슨 뜻인가요? 여기서 S1과 S0 모두 기본적으로 FQDN이 localhost.localdomain으로 설정되어 있는데, libvirt DHCP가 S0과 S1을 어떻게 구별합니까?

2. dnsmasq 구성을 사용자 정의하려는 경우(예: log-facility=/var/log/dnsmasq.log와 같은 sthg) conf 파일은 어디에 있습니까? dnsmasq가 호스트에서 작동하지 않기 때문에 /etc/dnsmasq.conf 또는 /etc/dnsmasq.d/anyname.conf에 없습니까?

답변1

저는 Debian 시스템에서 동일한 문제를 겪었고 도움이 되거나 개선할 수 있는 사람이 있으면 좋을 것 같아서 솔루션을 게시하고 있습니다. :)

호스트-게스트 연결은 게스트 도메인 XML 파일에 다음을 추가한 후에 작동합니다.

<interface type='bridge'>
  <source bridge='virbr0'/>
  <model type='virtio'/>
</interface>

이로 인해 게스트 시스템에 이전에 볼 수 없었던 네트워크 인터페이스가 생성되었습니다. 그런 다음 dhclient게스트 VM 내부의 인터페이스를 실행했고 호스트 시스템에 액세스할 수 있는 포트가 있는 192.168.122.x 주소를 얻었습니다.

관련 정보