前言:NFS 是一种文件系统级别的共享,在 UNIX/Linux 环境里应用非常广泛。

尽管 NFS 的配置在很多系统管理员眼里是非常简单的,但是常规的 NFS 简单配置并不能保证合理的用户认证、多用户识别。网上很多教程对 NFS fstab 表项的小参数也解释得不够清楚,本文尝试做一个较为深入的 NFS 教程。

  • 服务端
    • TrueNAS SCALE
    • Debian 12
  • 客户端
    • Debian 12

1. NFS 服务端配置·

在配置之前需说明,目前 NFS 没有很简便的认证、加密方案,本文介绍的 Kerberos 配置相对比较复杂。如果没有特殊需求,可以考虑使用 iSCSI 块网络存储、SMB 文件网络分享。

1.1 TrueNAS SCALE NFS 共享·

在一般存储网络中,NFS Server 都是由专业 NAS 系统担任。本节先以 TrueNAS SCALE 为例进行图形化的讲解。

1.1.1 配置 TrueNAS SCALE NFS 服务参数·

System Settings -> Services -> NFS 里,进行如下图的配置。

图 1. 配置 nfs 服务

这里的参数相对比较简单,主要注意以下三点:

  1. IP 地址绑定:如果只想要在一个网络中提供 NFS 分享,则需配置
  2. 开启 NFSv4 配置:现在文件系统访问控制基本都是基于 NFSv4 ACL,因此不勾选这个选项,可能在读写等权限上出现问题。
  3. 按需开启 Kerberos 认证。Kerberos 认证需要 ticket,如没客户端有没 ticket 就发起访问,则强制返回失败。

1.2 Debian 12 NFS 服务端配置·

在通用 Linux 操作系统上也可以快速地搭建 NFS share 服务,具体是控制 /etc/exports 文件。

1
2
3
4
"/mnt/Intel_750_RAID-Z1/app_data"\
10.1.0.0/16(sec=sys,rw,anonuid=1000,no_subtree_check)\
10.2.0.0/16(sec=sys,rw,anonuid=1000,no_subtree_check)\
10.3.0.0/16(sec=sys,rw,anonuid=1000,no_subtree_check)

可以看出,该文件的一行定义一个分享条目。其中的 IP 段存在的意义是限制发起 NFS 连接请求的客户端的 IP 地址,只有处于允许列表之内的 IP 客户端方可建立连接。

2. NFS 客户端配置·

一般来说,NFS 专为 UNIX 类系统设计,因此对于 Windows 的支持很一般。本文以 debian 12 为例进行介绍。

2.1 Debian 12 NFS 共享配置·

找到文件 /etc/fstab,在其中添加与 NFS 挂载相关的 entry 条目。格式如下:

1
[IP/域名]:[NFS_Server 绝对路径]    [本地挂载点路径]    [nfs]    [defaults]    0    0

下面举一个例子

1
2
# NFS 共享挂载
10.2.1.33:/mnt/Intel_750_RAID-Z1/app_data /home/newton/epyc-truenas-app_data nfs defaults 0 0

注意,本地挂载点必须是一个空的文件夹。

3. Kerberos 认证简介·

NFS 天生没有任何鉴权,因此需要依赖第三方服务实现身份验证功能。在此简单介绍 Kerberos,有需要的读者可自行学习。

若笔者日后有需要,自然会将本快内容补齐。敬请期待。

YouTube 教程

  • 不会在网络里传输口令
  • 不会直接交换加密密钥
  • 用户和应用程序可以互相认证

许多组织利用 Kerberos 实现了 SSO.