SMB远程文件传输协议在远程文件系统领域具有相当的统治地位。主流客户端厂家,包括微软、苹果以及Linux生态圈都支持SMB协议,并且苹果的MacOS已经将SMB作为其默认的远程文件协议。
作为国内云厂商的龙头企业,阿里云NAS SMB文件系统也可以支持MacOS客户端。接下来就给大家介绍如何用MacOS客户端连接阿里云NAS SMB文件系统。
本篇文章分为两个部分:MacOS客户端连接专有网络内的NAS SMB挂载点;MacOS客户端通过Kerberos连接AD域内的NAS SMB挂载点。
1. MacOS客户端连接专有网络(VPC)内的NAS SMB挂载点
1.1. 建立VPC和NAS SMB挂载点
参考 文件存储 > 用户指南 > 管理挂载点创建VPC和NAS SMB文件系统挂载点。
1.2. MacOS客户端通过SSL-VPN接入VPC
参考 Mac客户端远程连接通过SSL-VPN接入VPC。
1.2.1. 创建VPN网关
1.2.2. 创建SSL服务端
需要注意本端网段是VPC的网段,比如如果VPC的网段是172.31.0.0/16,本端网段就填172.31.0.0/16。客户端网段与本端网段不重合,比如192.168.1.0/24。
1.2.3. 创建并下载SSL客户端证书
按照 Mac客户端远程连接就可以配置成功。
1.2.4. 连接测试
OpenVPN连接后,ping VPC内的挂载点可以成功。
1.3. 挂载NAS SMB
可以使用MacOS的Finder->Go->Connect to Server挂载,选择Guest身份。参考 Apple Mac OS X connect to SMB share。
注意使用Finder时myshare挂载完成之后可能显示myshare的内容为空,是因为MacOS会去询问所有文件的信息,延迟较大或者文件较多的时候需要等一段时间才能看到内容,请耐心等待。
也可以使用mount_smbfs命令挂载,nas-mount-point.nas.aliyuncs.com为1.1.中创造的挂载点
mount_smbfs '//guest@nas-mount-point.nas.aliyuncs.com/myshare' /Volumes/myshare/
挂载之后就可以正常使用挂载卷。
2. MacOS通过Kerberos挂载与使用VPC中的NAS SMB卷
在默认情况下NAS SMB卷只支持NTLM鉴权协议,无论以哪个身份挂载,鉴权后得到的身份都是Everyone。默认Everyone拥有所有权限。
最近NAS SMB开始支持AD功能,用户可以在VPC中建立一个Windows操作系统的AD服务器,然后给NAS SMB卷设置一个服务账号,并上传服务账号的Keytab文件到NAS控制台。之后用户就可以在MacOS客户端上使用Kerberos协议鉴权,鉴权时使用的AD域身份就是用户挂载后的身份。挂载后ACL将启用,用户对于某个文件文件夹拥有何种权限取决于文件文件夹上的ACL权限表。
官方文档: 使用AD域实现用户身份认证和文件级别的权限访问控制。
2.1. 将NAS SMB卷接入AD域
参考 将阿里云SMB协议文件系统挂载点接入AD域,进行以下几个步骤:
2.1.1. 安装ADDS和DNS,建立AD服务器
请参考 安装并启用Active Directory域服务与DNS服务完成该步骤。
2.1.2. 添加服务账号
dsadd user CN=alinas,DC=MYDOMAIN,DC=com -samid alinas -display "Alibaba Cloud NAS Service Account" -pwd tHePaSsWoRd123 -pwdneverexpires yes
2.1.4. 注册NAS文件系统挂载点
setspn -S cifs/nas-mount-point.nas.aliyuncs.com alinas
setspn成功之后显示如下:
另外这一步成功之后在AD服务器上尝试挂载AD域的卷挂载点,会发现鉴权已经开始使用Kerberos。
net use z: \\nas-mount-point.nas.aliyuncs.com\myshare
2.1.5. 生成Keytab服务账号秘钥文件
ktpass -princ cifs/nas-mount-point.nas.aliyuncs.com@MYDOMAIN.com -ptype KRB5_NT_PRINCIPAL -crypto All -out c:\nas-mount-point.keytab -pass tHePaSsWoRd123
2.1.6. 将Keytab上传到NAS控制台
NAS SMB ACL控制台已经在亚太南部1(孟买)和中国香港(香港)区域上线,其他区域也在陆续上线中。如果您需要的区域没有上线,可以发工单联系我们上传Keytab。其他具体内容请参考官方文档: 使用AD域实现用户身份认证和文件级别的权限访问控制。
2.2. 将NAS AD SMB卷配置为MacOS可以访问
2.2.1. 添加VPN SSL网段到安全组
如果不添加足够的权限,MacOS的DNS和SMB请求在AD域中走不通。需要在ECS的VPC安全组中添加下面的权限。
需要添加:
- DNS端口:UDP 53
- Kerberos端口:TCP 88
- LDAP端口:TCP 389
- LDAP Global Catalog端口:TCP 3268
2.2.2. 将MacOS的DNS设置为AD服务器
ipconfig命令在AD服务器上找到内网IP。然后将它设置成MacOS的DNS。
ping测试可以连通AD域名。
2.2.3. MacOS用Kerberos鉴权以及AD域用户身份挂载NAS SMB
用kinit user@MYDOMAIN.COM得到AD身份,klist验证身份已经得到,kinit告诉mount_smbfs要启动身份,最后用mount_smbfs命令挂载。
kinit user@MYDOMAIN.COM
klist
kinit
mount_smbfs //administrator@nas-mount-point.nas.aliyuncs.com/myshare /Volumes/myshare
如果出现错误mount_smbfs: server rejected the connection: Authentication error,说明mount_smbfs走到了NTLM,请运行kinit启用身份再mount_smbfs。
一个成功的例子:
成功后klist会显示两个principals:
注意MacOS客户端不会显示SMB ACL,但是AD域用户身份是起作用的。用户对任何文件进行操作时,NAS SMB卷会验证ACL,然后允许或者禁止该操作。如需设置ACL可以在AD服务器上挂载该卷进行设置。