`
virues
  • 浏览: 72009 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux NFS参数配置详情

阅读更多
1、NFS概述

   NFS:Network file system,网络文件系统;

   由sun公司1984年推出,用来在网络中的多台计算机间实现资源共享(包括象文件或cd-rom);

   设计的目的是:实现在不同系统间交互使用,所以它的通信协议采用与主机和操作系统无关的技术;

   NFS Server可以看作是File Server,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使

用NFS的远端文件就象是在使用本地文件一样;

   NFS协议从诞生到现在有多个版本:NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010);



如何查看nfs当前的版本:

   rpm -qi portmap   OR  rpm -qa |grep portmap

   rpm -qi nfs  OR rpm -qa |grep nfs

 

NFS服务器的安装:

   可以由多种安装方法:

   ----在安装linux系统时选择安装nfs服务对应的组件;(多数linux发行版本默认安装)

   ----安装nfs的rpm套件包(手动安装)

       rpm -ivh rpm包

   需要5个RPM包。

   setup-*:  共享NFS目录在/etc/exports中定义 (linux默认都安装)

   initscripts-*: 包括引导过程中装载网络目录的基本脚本 (linux默认都安装)

   nfs-utils-*:  包括基本的NFS命令与监控程序

   portmap-*:  支持安全NFS RPC服务的连接

   quota-*:    网络上共享的目录配额,包括rpc.rquotad (这个包不是必须的)

   ----也可以去下载nfs的源代码包,进行编译安装;

  

   RPC(Remote Procedure call)

   NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这

些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC

服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS

是一个文件系统,而RPC是负责负责信息的传输。

 

nfs在系统中的后台守护进程:

   nfs

  

nfs服务需要启动的其他进程:

rpc.nfsd:接收从远程系统发来的NFS请求,并将这些请求转化为本地文件系统请求;

rpc.mountd:执行被请求的文件系统的挂接和卸载操作;

rpc.portmapper:将远程请求映射到正确的NFS守护程序;

rpc.statd:在远程主机重启时,提供加锁服务;

rpc.quotaed:提供硬盘容量的管理能力,磁盘限额;

rpcinfo -p 可以查看所要的守护进程时候正常运行;

ps -ef | grep nfsd

ps -ef | grep mountd

ps -ef | grep protmap



现在我们来查看服务器上有关NFS服务器启动了哪些端口:

        # lsof -i|grep rpc

        portmap   1931 daemon    3u IPv4   4289       UDP *:sunrpc

        portmap   1931 daemon    4u IPv4   4290       TCP *:sunrpc (LISTEN)

        rpc.statd 3206 statd    3u IPv4   7081       UDP *:1029

        rpc.statd 3206 statd    6u IPv4   7072       UDP *:838

        rpc.statd 3206 statd    7u IPv4   7085       TCP *:1031 (LISTEN)

        rpc.mount 3483   root    6u IPv4   7934       UDP *:691

        rpc.mount 3483   root    7u IPv4   7937       TCP *:694 (LISTEN)



NFS服务的主配置文件:

/etc/exports:

格式:    

[共享的目录] [主机名或IP(参数,参数)]

当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]

第一列:欲共享出去的目录,也就是想共享到网络中的文件系统;

第二列:可访问主机

192.168.152.13 指定IP地址的主机

nfsclient.test.com 指定域名的主机

192.168.1.0/24 指定网段中的所有主机

*.test.com          指定域下的所有主机

*                 所有主机

第三列:共享参数

下面是一些NFS共享的常用参数:

下面是一些NFS共享的常用参数:

        ro                      只读访问

        rw                      读写访问

        sync                    所有数据在请求时写入共享

        async                   NFS在写入数据前可以相应请求

        secure                  NFS通过1024以下的安全TCP/IP端口发送

        insecure                NFS通过1024以上的端口发送

        wdelay                  如果多个用户要写入NFS目录,则归组写入(默认)

        no_wdelay               如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

        hide                    在NFS共享目录中不共享其子目录

        no_hide                 共享NFS目录的子目录

        subtree_check           如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

        no_subtree_check        和上面相对,不检查父目录权限

        all_squash              共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

        no_all_squash           保留共享文件的UID和GID(默认)

        root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认)

        no_root_squas           root用户具有根目录的完全管理访问权限

        anonuid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的UID

例如可以编辑/etc/exports为:

/tmp     *(rw,no_root_squash)

/home/public 192.168.0.*(rw)   *(ro)

/home/test  192.168.0.100(rw)

/home/linux  *.the9.com(rw,all_squash,anonuid=40,anongid=40)

相关的命令:

1、exportfs命令:

如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命

令格式如下:

exportfs [-aruv]

-a :全部mount或者unmount /etc/exports中的内容

-r :重新mount /etc/exports中分享出来的目录

-u :umount目录

-v :在export的时候,将详细的信息输出到屏幕上。

具体例子:

# exportfs -au 卸载所有共享目录

# exportfs -rv 重新共享所有目录并输出详细信息

2、启动NFS

# service portmap start

# service nfs start

检查NFS的运行级别:

# chkconfig --list portmap

# chkconfig --list nfs

根据需要设置在相应的运行级别自动启动NFS:

# chkconfig --level 235 portmap on

# chkconfig --level 235 nfs on

nfsstat:

查看NFS的运行状态,对于调整NFS的运行有很大帮助

rpcinfo:

查看rpc执行信息,可以用于检测rpc运行情况的工具

另外,还需要查看系统的iptables、/etc/hosts.allow、/etc/hosts.deny是否设置了正确的NFS访问规则;

3、客户端操作和配置

1、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法

showmout

-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。

-e :显示指定的NFS SERVER上export出来的目录。

   例如:

   showmount -e 192.168.0.30

Export list for localhost:

/tmp         *

/home/linux *.linux.org

/home/public (everyone)

/home/test   192.168.0.100

客户端运行以下命令MOUNT NFS文件系统

#mount -t nfs 192.168.70.50:/opt /mnt/disk1



2、mount nfs目录的方法:

mount -t nfs hostname(orIP):/directory /mount/point

   具体例子:

   Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs

   mount nfs的其它可选参数:

   HARD mount和SOFT MOUNT:

   HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT

上。

   SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。

例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs

   rsize和wsize:

文件传输尺寸设定:wsize 来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响

   bg:在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设

定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度)

   fg:和bg正好相反,是默认的参数

   nfsvers=n:设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER 3

   mountport:设定mount的端口

   port:根据server端export出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定

   timeo=n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳

定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。

   intr 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。

   udp:使用udp作为nfs的传输协议(NFS V2只支持UDP)

   tcp:使用tcp作为nfs的传输协议

   namlen=n:设定远程服务器所允许的最长文件名。这个值的默认是255

   acregmin=n:设定最小的在文件更新之前cache时间,默认是3

   acregmax=n:设定最大的在文件更新之前cache时间,默认是60

   acdirmin=n:设定最小的在目录更新之前cache时间,默认是30

   acdirmax=n:设定最大的在目录更新之前cache时间,默认是60

   actimeo=n:将acregmin、acregmax、acdirmin、acdirmax设定为同一个数值,默认是没有启用。

   retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutes

   noac:关闭cache机制。

同时使用多个参数的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs

请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式

mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。



3、/etc/fstab的设定方法

/etc/fstab的格式如下:

fs_spec   fs_file  fs_type   fs_options  fs_dump fs_pass 

fs_spec:该字段定义希望加载的文件系统所在的设备或远程文件系统,对于nfs这个参数一般设置为这样:192.168.0.1:/NFS

fs_file:本地的挂载点

fs_type:对于NFS来说这个字段只要设置成nfs就可以了

fs_options:挂载的参数,可以使用的参数可以参考上面的mount参数。

fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0

fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应

该为2。若该文件系统无需在启动时扫描则设置该字段为0 。



4、可能出现的问题

rpc超时问题

在服务器上的hosts文件加上了客户机的ip地址解析。



5、NFS安全

NFS的不安全性主要体现于以下4个方面:

1、新手对NFS的访问控制机制难于做到得心应手,控制目标的精确性难以实现

2、NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制

3、较早的NFS可以使未授权用户获得有效的文件句柄

4、在RPC远程调用中,一个SUID的程序就具有超级用户权限.

加强NFS安全的方法:

1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要

使用root_squash。



2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围

iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT

iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT

iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8    --dport 111 -j ACCEPT

iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8    --dport 111 -j ACCEPT

如果我们的NFS服务器在防火墙后边,则需要在防火强策略中加入如下策略:

iptables -A INPUT -p tcp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT

iptables -A INPUT -p udp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT

3、为了防止可能的Dos攻击,需要合理设定NFSD 的COPY数目。

4、使用 /etc/hosts.allow和/etc/hosts.deny 控制客户端的访问

/etc/hosts.allow

portmap: 192.168.0.0/255.255.255.0 : allow

portmap: 140.116.44.125            : allow

/etc/hosts.deny

portmap: ALL : deny

5、改变默认的NFS 端口

NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性。

6、使用Kerberos V5作为登陆验证系统


分享到:
评论

相关推荐

    Linux nfs Linux nfs Linux nfs

    本部分详细介绍了如何在Linux环境下配置NFS服务,并通过具体的实例展示了如何访问这些服务。 1. **NFS服务的确认与启动** - 首先需要确认Linux系统是否支持NFS服务。可以通过检查`/etc/rc.d/init.d`目录下是否存在...

    Linux下nfs的配置

    ### Linux 下 NFS 的配置 #### 一、NFS 概述 NFS(Network File System)是一种网络文件系统,允许用户在网络上共享文件和目录。它为用户提供了透明地访问远程机器上的文件的能力,就像访问本地文件一样。在 Linux ...

    linux 上nfs服务配置

    Linux上的NFS服务配置涵盖了网络文件系统(NFS)的安装、配置以及守护进程管理等知识点。下面将详细介绍这些内容: 首先,NFS服务的简介很重要。NFS代表网络文件系统(Network File System),这是一个由Sun公司...

    实验七 NFS服务器配置

    实验七的目的是让学生熟悉NFS(Network File System)服务器的配置和使用,这是一种在Linux系统中广泛使用的网络文件共享协议。在这个实验中,我们将通过两个主机A和B来实现文件共享,确保双方都能以ROOT用户身份...

    linux_NFS_配置步骤

    本文将详细介绍Linux NFS的配置步骤,以及NFS不同版本之间的主要区别。 首先,NFS协议经历了多个版本的发展,包括NFS V2、NFS V3和最新的NFS V4。其中,NFS V3相对于V2有以下几个显著改进: 1. 文件尺寸:NFS V3...

    Linux NFS网络服务器性能优化

    ### Linux NFS网络服务器性能优化 #### 一、硬件设备的选择 在进行NFS网络服务器性能优化时,首先需要关注的是硬件设备的选择。合理的硬件配置能够为NFS服务器提供坚实的物理基础,有效提升整体性能。 - **CPU**:...

    个人关于Linux挂载NFS系统的一些总结(完整)

    本文档详细介绍了在Linux环境下挂载NFS系统的过程,包括环境搭建、NFS服务器的安装与配置、虚拟机的网络设置以及开发板的启动参数配置。通过以上步骤,用户可以在Linux系统中高效地管理和使用远程文件系统资源。

    linux配置NFS和TFTP服务

    Linux 配置 NFS 和 TFTP 服务 Linux 操作系统中,配置 NFS(Network File System)和 TFTP(Trivial File Transfer Protocol)服务可以实现文件共享和文件传输。本文将详细介绍如何配置 NFS 和 TFTP 服务。 一、...

    NFS安装配置.doc

    在CentOS操作系统上配置NFS服务,主要包括以下几个步骤: **一、安装NFS服务** 首先,我们需要检查系统是否已经安装了NFS相关的软件包,包括`nfs-utils`和`portmap`。在命令行中输入`rpm -q nfs-utils portmap`,...

    Linuxnfs配置.pdf

    Linux NFS配置知识点: NFS(Network File System)网络文件系统是一种在客户端与服务器之间实现文件共享的网络协议。NFS允许多台计算机之间共享文件和目录,使得客户端能够像访问本地文件一样访问服务器上的文件...

    nfs服务器配置linux14.04

    在Linux系统中,NFS服务是通过NFS服务器端软件来实现的,允许远程客户端挂载并访问服务器上的特定文件系统。在这个场景中,我们将详细讲解如何在Ubuntu 14.04上配置NFS服务器。 首先,我们需要确保系统是最新的。...

    Linux NFS配置.docx

    在实际部署NFS时,还需要考虑安全性和性能优化,例如限制特定IP访问,启用防火墙规则,配置SELinux策略,以及调整NFS服务器的性能参数。此外,为了保证数据一致性,通常还会使用NFS的锁机制,防止多个客户端同时修改...

    Linux下NFS的配置和使用

    使用NFS时,还需要了解与安全性相关的配置,如使用`nfsd`的版本选择、防火墙设置以及是否使用`securenfs`参数来要求客户端进行认证。这些安全设置有助于防止未经授权的访问和数据泄露。 通过理解NFS的配置和使用...

    Linux NFS服务器及自动挂载

    总结,Linux NFS服务器的设置和自动挂载是一个重要的网络文件共享方案,通过正确配置和管理,可以有效地在多个系统之间共享数据。理解NFS的工作原理、配置方法、安全性和优化策略,对于提升IT基础设施的效率和可靠性...

    Linux NFS挂载命令

    ### Linux NFS挂载命令详解 #### 一、引言 NFS(Network File System)是一种分布式文件系统协议,...通过上述步骤和参数配置,可以实现Linux开发板通过NFS挂载宿主机根文件系统的目标,从而简化开发过程并提高效率。

    嵌入式nfs服务器配置大全

    本文将详细介绍如何在嵌入式Linux系统中配置NFS服务,包括必要的配置参数及其含义,并提供一种通过虚拟机进行配置的方法。 #### 二、NFS简介 NFS是一种分布式文件系统协议,允许用户在网络上共享文件和目录,如同...

    LINUX Nfs配置

    Linux NFS(Network File System)配置是一项关键的系统集成任务,特别是在分布式或嵌入式环境中的文件共享。NFS允许Linux主机之间透明地共享文件和目录,就像它们都在本地文件系统中一样。以下是对NFS服务器端和...

    Linux下NFS(网络文件系统)的建立与配置方法.pdf

    Linux下NFS(网络文件系统)的建立与配置方法 Linux操作系统中,Network File System(NFS)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像...

    linux设备交叉编译nfs服务器需要用到的库

    最后,配置NFS服务器包括设置`/etc/exports`文件来定义哪些目录可以被共享,以及NFS服务器的其他参数。启动和管理NFS服务通常通过`systemctl`或`service`命令进行。 总的来说,交叉编译Linux上的NFS服务器是一项...

Global site tag (gtag.js) - Google Analytics