我要看动画! | 公网samba服务抗干扰指南

在过去一段相当长的时间里,我都在使用移动的宽带IPv6访问家中的移动网络,用Samba服务(工作在标准端口445,伏笔之一)观看硬盘上的动画,虽然两地距离上千公里,延迟和速度也都十分不错,相当稳定。

后来由于一些原因我开始使用联通的宽带,光猫没有开启IPv6,无线质量也十分不理想,算是和家里的网络服务失联了一段时间。后来换了新的路由器,顺带把光猫改为了桥接,成功拿到了IPv6地址,就在我以为终于可以开始重新看动画片的时候,新的问题已经出现。

PING延迟优秀,Web服务(工作在443端口,伏笔之二)速度正常,可Samba无论如何无法连接,甚至是“找不到网络名”这样莫名其妙的问题。由于事出诡异,我随即开始排查。

首先排除本地设备的问题,用电脑连接手机流量(中国移动,伏笔之三),Samba服务正常,回到原来的网络,无法连接。我本以为是OpenWrt关闭了445端口,但查看后发现并没有这样的规则。索性把防火墙整个关掉也没有效果。至此,基本可以确认不是本地设备和网络的原因。

遇事不决,开始上网求助。一通搜索无果,猛然想起来445端口这些年在相关报道上的“高风亮节”,于是开始怀疑运营商封堵了该端口,将Samba服务改用非标端口后,果然可以连上了。

(这里不得不再提一句Windows的事情,时至今日微软居然还没有做出允许文件资源管理器挂载非标端口的SMB服务端功能,还需要进行本地的端口转发,实在让人难以评价。)

连是连上了……这速度怎么不对劲呢。十分反常地稳定在1Mb/s左右的水平,最初还能让人以为是网络波动,时间久了也不得不开始怀疑了。难道是哪里出现了瓶颈吗?

也许是最近折腾VPS折腾魔怔了,我首先想到的居然是Samba服务端的TCP拥塞控制算法,以为是IPv6跨网延迟导致的如此表现,但服务器在没有开启优化算法的情况下,HTTPS服务也没有出现显著降速,也许问题不在这里。

IPv6的MTU问题?现有的网络将MTU值固定在了1300+,手动修改该值一通折腾后,也没有任何改善。

SMB握手到了过时协议?把Windows对SMB1的支持关掉,再在服务端强制要求SMB3,用Get-SmbConnection查看握手协议也确实已经是最新了,为什么还是不行?

运营商使用了包检测?在服务端上架起Xray,把SMB流量加密后再传输,依旧无果。(其实到这里我就该想到端口号的问题了(悲))

我完全陷入了这个谜之问题的深渊,寤寐思服,辗转反侧。某天一个念头击中了我:都是基于TLS的加密,为什么HTTPS就可以?难道,不是443就不行?

我不信邪,把服务挪到了用于HTTP的80,不行;再挪到同样加密的SSH的22,还是不行。

我放弃一切幻想,把本来对外提供Web服务的Nginx关掉,让Xray用443,接收SMB流量。再测速,跑满宽带。

我彻底破防了。

(以下省略114514字节的对联通的真挚赞美)

总结

在公网环境下,为确保Samba服务的稳定可用,应在443端口加密传输。

至于本来应该用443的正常HTTPS服务,就让它们去Xray后面待着吧。