我想使用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>
Run Code Online (Sandbox Code Playgroud)
我启动默认网络:
virsh # net-start default
Network default started
virsh # net-list
Name State Autostart Persistent
----------------------------------------------------------
default active no yes
Run Code Online (Sandbox Code Playgroud)
我启动客人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
Run Code Online (Sandbox Code Playgroud)
但 DHCP 似乎不起作用:
virsh # net-dhcp-leases default
Expiry Time MAC address Protocol IP address Hostname Client ID or DUID
-------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
在主机上:
ping: S1: Name or service not known
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
在虚拟管理器中
hostnamectl set-hostname server1
hostnamectl set-hostname server0
virsh # shutdown S0
virsh # shutdown S1
virsh # net-destroy default
Run Code Online (Sandbox Code Playgroud)
在主机上:
tcpdump -i virbr0
Run Code Online (Sandbox Code Playgroud)
在 qemu 中:
virsh # net-start default
virsh # start S0
virsh # start S1
Run Code Online (Sandbox Code Playgroud)
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 文件在哪里?不在 /etc/dnsmasq.conf 或 /etc/dnsmasq.d/anyname.conf 中,因为 dnsmasq 在主机上不起作用?
小智 1
我在 Debian 系统上遇到了同样的问题,我发布了一个解决方案,以防它有帮助,或者如果有人可以改进它,那就太好了:)
将以下内容添加到来宾域 XML 文件后,主机到来宾连接即可工作:
<interface type='bridge'>
<source bridge='virbr0'/>
<model type='virtio'/>
</interface>
Run Code Online (Sandbox Code Playgroud)
这在来宾系统中创建了一个以前未见过的网络接口。然后,我dhclient
在来宾虚拟机内部的接口上运行,它获得了 192.168.122.x 地址,并具有可访问主机系统的端口。
归档时间: |
|
查看次数: |
3913 次 |
最近记录: |