老设备连接samba服务器

最近项目中,需要支持老掉牙的设备的DNC功能。该设备通过samba服务器,访问网关的文件夹,实现DNC功能。在网关中(该网关使用debian系统)安装完samba,并且配置好后,有意思的事情发生了:

1. 同事A和B的电脑都可以通过samba访问debian网关的文件夹,但是我的电脑就是不行。

2. 目标设备(也就是那个老的掉渣的设备),无法通过samba访问debian网关的文件夹。

3. 在另一个网关(ubuntu16的系统,后面简称u16,也安装了samba),目标设备可以通过samba访问u16网关的文件夹。

4. 我的电脑,安装了debian的虚拟机。虚拟机中安装了samba,电脑可以连接虚拟机中的samba。

这种情况下,只能先用wireshark先看一下通讯的过程

1. 我的电脑连接不上,抓包如下:

回复:

对应的,请求如下:

 

 然后我的电脑的smb版本是1.0,可能是因为是家庭版,所以无法安装smb2

因此,我的电脑连接不上,应该是客户端和服务端,沟通的不匹配导致的。而同事A和B,都安装有smb的其它版本,因此,不存在这个问题。

2. 电脑可以连接虚拟机的samba

转包后发现,debian网关中碰到的不支持的dialects,在虚拟中不存在。网关盒子与虚拟机都是debian系统,为什么一个可以,另一个不行呢?首先看一下版本,结果发现debian网关中的版本是4.13,而虚拟中的则是4.9版本。然后再去看了一下apt下的源的设置,果然,,网关盒子中的源是阿里云的,而虚拟中的源则是163和清华的。

将debian网关盒子中的samba卸载,再更新源,再进行安装,ok,我的电脑也就可以连接上debian盒子了。

3. 目标设备无法连接debian盒子

在将debian的samba更新后,虽然我的电脑可以连接了,但是目标设备仍然不行。再次抓包,发现问题出在session setup andx request这个过程中。第一步negotiate后,samba返回给客户端的信息中,capabilities中,包含有Extended Security,为1。但是在建立会话的时候,客户端并没有进行NTLMSSP_NEGOTIATE(这个客户端太老了,而且不是传统的电脑,除了IP地址,我们无法对更多的属性进行配置),所以,在建立会话层的时候,被samba拒绝。

4. 目标设备可以连接u16盒子

经过抓包发现,negotiate的response中,samba服务就没有Extended Security

 因此后续的会话,就不需要NTLMSSP,所以就没有问题。查看了一下,u16中samba服务是4.3版本。注意,这里security是user,

综上,如果目标设备要和debian盒子中的samba通讯,就需要让samba关闭这个所谓的Extended Security。去samba官网和其它地方找了一圈资料,说是修改smb.conf配置文件,主要就是修改client use spnego和client NTLMv2 auth这两个配置项。默认这两个都是yes。不过我测试过

client use spnego = no

client NTLMV2 auth = no

结果失败,仍然是要求SSP。

知乎上有工程师说配成:

client use spnego = yes

client NTLMV2 auth = no

不过很遗憾,也失败了。

最后这个问题,还是采取了简单粗暴的办法,将security设置为share。然后,就ok了。

不过,我个人觉得这不是一个好的解决办法。如果看官们有更好的办法,欢迎写在评论区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值