MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

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文件系统挂载点。
MacOS客户端通过阿里云VPN连接阿里云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。
MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

1.2.3. 创建并下载SSL客户端证书


按照Mac客户端远程连接就可以配置成功。

1.2.4. 连接测试


OpenVPN连接后,ping VPC内的挂载点可以成功。
MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

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成功之后显示如下:
MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

另外这一步成功之后在AD服务器上尝试挂载AD域的卷挂载点,会发现鉴权已经开始使用Kerberos。

net use z: \\nas-mount-point.nas.aliyuncs.com\myshare

MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

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安全组中添加下面的权限。
MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统
需要添加:
  1. DNS端口:UDP 53
  2. Kerberos端口:TCP 88
  3. LDAP端口:TCP 389
  4. LDAP Global Catalog端口:TCP 3268

2.2.2. 将MacOS的DNS设置为AD服务器


ipconfig命令在AD服务器上找到内网IP。然后将它设置成MacOS的DNS。
MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

ping测试可以连通AD域名。
MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

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。
一个成功的例子:
MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

成功后klist会显示两个principals:
MacOS客户端通过阿里云VPN连接阿里云NAS SMB文件系统

注意MacOS客户端不会显示SMB ACL,但是AD域用户身份是起作用的。用户对任何文件进行操作时,NAS SMB卷会验证ACL,然后允许或者禁止该操作。如需设置ACL可以在AD服务器上挂载该卷进行设置。

参考文档

  1. 文件存储 > 用户指南 > 管理挂载点
  2. Mac客户端远程连接
  3. Apple Mac OS X connect to SMB share
  4. 使用AD域实现用户身份认证和文件级别的权限访问控制
  5. 将阿里云SMB协议文件系统挂载点接入AD域
  6. 安装并启用Active Directory域服务与DNS服务
  7. nsmb.conf说明文档
上一篇:通过安装和配置AD域解决Windows Server 2016的IIS无法加载SMB文件卷文件的问题


下一篇:企业级客户使用阿里云文件存储NAS SMB配置Home Directory服务指南