我正在尝试向特定的虚拟主机添加固定地址,因此我关闭了虚拟机并使用了sudo virsh net-edit somenet
. 添加行后
<host mac='52:54:00:26:61:22' name='virt.example.com' ip='192.168.111.111' />
Run Code Online (Sandbox Code Playgroud)
我保存并退出。然后我用相同的命令再次检查并恢复了以前的状态,我的更改消失了。
同时,当我查看 时/etc/libvirt/qemu/networks/somenet.xml
,会应用我的更改。
如果我再次启动我的虚拟机,它会从 DHCP 池 ( 192.168.111.170
)获取 IP ,但不是我上面定义的地址。
当我在更改后重新启动 libvirt-service 时,情况似乎相同:在配置文件中是我的更改,virsh
我看到 vanilla 状态和虚拟机获取错误的 IP。
这里有什么问题?
编辑。在此处添加完整的 XML。这是我在下面看到的 conf /etc
:
<network>
<name>somenet</name>
<uuid>80d85710-23bb-1ab6-79e6-cd65c6739714</uuid>
<bridge name='virbr1' stp='on' delay='0' />
<mac address='52:54:00:90:75:1A'/>
<domain name='example.com'/>
<ip address='192.168.111.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.111.100' end='192.168.111.254' />
<host mac='52:54:00:26:61:22' name='virt.example.com' ip='192.168.111.111' />
</dhcp>
</ip>
</network>
Run Code Online (Sandbox Code Playgroud)
这是我看到的conf virsh
:
<network>
<name>somenet</name>
<uuid>80d85710-23bb-1ab6-79e6-cd65c6739714</uuid>
<bridge name='virbr1' stp='on' delay='0' />
<mac address='52:54:00:90:75:1A'/>
<ip address='192.168.111.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.111.128' end='192.168.111.254' />
</dhcp>
</ip>
</network>
Run Code Online (Sandbox Code Playgroud)
sci*_*rus 13
对网络所做的更改会在下次启动网络时发生。您需要执行这一系列操作。
virsh net-edit somenet
virsh net-destroy somenet
virsh net-start somenet
Run Code Online (Sandbox Code Playgroud)
要确认这一点,请参阅virsh net-edit 的功能
请注意,像这样重新启动网络将终止使用此网络的任何 VM 的网络连接。当您再次启动网络时,它们不会重新连接;您必须重新启动域或使用brctl手动将虚拟机接口移动到新网桥 。
编辑:libvirt wiki描述了这种情况,还指出了一个用于重新建立网络连接的脚本。
我没有找到“为什么”,但我确实找到了让它工作的方法。所以,如果有人有同样的问题,解决方案是这样的:
virsh net-dumpxml /tmp/somenet.xml
virsh net-destroy somenet
virsh net-undefine somenet
/tmp/somenet.xml
virsh net-create /tmp/somenet.xml
virsh net-autostart somenet
,但失败error: Requested operation is not valid: cannot set autostart for transient network
virsh net-edit somenet
,我只是添加了另一个空行。virsh net-autostart somenet
工作了最后,我的虚拟主机获得了正确的 IP!
小智 4
任何时候使用virsh net-edit {{network}}
它都需要您重新启动网络。因此,您必须执行以下命令:
virsh net-edit {{network}}
virsh net-destroy {{network}}
virsh net-start {{network}}
然而
值得一提的是,每次执行此操作时,当前在其 VMS 上使用该虚拟网络的任何人都会在您重新启动网络时失去连接。
它不会超过几秒钟,但根据您通过 DHCP 主机添加静态 IP 的频率,这可能会给您的用户带来不便。
所以:
我建议使用virsh net-update
. (来源)这可用于更新网络配置,而无需重新启动网络。具体来说,您似乎正在寻找该ip-dhcp-host
功能。
例子:
virsh net-update default add ip-dhcp-host \
"<host mac='52:54:00:00:00:01' \
name='bob' ip='192.168.122.45' />" \
--live --config
希望这有帮助:)
归档时间: |
|
查看次数: |
18679 次 |
最近记录: |