NFS协议文件系统传输加密

通用型NAS NFS协议文件系统传输加密采用TLS协议,以保障您的ECS实例与NAS服务之间网络传输链路上的数据安全,确保在传输过程中数据不被窃取或篡改。本文介绍如何使用NAS客户端工具挂载通用型NAS NFS协议文件系统实现数据传输加密。

工作原理

NAS客户端工具定义了一个网络文件系统类型alinas,与标准mount命令兼容。在ECS实例挂载alinas类型文件系统时,如果指定tls参数,NAS客户端工具会启动一个Stunnel监听进程,该进程转发并加密ECS实例对NAS服务器的访问,同时会触发一个后端进程aliyun-alinas-mount-watchdog保障Stunnel监听进程的可用性。

前提条件

  • 已创建通用型NAS NFS协议文件系统。具体操作,请参见创建文件系统

    重要

    开启传输加密功能时,如果您的目标ECS实例上对应目录(例如/mnt)已挂载NFS协议文件系统,请先卸载NFS协议文件系统,再根据本文重新挂载NFS协议文件系统。关于如何卸载NFS协议文件系统的操作,请参见通过NAS控制台卸载挂载目录

  • 目标ECS实例已配置公网或绑定弹性公网IP。更多信息,请参见网络带宽

使用说明

  • 仅支持通用型NAS NFS协议文件系统。

  • NAS客户端支持的操作系统

    操作系统类型

    操作系统版本

    Alibaba Cloud Linux

    • Alibaba Cloud Linux 2.1903 64

    • Alibaba Cloud Linux 3.2104 LTS 64

    Red Hat

    • Red Hat Enterprise Linux 7.x 64

    • Red Hat Enterprise Linux 8.x 64

    CentOS

    • CentOS 7.x 64

    • CentOS 8.x 64

    Ubuntu

    • Ubuntu 16.04 64

    • Ubuntu 18.04 64

    • Ubuntu 20.04 64

    Debian

    • Debian 9.x 64

    • Debian 10.x 64

  • 传输加密的性能损耗

    开启传输加密的挂载与未开启传输加密的挂载相比,访问延迟会增加约10%,IOPS会下降约10%。

  • 使用NAS客户端的说明

    • NAS客户端工具使用Stunnel监听进程进行TLS加密代理。对于吞吐密集型应用,Stunnel监听进程会消耗大量CPU执行加解密操作。在极端情况下,每个挂载会占用一整个核。

    • NAS客户端传输加密功能依赖第三方证书,第三方证书需要定期更换,NAS会提前一个月通过邮件、站内信发出通知,请您关注信息并及时更新NAS客户端工具aliyun-alinas-utils版本,未更新NAS客户端工具将导致使用传输加密方式挂载的NAS文件系统在证书过期后停止响应。

    • 使用NAS客户端工具会修改您账号下ECS实例的/etc/hosts文件。即挂载文件系统时,会将新的挂载点映射写入/etc/hosts文件;卸载文件系统时,会删除之前写入的挂载点映射。

    • NAS客户端工具使用Stunnel监听进程进行TLS加密代理时,会占用127.0.1.1~127.0.255.254中的IP作为Stunnel监听进程的IP,并需要使用12049端口,请您确保目标IP和端口可用。

      您可以执行ss -ant | grep -w 12049命令判断目标端口是否被占用。如果返回为空,则表示目标端口未被占用。如果端口被占用,请您修改配置文件。具体操作,请参见如何修改NAS客户端配置文件

支持地域

公共云所有地域,金融云除深圳地域以外所有地域。

步骤一:下载与安装NAS客户端

Alibaba Cloud Linux

  1. 下载客户端。

    wget https://aliyun-encryption.oss-cn-beijing.aliyuncs.com/aliyun-alinas-utils-1.3-0.20240914145556.91a304.al7.noarch.rpm
  2. 安装客户端。

    sudo yum install aliyun-alinas-utils-*.rpm
  3. 检查NAS客户端安装结果。

    which mount.alinas

    如果回显包含如下类似信息,说明NAS客户端安装成功。

    image.png

CentOS

  1. 下载客户端。

    • CentOS 7.x

      wget https://aliyun-encryption.oss-cn-beijing.aliyuncs.com/aliyun-alinas-utils-1.1-8.el7.noarch.rpm
    • CentOS 8.x

      wget https://aliyun-encryption.oss-cn-beijing.aliyuncs.com/aliyun-alinas-utils-1.1-8.el8.noarch.rpm
  2. 安装客户端。

    sudo yum install aliyun-alinas-utils-*.rpm
  3. 检查NAS客户端安装结果。

    which mount.alinas

    如果回显包含如下类似信息,说明NAS客户端安装成功。

    image.png

Red Hat Enterprise Linux

  1. 下载客户端。

    • Red Hat Enterprise Linux 7.x

      wget https://aliyun-encryption.oss-cn-beijing.aliyuncs.com/aliyun-alinas-utils-1.1-8.el7.noarch.rpm
    • Red Hat Enterprise Linux 8.x

      wget https://aliyun-encryption.oss-cn-beijing.aliyuncs.com/aliyun-alinas-utils-1.1-8.el8.noarch.rpm
  2. 安装客户端。

    sudo yum --disablerepo=rhui-rhel-7-server-rhui-extras-debug-rpms install aliyun-alinas-utils-*.rpm
  3. 检查NAS客户端安装结果。

    which mount.alinas

    如果回显包含如下类似信息,说明NAS客户端安装成功。

    image.png

UbuntuDebian

  1. 下载客户端。

    wget https://aliyun-encryption.oss-cn-beijing.aliyuncs.com/aliyun-alinas-utils-1.1-8.deb
  2. 安装客户端。

    sudo apt update
    sudo dpkg -i aliyun-alinas-utils-*.deb
    sudo apt-get install -f
    sudo dpkg -i aliyun-alinas-utils-*.deb
  3. 检查NAS客户端安装结果。

    which mount.alinas

    如果回显包含如下类似信息,说明NAS客户端安装成功。

    image.png

步骤二:以传输加密方式挂载文件系统

  1. 挂载NFS协议文件系统。

    • NFSv3协议

      sudo mount -t alinas -o tls,vers=3 file-system-id.region.nas.aliyuncs.com:/ /mnt
    • NFSv4.0协议

      sudo mount -t alinas -o tls,vers=4.0 file-system-id.region.nas.aliyuncs.com:/ /mnt

    挂载命令中的参数说明如下表所示。

    说明

    挂载文件系统时,NAS客户端工具将自动使用最佳参数进行挂载,无需手动添加。更多信息,请参见挂载命令参数说明

    参数

    说明

    file-system-id.region.nas.aliyuncs.com:/ /mnt

    表示<挂载地址>:<NAS文件系统目录> <当前服务器上待挂载的本地路径>,请根据实际情况替换。

    • 挂载地址:您可以在文件存储NAS控制台文件系统列表页面,单击目标文件系统后的管理,进入挂载使用页面获取挂载地址。更多信息,请参见管理挂载点

    • NAS文件系统目录 :NAS的根目录(/)或任意子目录(例如:/share),如果是子目录,请您确保子目录是NAS文件系统中实际已存在的目录。

    • 当前服务器上待挂载的本地路径:Linux ECS实例的任意子目录(例如:/mnt),请您确保子目录在本地文件系统存在。

    vers

    NFS协议文件系统版本。

    • vers=3:使用NFSv3协议挂载文件系统。

    • vers=4.0:使用NFSv4.0协议挂载文件系统。

    tls

    启用数据传输加密。

  2. 执行mount -l命令,查看挂载结果。

    如果回显包含如下类似信息,说明挂载成功。加密挂载回显

    挂载成功后,您可以执行df -h命令,查看当前文件系统的容量信息。

  3. 可选:配置开机时自动挂载。

    为避免已挂载文件系统的ECS实例重启后,挂载信息丢失,您可以通过在Linux ECS实例中配置/etc/fstab文件,实现在ECS实例重启时NFS协议文件系统自动挂载。

    1. 打开/etc/fstab配置文件,添加挂载配置。

      file-system-id.region.nas.aliyuncs.com:/ /mnt alinas _netdev,tls 0 0

      示例中主要参数说明,请参见挂载NFS协议文件系统。其余参数说明如下。

      参数

      说明

      _netdev

      防止客户端在网络就绪之前开始挂载文件系统。

      0(tls后第一项)

      非零值表示文件系统应由dump备份。对于NAS文件系统而言,此值默认为0。

      0(tls后第二项)

      该值表示fsck在启动时检查文件系统的顺序。对于NAS文件系统而言,此值默认为0,表示fsck不应在启动时运行。

    2. 执行reboot命令,重启ECS实例。

      重启云服务器会中断业务,建议您在业务低谷时期重启云服务器。

      说明

      在重启ECS实例前,请确认手动挂载成功,避免ECS实例重启失败。另外,如果自动挂载配置成功,在ECS实例重启后,可以通过df -h命令查看到挂载的NAS文件系统。

NAS客户端日志

您可以通过访问/var/log/aliyun/alinas/路径下的NAS客户端日志定位挂载报错信息。同时可以通过修改日志配置文件/etc/aliyun/alinas/alinas-utils.conf中的参数,定制NAS客户端日志内容。修改配置文件后,请您执行sudo service aliyun-alinas-mount-watchdog restart命令,重启后端watchdog进程。

日志配置文件中的重要参数如下:

参数

说明

logging_level

日志级别。默认为INFO。

logging_max_bytes

日志文件的最大容量。默认为1048576字节,即单个日志文件最大为1 MB。

logging_file_count

日志文件的最大保留数量。默认为10,即最多保留10个日志文件。

stunnel_debug_enabled

Stunnel监听进程debug日志。默认为false,开启时会占用大量存储容量。

stunnel_check_cert_hostname

检查证书域名。默认为false。

stunnel_check_cert_validity

检查证书合法性。默认为false。

错误排查

  • 问题现象

    挂载文件系统时,返回如下报错信息:端口占用报错

  • 可能原因

    Stunnel监听进程的IP12049端口被占用,导致文件系统挂载失败。

  • 解决方案

    • 方案一:找到并结束占用12049端口的进程,然后重新挂载文件系统。

    • 方案二:修改NAS客户端工具配置文件/etc/aliyun/alinas/alinas-utils.conf中的proxy_port参数,修改为未被占用的端口号,然后重新挂载文件系统。修改端口号