自建 NAS,系统是 debian,共享文件服务用 smb 好还是 nfs 好

2022-06-08 09:50:06 +08:00
 fengchen0vr

如题,win10 需读写 NAS 中文件,android 电视需读取 nas 中的电影

6653 次点击
所在节点    Linux
37 条回复
qping
2022-06-08 13:16:29 +08:00
群晖上都用了
jiayouniu
2022-06-08 13:24:01 +08:00
看电影建议 ftp 或者 webdav
documentzhangx66
2022-06-08 13:25:53 +08:00
Windows 的 SMB 有一个坑,那就是只允许内网 IP 段连接。

内网 IP 段指:
->10.0.0.0/8 (255.0.0.0) [10.0.0.0 - 10.255.255.255]
----可用地址数量:16777214
----掩码:255.0.0.0
----IP 地址起止:10.0.0.1 - 10.255.255.254

->127.0.0.0/8
----可用地址数量:16777214
----掩码:255.0.0.0
----IP 地址起止:127.0.0.1 - 127.255.255.254

->172.16.0.0/12 (255.240.0.0) [172.16.0.0 - 172.31.255.255]
----可用地址数量:65534 * 16 = 1048544
----掩码:255.255.0.0
----IP 地址起止:172.16.0.1 - 172.31.255.254

->192.168.0.0/16 (255.255.0.0) [192.168.0.0 - 192.168.255.255]
----可用地址数量:65534
----掩码:255.255.0.0
----IP 地址起止:192.168.0.1 - 192.168.255.254

如果两个服务器的 IP ,都不是内网 IP ;或者一个是内网 IP ,另一个是公网 IP ,那么 SMB 就无法直连。虽然可以用虚拟局域网,但麻烦。

不过,SMB 的速度是真牛逼,我在 Windows Server 2019 + 31 元的 CPU Q9300 45nm/4C4T/2.5GHz/6MB/1333MHz/95W/LGA775/71.4°C/VT-x/VT-d + 8G DDR2 内存上,跑满了 1G 带宽。
Donahue
2022-06-08 13:36:58 +08:00
全都要~

我目前在用 smb, 没有什么问题
lazywen
2022-06-08 13:37:23 +08:00
当然是全开,另外 android 访问的话最好 nfs ,smb 在安卓上性能太差
TerranceL
2022-06-08 17:44:13 +08:00
@fengchen0vr win10 直接用系统的(不过之前有段时间不知道是哪里的 bug 文本文件不能修改),然后 kodi 就直接挂了。客户端确实要么收费要么广告
fengchen0vr
2022-06-08 18:33:07 +08:00
@TerranceL aliyun 用了这个 webdav ,以前测试用 win10 系统的文件管理器挂载 webdav 容易卡死
lurenjiaMAX
2022-06-08 19:54:29 +08:00
如果只考虑性能的话...可以看看这个
https://blog.ja-ke.tech/2019/08/27/nas-performance-sshfs-nfs-smb.html
cnbatch
2022-06-08 20:14:41 +08:00
@documentzhangx66 其实公网 IP 也能连,只不过需要在“高级安全 Windows Defender 防火墙”里面放行(文件和打印机共享)。

入站规则的“文件和打印机共享(SMB-In)”(“配置文件”为“专用,公用”的那一行),打开后点击“作用域”,就可以看到“远程 IP 地址”限制为“本地子网”和三大内网 IP 段,这时候只需要选成“任何 IP 地址”就可以通行了。

如果有必要,还可以把“文件和打印机共享(NB-Name)”、“文件和打印机共享(NB-Session)”都同样设置一下。


然后还有一个情况会导致以上设置无效,部分运营商会屏蔽 445 端口(这下就不止屏蔽 80 和 443 端口):
https://www.zhihu.com/question/41426264/answer/2389779158
这种情况下,无论怎么设置都无法通过公网去访问
cnbatch
2022-06-08 20:37:25 +08:00
小补充:
SMB 通道两侧的机器里的“出站规则”中,跟入站规则同名的设置项也可以设成“任意 IP 地址”,应该可以更好地提高连通率(针对一边公网 IP 另一边私网 IP 且中间没有端口屏蔽)
documentzhangx66
2022-06-08 22:59:31 +08:00
@cnbatch 公网连不了。我直接把防火墙关了都没用。两台都是 Windows Server 2019 ,且能互相 ping 通。

微软的建议也是这样,说因为公网不安全,不让 smb 在公网通信,如果要用 smb 建议走 vpn 。
cnbatch
2022-06-09 01:46:53 +08:00
@documentzhangx66 那大概率是 SMB 相关端口(比如 445 )被中间某个运营商屏蔽了

我在 Azure 美区开了台 Win10 机器测试了下,发现是可以直连的,我家里的 Windows 7 机器试了下可以连过去(家里用电信宽带)
https://telegra.ph/%E5%85%AC%E7%BD%91Windows-10%E5%BC%80%E5%90%AFSMB-06-08

除了各种文件操作反应相对比较慢,但确实能连得上,包括远端创建了文件夹也能反映出来
也许香港节点的表现会更好,毕竟近得多了。但鉴于费用原因我没进一步试验……

在这个过程中我顺便试了下用 Vultr 创建虚拟机连过去试验,发现连接不上,事后一查 Vultr 文档,发现果然屏蔽了 SMB 的端口
https://www.vultr.com/docs/what-ports-are-blocked/
而且是双向屏蔽

我家报装的电信网络是单方面屏蔽 SMB 端口,路由器上开 iperf3 监听 445 端口,外面怎么连都连不上,换成监听 442 一点问题都没有,很顺畅。连接别人的 SMB 端口一切正常,只要对方运营商没屏蔽的话。
cnbatch
2022-06-09 01:58:40 +08:00
@cnbatch Vultr 自己说是 outbound ports 屏蔽,但实测下来表现为双向,估计他们的做法是,这几个端口的出站包全都一律丢掉,于是无论主动发起还是被动连接,这条连接都无法建立起来。
12101111
2022-06-09 16:26:52 +08:00
nfs 还是服务器用比较好, Windows 和 Android 这种用 SMB 支持的范围更广
documentzhangx66
2022-06-09 17:08:38 +08:00
@cnbatch 谢谢。

我问了,445 被深信服防火墙给禁了。
cy18
2022-11-04 12:46:57 +08:00
@libook 借个楼问问,有没有啥现成的 docker 镜像,docker-compose 配置文件之类的,一次部署这些东西的?最好账号管理都能够共通的,用起来方便。
libook
2022-11-04 18:05:19 +08:00
@cy18 #36 很多 NAS 专用系统都可以。比如 OpenmediaVault ,基本就是用 Linux 账号体系来管理的,所以各应用间通用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/858076

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX