CIFSD介绍
CIFSD 是由 Namjae Jeon 创建的用于 Linux 内核的开源 In-kernel CIFS/SMB3 服务器,它是 SMB/CIFS 协议在内核空间中的实现,用于通过网络来共享文件和 IPC 服务。最初的目标的是提供改进的文件 I/O 性能,但更大的目标是希望拥有一些新的特性,使得这些特性在内核内部更容易开发和维护,并且完全暴露这些层。
方向可以认为是将 SAMBA 移动到内核中的几个模块的部分,以具有像程直接数据存取(Remote direct memory access)那样的功能以实际性能增益工作。
CIFSD 功能
已实现
a. 用于实现基本文件共享功能的 SMB1(CIFS), SMB2/3 协议
b. 动态授权
c. 混合请求
d. 持久的处理
e. oplock/lease
f. Large MTU
g. NTLM/NTLMv2
h. 自动协商
i. HMAC-SHA256 签名
j. 安全协商
k. 升级签名
l. Preautentication integrity(SMB 3.1.1)
已计划
a. SMB direct(RDMA)
b. Multi-channel
c. Durable handle v2
d. Kerberos
e. persistent handles
f. 目录租约
g. SMB 加密
CIFSD 架构
================================================================================
* CIFSD Architecture
================================================================================
|--- ...
--------|--- kcifsd/3 - Cleint 3
|-------|--- kcifsd/2 - Client 2
| | _____________________________________________________
| | |- Client 1 |
<--- Socket ---|--- kcifsd/1 <<= Authentication : NTLM/NTLM2, Kerberos(TODO)|
| | | | <<= SMB : SMB1, SMB2, SMB2.1, SMB3, SMB3.0.2, |
| | | | SMB3.1.1 |
| | | |_____________________________________________________|
| | |
| | |--- VFS --- Local Filesystem
| |
KERNEL |--- kcifsd/0(forker kthread)
---------------||---------------------------------------------------------------
USER ||
|| communication using NETLINK and sysfs
|| ______________________________________________
|| | |
cifsd <<= DCE/RPC, WINREG |
^ | <<= configure shares setting, user accounts |
| |______________________________________________|
|
|------ smb.conf(config file)
|
|------ cifspwd.db(user account/password file)
^
cifsadmin ----------------|
================================================================================
================================================================================
在OpenWRT编译时加入软件包
注意,需要将luci-app-samba,samba36-server取消(找不到可以用/来查找)如果无法取消请检查Extra packages里的autosamba是否取消勾选。另外还需要加上ksmbd-utils,否则用户配置无法正确被生成。(ksmbd-utils位于Kernel modules > Filesystems下)
解决ksmbd报错
刷入编译完成的固件后,发现网络共享中并未出现路由器,检查内核日志后发现,ksmbd自杀了
如果你还有提示端口无法使用,那八成是安装了samba36-server,去软件包里面卸载掉他。
这里参考了unifreq的解决方法
sed -e 's/modprobe ksmbd/sleep 1 && modprobe ksmbd/' -i /etc/init.d/ksmbd
此时ksmbd即可正确启动
这速度,凑合用了。
路由器是竞斗云2.0,内存卡是Netac 的32G卡,京东连接
发表评论