SAMBA 4.11+(Ubuntu20 NAS)默认不支持SMB1协议的解决方案
前言:今天日常检查小米摄像机的存储和基础功能,小米智能摄像机SE版及以上版本支持NAS存储,即将视频存档到大容量硬盘之中,提高了容量和存储时间。但是今天发现NAS存储又出异常了,尝试删掉重新添加居然发现无法添加,反复提示“添加失败”,故检查了下NAS当中最后存储的录像,回想起最近将系统从Ubuntu 18升级到了Ubuntu 20,故猜想是否是因为系统升级造成的问题,多次反复尝试之后解决。
支持协议
当时第一反应就是新版本导致了某些协议的不兼容,但是最开始是在想新版本是不是需要对配置文件做一些改动,当初升级时也升级了samba还颇有印象,但是看了半天配置文件也没找到头绪。后面再小米论坛上幸运地找到了这个帖子:https://www.xiaomi.cn/post/22094463

发现他描述的问题如出一辙,于是便找到了解决方案

(这位老哥在发现故障两个小时之后就debug出来的,果然厉害)
一开始我还不知道NT1是什么协议,不过从参数来看果然是因为升级之后导致的旧协议不支持,于是便兴致勃勃地吧这个复制粘贴一份到配置文件的[global]
项下
client min protocol = NT1
然而重启之后并没有什么效果,看起来貌似不够。
完整配置
后面有了这个这个思路,那就继续去查找其他资料,发现这个就是Samba 4.11过后版本出现的问题,看了一样日志果然是在这个版本。有人提到新版本这个旧协议被移除,需要降级,但是由于包依赖的关系不能简单降级还需要考虑重新编译一些依赖,反复卸载重装的几次,终于发现了在最新版本下也能启用SMB1协议的完整配置:https://www.cnblogs.com/mrcoolfuyu/p/12321159.html
samba 4.11 or newer version enable SMB1 From 4.11 or newer version,Samba does not support smb1 protocal by default.
But there are few devices in my home only support smb1 😦
so we can put these parameter into
[global]
section in/etc/samba/smb.conf
to solve this issue:client min protocol = NT1 server min protocol = NT1 lanman auth = yes encrypt passwords = yes
按照这个配置,最后成功连接。其实我有些怀疑其实只要再多加配置server字段就能成功了,但是没再继续深入尝试。
配置读取小发现
一般情况下,修改配置文件后需要重启服务,samba也不例外。不过从我刚才翻到的日志来看,samba似乎会在新用户连接时自动读取一遍配置,就如我上面的配置完成后其实还没有重启服务就立即能用了,从日志文件也能看到端倪
[2020/11/10 15:59:12.309923, 0] ../../lib/param/loadparm.c:800(lpcfg_map_parameter)
Unknown parameter encountered: "nt smb support"
[2020/11/10 15:59:12.310007, 0] ../../lib/param/loadparm.c:1826(lpcfg_do_global_parameter)
Ignoring unknown parameter "nt smb support"
中途我用了nt smb support
这个无效参数,但是中途并没有重启服务而是尝试连接了两次,单独汇报了两次错误,这兴许就能说明samba在配置文件载入上的特性。
Tips
目前问题已经基本顺利解决,最近几天空缺的录像文件也正逐步上传。对于一些比较旧的(可能)使用SMB协议的设备而言,SMB协议的变更确实会产生显著影响,这意味着可能开箱即用会出现问题。实际上,一些商业级/消费级专用NAS可能是版本没有这么新或者特别对旧协议做了兼容,才会少有遇到过这种事,而对于新的Ubuntu 20而言,新的改动对于一些硬件设备来说影响不小。
参考
kali2020 smb连接的报错问题解决:protocol negotiation failed: NT_STATUS_IO_TIMEOUT