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) で機能するはずで、何もする必要はないと言われています。「そのまま」とは、具体的にはどういう意味ですか? ここでは、S1 と S0 の両方で、デフォルトで FQDN が localhost.localdomain に設定されていますが、libvirt DHCP はどのようにして S0 と S1 を区別するのでしょうか?

2. dnsmasq 設定をカスタマイズしたい場合 (たとえば、log-facility=/var/log/dnsmasq.log など)、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 アドレスが取得されました。

関連情報