如何在CentOS 6上设置NFS服务器

时间:2020-01-09 10:39:44  来源:igfitidea点击:

说明

称为网络文件系统(NFS)的分布式文件系统允许客户端计算机通过网络访问托管在其他计算机上的文件。与其他网络文件共享协议(例如Microsoft的SMB)不同,必须先在客户端上装载NFS共享,然后才能对其进行访问。

安装和配置NFS

CentOS 6的基本服务器安装包括NFS所需的软件包。另一方面,最小安装没有,因此必须安装它们。如果我们进行了基础服务器安装,则可以忽略此步骤。

  • 使用yum安装NFS及其常用工具。 yum install nfs-utils
  • 将NFS服务配置为在引导时运行。 chkconfig nfs on
  • 将rpcbind服务配置为在引导时运行。该服务是NFS必需的,并且必须在启动NFS之前运行。 chkconfig rpcbind开启
  • 启动rpcbind服务。 服务rpcbind启动
  • 启动NFS服务。服务nfs开始

准备NFS导出

创建导出目录

共享文件的第一步是创建一个目录,该目录将"导出"到我们的客户端计算机。

  • 创建第一个导出目录。 mkdir / exports / documents

出口目录

通过导出目​​录,我们允许客户端通过网络安装它。

  • 将NFS导出文件打开到文本编辑器中。 nano / etc / exports
  • 要将先前创建的文档目录导出到具有读写访问权限的特定客户端,请添加以下行。
/exports/documents   desktop01.theitroad.test(rw)
  • 要将目录导出到具有可读写访问权限的主机名(从desktop01到desktop09)的客户端,请添加以下行。
/exports/documents   desktop0[1-9].theitroad.test(rw)
  • 要将目录导出到具有读写访问权限的特定网络上的所有客户端,请添加以下行。
/exports/documents   172.30.1.0/24(rw)
  • 要将目录导出给具有只读访问权限的所有人,请添加以下行。
/exports/documents   *(rw)
  • 保存更改并退出文本编辑器。
  • 导出上面定义的目录。 exportfs -a

导出选项

在上面的示例中,我们仅对导出使用读写或者只读选项。这是可以组合使用的其他选项的列表。

rw公司
允许NFS卷上的读和写请求
不要等待数据已提交到磁盘的确认。这以牺牲数据完整性为代价提高了性能
等待确认数据已提交到磁盘
将请求从uid/gid 0(根帐户和组ID)映射到匿名uid/gid。这将阻止根用户访问导出
不要挤压root的特权

将静态端口分配给NFS

NFS的默认配置是使用随机端口进行客户端连接。出于安全原因,在需要限制端口数的环境中,这是不希望的。让网络管理员在防火墙上戳一千个孔并不会使我们成为很多朋友。幸运的是,我们可以将NFS配置为仅使用更易于保护的特定端口。

  • 打开NFS网络配置文件。纳米/ etc / sysconfig / nfs
  • 取消注释突出显示的行。
#
# Define which protocol versions mountd
# will advertise. The values are "no" or "yes"
# with yes being the default
#MOUNTD_NFS_V2="no"
#MOUNTD_NFS_V3="no"
#
#
# Path to remote quota server. See rquotad(8)
#RQUOTAD="/usr/sbin/rpc.rquotad"
# Port rquotad should listen on.
RQUOTAD_PORT=875
# Optinal options passed to rquotad
#RPCRQUOTADOPTS=""
#
#
# Optional arguments passed to in-kernel lockd
#LOCKDARG=
# TCP port rpc.lockd should listen on.
LOCKD_TCPPORT=32803
# UDP port rpc.lockd should listen on.
LOCKD_UDPPORT=32769
#
#
# Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
# Turn off v2 and v3 protocol support
#RPCNFSDARGS="-N 2 -N 3"
# Turn off v4 protocol support
#RPCNFSDARGS="-N 4"
# Number of nfs server processes to be started.
# The default is 8.
#RPCNFSDCOUNT=8
# Stop the nfsd module from being pre-loaded
#NFSD_MODULE="noload"
# Set V4 grace period in seconds
#NFSD_V4_GRACE=90
#
#
#
# Optional arguments passed to rpc.mountd. See rpc.mountd(8)
#RPCMOUNTDOPTS=""
# Port rpc.mountd should listen on.
MOUNTD_PORT=892
#
#
# Optional arguments passed to rpc.statd. See rpc.statd(8)
#STATDARG=""
# Port rpc.statd should listen on.
STATD_PORT=662
# Outgoing port statd should used. The default is port
# is random
STATD_OUTGOING_PORT=2020
# Specify callout program
#STATD_HA_CALLOUT="/usr/local/bin/foo"
#
#
# Optional arguments passed to rpc.idmapd. See rpc.idmapd(8)
#RPCIDMAPDARGS=""
#
# Set to turn on Secure NFS mounts.
#SECURE_NFS="yes"
# Optional arguments passed to rpc.gssd. See rpc.gssd(8)
#RPCGSSDARGS=""
# Optional arguments passed to rpc.svcgssd. See rpc.svcgssd(8)
#RPCSVCGSSDARGS=""
#
# To enable RDMA support on the server by setting this to
# the port the server should listen on
#RDMA_PORT=20049
  • 保存更改并退出文本编辑器。
  • 重新启动rpcbind服务。 服务rpcbind重新启动
  • 重新启动NFS服务。 服务NFS重新启动

打开防火墙

如果防火墙阻止了客户,则它们将无法访问我们刚刚创建的导出,默认情况下会这样做。我们有几种方法可以完成此操作,每种方法都取决于服务器的安装方式。如果安装了系统配置防火墙实用程序(system-config-firewall-tui),则可以使用简单的GUI打开访问权限。否则,我们可以直接使用IPTables并创建自己的策略。

使用系统配置防火墙允许访问

  • 运行系统配置防火墙system-config-firewall-tui
  • 确保启用了防火墙。系统配置防火墙
  • 通过按Tab导航到"自定义",然后按Enter。
  • 向下滚动受信任服务的列表,然后选择NFS4. 系统配置防火墙可信服务
  • 通过按Tab导航到"前进"按钮,然后按Enter。
  • 为TCP和UDP添加以下端口。 111
  • 32703
  • 32769
  • 892
  • 875
  • 662
  • 2020年
  • 通过按Tab导航到"关闭"按钮,然后按Enter。
  • 通过按Tab导航到"确定"按钮,然后按Enter。
  • 设置将被应用,并且访问将对incomg NFS请求开放。

直接使用IPTables配置防火墙

尽管系统配置防火墙是

  • 在文本编辑器中打开IPTables策略配置文件。 nano/ etc / sysconfig / iptables
  • 向其添加以下突出显示的行
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 32803 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 32769 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 662 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 662 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2020 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 2020 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
  • 重新启动IPtables以应用新规则。 服务iptables重启

在客户端上挂载NFS导出

临时挂载

如果仅临时需要导出以快速访问文件,则可以使用mount命令来装入NFS导出。此方法将无法重新启动。

  • 登录到客户端计算机。
  • 验证从服务器导出的NFS是否可见。 showmount <nfs服务器的IP或者主机名> --exports
  • showmount命令的输出将列出可见的导出。在此示例中,NFS服务器的IP地址是172.30.1.213.
Export list for 172.30.1.213:
/exports/dept *
  • 创建一个目录以将导出安装到其中。 mkdir / dept
  • 安装出口。 mount -t nfs 172.30.1.213:/exports/nfs / dept

使用fstab持久安装

如果导出需要始终可用,则可以配置fstab在引导时挂载导出。

  • 登录到客户端计算机。
  • 验证从服务器导出的NFS是否可见。 showmount <nfs服务器的IP或者主机名> --exports
  • showmount命令的输出将列出可见的导出。在此示例中,NFS服务器的IP地址是172.30.1.213.
Export list for 172.30.1.213:
/exports/dept *
  • 创建一个目录以将导出安装到该目录。 mkdir / dept
  • 在文本编辑器中打开fstab配置文件。纳米/ etc / fstab
  • 添加以下行:
172.30.1.213:/exports/nfs     /dept     nfs     defaults 0 0
  • 保存更改并退出文本编辑器。
  • 挂载NFS导出。 mount -a