因为群晖不再支持第三方硬盘,加上绿联相对高的性价比(可以非常便宜的买到有 10G 口的机器),最近就动了尝试把不那么重要的数据迁移到一个新的平台以提升下连接速度的想法,于是就在连接 ups 上踩了坑
网上似乎没有相关信息所以记录在这里希望能帮助到别人
这里是在另一台断电也无所谓的机器上跑的 nut server ,然后平常提供给群晖和其他服务器使用,下面是解决绿联 ups 无法连接 nut 的过程
我接触到的系统是已经提供了 network ups slave 模式,所以我猜测是可以连接标准 nut 服务器的,但是当尝试输入服务器 ip 以后他会返回连接失败,并不提供任何报错信息,也没有提供除了 ip 以外的任何设置,甚至连端口处于某些原因也是不让用户修改的状态
所以只能 ssh 上去自己检查他是怎么实现的了,然后检查之后发现 nut 之类的依赖是全在的,同时好像他们绿联自己写了一套自己的逻辑去管理 usb 相关的连接,但是我比较讨厌仔细去翻来翻去检查文件所以直接使用了一个简单粗暴的方法
sudo tcpdump -i any host <nut ip here> and port 3493 -A -s0
这样就能直接检查他是怎么和 nut 服务进行连接的,读取后发现绿联首先是尝试了STARTTLS
去建立一个 tls 连接,然后发现建立失败了之后又尝试LIST VAR ups0
,然后还是失败了,最后进行了退出。
至此,问题已经很清晰了,因为LIST VAR ups0
失败导致了网页返回了一个连接失败的信息,由于 op 用的 ups 的默认名字是ups
而不是ups0
,所以这是导致了连接失败的直接原因,所以我在 nut 服务器上配置了一个ups0
的 ups ,重启服务以后可以发现绿联已经能正常连接 nut 了,但是仔细一看 log 发现这事还没完
虽然网页上已经提示连接成功了,但是查看 nut-monitor 服务会发现提示报错
Login on UPS [ups0@<nut server ip>] failed - got [ERR ACCESS-DENIED]
这时候发现他们终于把登陆信息写入到了/etc/nut/upsmon.conf
里,查看发现他们使用的默认用户名和密码均为nut
,在 nut 服务器上配置了这个新用户并设置模式为 slave 后,至此这个问题彻底解决,nut-monitor 服务也正常运行
TL;DR绿联连接 nut 服务的时候会采用以下 hardcode 信息
ups 名字:ups0nut 登陆账户:nutnut 登陆密码:nut
使用上面的这些配置就可以让绿联成功连接到外部的 ups 了
下面是吐槽环节:绿联连没办法在 ups 界面查看目前连接到信息,而且登陆失败也没有提示,返回的连接错误信息"result":false
也是毫无用处,关于这个功能的文档更新也不及时(真的有更新吗?看到的文档连这个 ups slave 模式都没有),确实是在这种细枝末节的部份还需要改进
但,2000 元能买 10G 网口 4 盘位要什么自行车,希望他们把系统越做越好