CentOS 7 安装与使用 NFS
注:以下文字内 [your ip] 为你当前的本机 ip,[your gateway ip] 为你当前本机的网关 ip,[link nfs ip] 为需要连接本机 nfs 的目标 ip。
1. 安装 NFS
1.1. 安装 NFS 与 rpcbind
1 | yum install nfs-utils rpcbind |
1.2. 创建共享目录并设置权限
1 | mkdir /data/share/ |
1.3. 配置 NFS
/data/share/ [your gateway ip]/24(rw,no_root_squash,no_all_squash,sync,insecure)
rw
表示设置目录可读写。
sync
表示数据会同步写入到内存和硬盘中,相反rsync
表示数据会先暂存于内存中,而非直接写入到硬盘中。
no_root_squash
NFS客户端连接服务端时如果使用的是root
的话,那么对服务端分享的目录来说,也拥有root
权限。
no_all_squash
不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限。
insecure
使用非安全模式(即允许更高的端口号),Windows NFS客户端使用大端口号,需要设置此项,否则出现网络错误-53
。
加载配置:
1 | exportfs -r |
配置的 IP 中应包含本机的 IP,否则在加载配置时会出现:
exportfs: Function not implemented
故若要指定单个 IP 能够访问,应写为:
/data/share/ [your ip](rw,no_root_squash,no_all_squash,sync,insecure) [link nfs ip](rw,no_root_squash,no_all_squash,sync,insecure)
1.3.2. 配置 /etc/sysconfig/nfs
在/etc/sysconfig/nfs
中添加:
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
1.4. 配置防火墙
1.4.1. 一般配置
1 | # NFS 服务 |
1.4.2. 需要拦截流出流量
若需要拦截流出流量(禁止本机访问外网),则还需要在direct
规则中配置:
1 | # ssh |
其中,direct
命令构成为:
firewall-cmd [--permanent] --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>
如:
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP
意为:永久(--permanent
,需reload
生效,不添加则即时生效,但重启后失效)添加direct
规则,过滤ipv4
的流出流量,全部丢弃包(DROP),优先级为2
。
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp --dport 22 -d [your gateway ip]/24 -j ACCEPT
意为:永久添加direct
规则,过滤下述类型的ipv4
的流出流量,包类型为tcp
、目标端口号为22
、目的主机为[your gateway ip]/24
,全部放行(ACCEPT),优先级为1
。
通过优先级的不同(1>2),实现限制外网访问的同时放行ssh
流量。
其中,需要注意的是,-dport
与-sport
分别意为目标端口与源端口,对于INPUT
流量和OUTPUT
流量,有以下不同的理解:
对于INPUT
流量,-dport 22
指其他主机访问本主机的22
端口;-sport 22
指其他主机通过22
端口访问本机。
对于OUTPUT
流量,-dport 22
指本机访问其他主机的22
端口;-sport 22
指本机通过22
端口访问其他主机。
1.5 启动 NFS
按顺序启动rpcbind
和nfs
服务:
1 | systemctl start rpcbind |
加入开机启动:
1 | systemctl enable rpcbind |
服务启动后,我们可以使用showmount
命令来查看服务端(本机)是否可连接:
1 | showmount -e localhost |
2. 挂载NFS
2.1. 在windows挂载
在 Windows 的控制面板中的“打开或关闭 Windows 功能”中,勾选“NFS 客户端”与“管理工具”(图 2-1),点击确定,等待其安装完成。
打开cmd
界面,挂载NFS:
# 指令构成为 mount \\IP\共享路径 盘符
mount \\[your ip]\data\share X:
上述指令意为:挂载[your ip]
的\data\share
,指定盘符为X
。
回车后成功连接,NFS 文件夹出现在资源管理器中(图 2-2):
断开连接则输入:
umount X:
开机自动挂载步骤见:Windows系统挂载NFS文件系统 - 阿里云
若在 Windows 进入 NFS 目录后无写权限,编辑注册表 NFS 默认用户,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
下添加两个QWORD
值AnonymousUid
与AnonymousGid
,值为0
。重启计算机,再次连接。
2.2. 在linux挂载
安装rpcbind
服务:
1 | yum -y install rpcbind |
查看服务端的共享目录:
1 | showmount -e [your ip] |
挂载:
1 | mkdir -p /nfs/share |
解除挂载:
1 | umount /nfs/share |
若要开机自动挂载:
1 | vim /etc/rc.d/rc.local |