NFS网络文件系统
一、部署
1.1 安装服务端
centos安装
yum install nfs-server prcbind
ubuntu安装
apt install nfs-kernel-server rpcbind启动
systemctl enable --now nfs-server rpcbind
systemctl enable --now nfs-kernel-server rpcbind1.2 安装客户端
服务器与客户端都安装客户端工具
yum install nfs-utils
#centos安装
apt install nfs-common
#ubuntu安装1.2 配置文件
vim /etc/exports
/data/nfs-data *
#所有人可访问,权限留空默认。
#默认权限只读(ro)
/data/nfs-data *(ro)
#所有人可访问,读权限。
/data/nfs-data *(rw)
#所有人可访问,读写权限。
/data/nfs-data 192.168.*.*(rw,sync,no_root_squash)
#只允许IP为192.168.*.*的主机访问
#rw 可读写
#sync 同步写入到硬盘中,文件不易丢失。默认先写入内存,再写入磁盘,速度快。
#no_root_squash 不对root用户进行权限压缩。默认所有账户都压缩为nobody账号。1.3 重载配置文件
systemctl restart nfs-server
#重启服务使配置生效。
exportfs -r
#重新加载nfs配置,不影响现有服务。
exportfs -v
#列出所有共享信息。1.4 客户端操作
1.4.1 查看共享服务
showmount -e 10.0.0.0
#列出服务器端共享
#输出如下
Export list for 10.0.0.0:
/data/nfs-data *
#还会显示1.4.2 挂载nfs
mount 10.0.0.0:/data/nfs-data /data
#mount nfs源 本地挂载点 二、配置服务
2.1 权限问题
#映射客户端用户到服务器中普通用户
#默认映射账号为nobody(id:65534) 因此存在权限不足问题
#文件存在默认权限,root_squash,root用户压榨。
#普通用户不压榨为nobody,而映射为相同id的用户。
exportfs -v
#查看共享nfs目录信息,权限。
chmod 777 /data/nfs-date
#给other用户设置目录权限
chown -R nobody:nobody /data/nfs-data
#将文件属组归于nobody用户
2.2 权限设置
/data/nfs-data *(rw,all_squash,annouid=6000,annogid=6000)
#设置全部用户压榨,指定压榨为6000用户及组。
/data/nfs-data *(rw) 10.0.0.7(ro)
#如此设置所有人可读写,10.0.0.7只读。2.3 自动挂载
vim /etc/fstab
10.0.0.8:/data/nfs-data /data nfs defaults,_netdev,nofail 0 0
#_netdev 无网络时不挂载
#nofail 挂载失败不会导致系统无法启动2.4 暂停共享
exportfs -r
#刷新配置
exportfs -au
#暂停共享
exportfs -a
#恢复共享2.5 使用独立的配置文件
/etc/exports.d/*.exports
#后缀名必须为*.exports三、nfs安全配置
禁止查询挂载信息
3.1 通过hosts.deny和hosts.allow配置
先配置拒绝mountd服务的流量。
vim /etc/hosts.deny
#添加配置
mountd: ALL再配置允许的主机IP。
vim /etc/hosts.allow
#添加配置
mountd: 10.10.10.10 20.20.20.20 30.30.30.303.2 使用iptables进行限制
有的系统例如麒麟 v10 hosts.deny 已经无效,可通过iptables进行配置。
#添加禁止策略
sudo iptables -A INPUT -p tcp --dport 111 -j REJECT
sudo iptables -A INPUT -p udp --dport 111 -j REJECT
#添加允许策略
sudo iptables -I INPUT -p tcp -s 192.168.100.66 --dport 111 -j ACCEPT
sudo iptables -I INPUT -p udp -s 192.168.100.66 --dport 111 -j ACCEPT
#永久保存配置
service iptables save四、维护指南
4.1 NFS挂载卡住
nfs-server如果网络故障或重启,nfs客户端会在执行df-h,或ls时卡住。
umount -lf /mnt
#强制卸载nfs执行清强制卸载后可恢复响应。
五、其他信息
5.1 端口号
nfs使用tcp和udp2049、111端口
(如果是跨网段的NFS共享,除了开通这2个端口之外,还需要将mountd、rpcbind的端口进行指定(固定),然后再开通相应的网络策略。)
使用firewalld进行配置
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload