网络文件系统(Network File System, NFS)是允许通过网络远程访问文件系统的协议。属于一种分布式文件系统协议。 NFS协议必须限制为受信任的本地网络,因为数据在网络上不加密地传递,并且基于客户端的 IP 地址来授予访问权限。可通过嗅探程序进行拦截到,欺骗来获取到访问权限。 不使用Kerberos安全认证,需确保只允许使用NFS的设备连接到所需的设备。 RPC服务器上是至关重要的,因为基本协议信任从网络接收到的数据。防火墙也必需阻挡IP嗅探,从而防止外部机器作为内部的机器工作,并且对适当端口的访问必须被限制给有意访问NFS共享的机器。 RPC(Remote Procedure Call, 远程过程调用),用于在不同的计算机或进程之间进行通信和调用远程方法,一种通信协议。服务注册到一个portmapper的目录。执行NFS查询的客户端首先处理portmapper(在端口111,TCP或UDP),并查询NFS服务器;回复默认端口2049。不是所有的RPC服务有必要使用固定的端口。 在较新的NFS版本(如NFSv4)中,rpcbind并不是严格必需的,因为NFSv4使用了TCP作为传输协议,并且直接通过端口2049进行通信,不需要rpcbind来映射RPC(远程过程调用)服务到动态端口。然而,在某些情况下或使用旧版本的NFS时,rpcbind仍然是必要的。 功能 文件共享:允许多个客户端访问和使用存储在中央服务器上的文件。 透明性:对用户来说,访问远程文件系统与访问本地文件系统几乎没有区别。 分布式文件系统:支持多个客户端同时读写同一个文件系统,适合需要协作的工作环境。 原理 NFS基于客户端-服务器架构,其中服务器共享一个或多个目录(称为“导出”),而客户端可以挂载这些共享目录并像操作本地文件一样进行操作 组件 NFS服务器:导出(export)文件系统,使其在网络上可用。管理文件系统的访问权限。 NFS客户端:挂载远程文件系统,使其在本地可见。执行文件操作(如读、写、删除等)并通过网络与服务器通信。 RPC(Remote Procedure Call,远程过程调用):NFS依赖RPC机制来实现客户端和服务器之间的通信。对于NFSv4及以上版本,RPC不是必须的,因为它们使用固定的端口(2049)进行通信。 Kerberos(验证), 部署安装 #普通磁盘挂载 #lsblk或者blkid查UUID lsblk -f blkid #创建挂载文件夹 sudo mkdir /media/user/mydisk #编辑fstab文件 sudo vi /etc/fstab UUID=1234-5678 /media/user/mydisk ext4 defaults,noatime 0 2 #取消挂载 umount /media/user/mydisk #nfs服务端 #安装 sudo apt install nfs-kernel-server #创建共享文件夹 sudo mkdir /home/nfs sudo chmod 777 /home/nfs/ #配置 sudo vi /etc/exports /home/nfs *(rw,sync,no_root_squash) sudo systemctl restart nfs-kernel-server #查看 sudo showmount -e #客户端 #安装 sudo apt install nfs-common #挂载 sudo showmount -e 127.0.0.1 sudo mkdir /mnt/nfs #手动 sudo mount -t nfs 127.0.0.1:/home/nfs /mnt/nfs #自动 sudo vi /etc/fstab # :<共享路径> <本地挂载点> <文件系统类型> <挂载选项> 127.0.0.1:/home/nfs/ /mnt/nfs nfs defaults,vers=4,hard,intr 0 0 #查看 df #取消挂载 umount /mnt/nfs sudo apt install krb5-kdc krb5-admin-server sudo mount -t nfs -o vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt sudo mount -t nfs -o vers=3,nolock,noacl,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.extreme.nas.aliyuncs.com:/share /mnt