0

libvirt 版本:3.2.0

这是我的 libvirtd.conf 配置。

vim /etc/libvirt/libvirtd.conf

listen_tls = 0
listen_tcp = 1
auth_tcp = "none"

如果我不使用上述配置,我关闭并重新启动 libvirt 没有任何问题。但是因为要live migrate,所以需要添加上面的参数,添加后出现问题,并且导致关机重启失败

cat /usr/lib/systemd/system/libvirtd.service 

[root@localhost wl]# cat /usr/lib/systemd/system/libvirtd.service 
# NB we don't use socket activation. When libvirtd starts it will
# spawn any virtual machines registered for autostart. We want this
# to occur on every boot, regardless of whether any client connects
# to a socket. Thus socket activation doesn't have any benefit

[Unit]
Description=Virtualization daemon
Requires=virtlogd.socket
Requires=virtlockd.socket
Before=libvirt-guests.service
After=network.target
After=dbus.service
After=iscsid.service
After=apparmor.service
After=local-fs.target
After=remote-fs.target
Documentation=man:libvirtd(8)
Documentation=http://libvirt.org

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/libvirtd
ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS **-d -l**
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
# At least 1 FD per guest, often 2 (eg qemu monitor + qemu agent).
# eg if we want to support 4096 guests, we'll typically need 8192 FDs
# If changing this, also consider virtlogd.service & virtlockd.service
# limits which are also related to number of guests
LimitNOFILE=8192

[Install]
WantedBy=multi-user.target
Also=virtlockd.socket
Also=virtlogd.socket

-d -l 上面加粗的工作,也支持live migrate plus

首先我使用“systemctl start libvirtd”来启动 libvirt,

然后 systemctl 停止 libvirtd,但 libvirt 不会关闭

问题是我使用“systemctl restart libvirtd”命令会报错

想问是什么问题?我该如何解决?

4

1 回答 1

0

您设置的以下参数:

listen_tls = 0
listen_tcp = 1
auth_tcp = "none"

一个巨大的安全漏洞。与 libvirtd 的连接被视为授予与 root 帐户等效的权限。因此,通过关闭所有身份验证,并使用 TCP 套接字而不是 TLS 套接字,您打开了一个没有加密或身份验证的远程 root shell。这与运行 telnet 服务器并允许不带密码的 root 登录相当。永远不要这样做。任何告诉您为实时迁移执行此操作的文档都是错误的 - 我一直试图让所有此类文档脱机多年,但人们不断地一次又一次地发布这个虚假的建议。

以下页面描述了如何为 TLS 设置证书

https://libvirt.org/remote.html#Remote_certificates

如果你真的不想使用 TLS,那么最好的后备方法是告诉 libvirtd 使用 SSH 隧道连接到远程主机。

WRT 到单元文件,您不需要直接修改它。请注意,它指的是一个文件/etc/sysconfig/libvirtd,只需编辑该 cnofig 文件并将 LIBVIRTD_ARGS 变量设置为包含--listen

你说你在运行 systemctl start 时出错,但不要说错误是什么......在不知道你得到的真正错误的情况下,很难/不可能就问题所在提供指导。尝试“systemctl status libvirtd.service”以查找有用的错误消息。

于 2017-11-22T11:31:28.580 回答