设置libvirtd支持远程TCP连接

20250215 -

概述

此前在部署KVM的时候,直接利用了默认设置,在本机上是完全能够正常使用的。但在一些需要远程访问的时候,在网上搜索相关的教程却一直无法联通。一直报错无法启动。

在这里插入图片描述

问题描述

在网上搜索的解决方式,基本上都是这个套路,如文章[1],首先在/etc/libvirt/libvirtd.conf中对某些配置进行设置,具体配置如下:

listen_tls = 0 
listen_tcp = 1
auth_tcp = "sasl" #设置为none表示不需要鉴权

参数auth_tcp中我为了方便设置为none,表示不需要鉴权,主要是为了内网环境方便,实际应用环境还是需要设置。

在经过上述配置之后,在/etc/sysconfig/libvirtd增加--listen选项。在我的环境下,ubuntu20.04,libvirtd是6.0,需要修改的文件是/etc/default/libvirtd。但是修改了这部分之后,执行命令sudo service libvirtd restart每次都会报错,系统提示报错可以查看命令journalctl -xe查看命令状态,具体报错信息可见上面的图片。

解决方法

按照上面的报错进行了搜索,实际上并没有找到太多解决方案,还是谷歌直接搜索了无法启动tcp远程连接找到了对应的方法。例如文章[2]中的提示,首先需要激活tcp等一些服务:

Systems with libvirt version 5.6 or higher with enabled systemd socket activation, stop the daemon and start TCP and/or TLS socket systemd units:
执行命令:
systemctl stop libvirtd
systemctl enable --now libvirtd-tcp.socket libvirtd-tls.socket

tls的部分可以去掉,这里不需要。但是执行这部分命令之后,该文章依然需要添加--listen参数来启动,所以还是继续报错。经过继续搜索之后发现,文章[3]提示执行命令sudo journalctl -u libvirtd查看报错日志,可以看到具体报错如下:

–listen parameter not permitted with systemd activation sockets, see ‘man libvirtd’ for further guidance

大致意思就是,--listen这种参数在当前的运行状态下不太支持,经过执行man libvirtd之后,发现提示。所以在执行上述的命令(systemctl enable --now libvirtd-tcp.socket libvirtd-tls.socket)之后,不需要增加这个参数在/etc/default/libvirtd中,就可以解决上述问题了。

重启上述服务,在另外一台机器执行命令:virsh -c qemu+tcp://192.168.5.10/system发现可以联通。

注意:上述配置中为配置鉴权,在实际环境中一定要进行配置,避免安全问题。

参考

[1]50 最佳实践-安全最佳实践-Libvirt鉴权
[2]Libvirt daemon is not listening on TCP ports
[3]Issues with starting libvbirtd [SOLVED]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值