Linux下NFS服务器的配置
时间:2006-03-09 来源:samsams
Linux下NFS服务器的配置
类型:System V-launched Service
软件包:nfs-utils
进程:nfsd,lockd,rpciod,rpc.{mounted,rquotad,statd}
脚本:nfs,nfslock
端口:由portmap服务指派端口(111)
配置文件:/etc/exports
辅助工具:portmap(必须)
相关命令:rpcinfo -p [IPADD]:查看服务器提供的rpc服务
showmount -e:查看服务共享的目录
Server端:
1./etc/exports格式:
目录 选项
例:共享/share目录给192.168.0.x的用户
/share 192.168.0.0/24 (rw)
2.启动portmap服务:
service portmap start[restart]
3.启动NFS服务:
service nfs start[restart]
Client端
1.启动portmap服务:
service portmap start[restart]
2.挂载服务器端的共享目录(假设服务器端192.168.0.1):
mount -t nfs 192.168.0.1:/share /mnt/localshare
nfs配置 发表:2004-6-10 13:09:22 出处:你的博客网(yourblog.org)
1. 查看系統有沒有nfs功能
cat /proc/filesystes
2. ntsysv 命令選中nfs
service nfs restart,看能否啟動,如不能正常,可以查看相應的出錯信息
tali /var/log/messages
3. 配置/etc/exports
eg: /home/mis *(rw)
此文件是配置相關的文件和一些權限,上面的設置表示,所有的用戶對/home/mis都有讀寫的權限
4. 執行exportfs -a 表示將所有的更新.
5. service nfs restart
6. 執行mount命令
eg: mount 10.0.1.153:/home/mis /mnt/mis
7. 常用的命令
showmount
repcinfo
8. 如果在開機時就加載,可在/etc/fstab中加入
ip:/home.mis /mnt/mis nfs intr
|
http://www.linuxcenter.com.tw/ 作者:Juili Chiu (2001-06-07 11:00:01) 简介: NFS 最初是由 Sun Microsytem 公司於 1984 年所开发出来的,最主要的功能就是让网路上的 UNIX 电脑可以共享目录及档案。我们可以将远端所分享出来的档案系统,挂载 (mount) 在本地端的系统上,然後就可以很方便的使用远端的档案,而操作起来就像在本地操作一样,不会感到有甚麽不同。而使用 NFS 也有相当多的好处,例如档案可以集中管理,节省磁碟空间......等等。 安装 NFS: 大部份的 Linux Distribution 安装时都会将 NFS 安装上去,在 OpenLinux 上,NFS 由两个 RPM 套件所组成,分别为 nfs 及 nfs-server,nfs 主要包括一些 client 端所需要的程式,而 nfs-server 主要是 NFS Server 的一些 daemon 程式。 设定 NFS: 设定档:/etc/exports 设定档格式:档案系统 [主机][选项] 例: / charlie(ro) john(rw,no_root_squash) /tmp pc*.col.com.tw(rw) 172.29.0.0/255.255.0.0(ro) /pub (ro) /pub/private (noaccess) 选项说明: ro read only rw read write no_root_squash 信任客户端,对应 UID noaccess 客户端不能使用 启动及结束 NFS 的服务: 设定档更改後,一定要记得重新启动 NFS 的服务,启动及停止的方式如下: # /etc/rc.d/init.d/nfs [ start | stop | restart | reload ] start 启动 NFS 服务 stop 停止 NFS 服务 restart 停止并重新启动 NFS 服务 reload 重新载入 NFS 设定值 客户端使用 NFS: 1.查看 NFS 的服务: client 要查看 Server 有提供哪些 NFS 服务,可以使用 showmount 这个指令。 # showmount -e 可看有分享哪些目录 # showmount -a 可看出所有的 mount 2.连接 NFS Server: 要使用 NFS server 上的资源,使用 mount 指令就可以了。 # mount -t nfs hostname:/shared_dir 例: # mount -t nfs 192.168.1.100:/tmp /mnt/nfs 3.开机时自动连上 NFS: 如果希望开机的时候,系统就自动挂载 NSF,则需要编辑 /etc/fstab 档。 例: 192.168.1.100:/tmp /mnt/nfs nfs defaults 0 0 |
8.启动服务portmap,nfs
#/etc/rc.d/init.d/portmap start (or:#service portmap start)
#/etc/rc.d/init.d/nfs start (or:#service nfs start)
可以到/var/log/messages里面查看是否正确激活
9.exportfs的用法
如果我们修改了/etc/exports后,并不需要重启nfs服务,只要用exportfs重新扫描一次/etc/exports,并且重新加载即可
语法: exportfs [-aruv]
-a: 全部挂载(或卸载) /etc/exports档案内的设定
-r: 重新挂载/etc/exports里面的设定,也同步的更新/etc/exports和/var/lib/nfs/xtab里面的内容
-u:卸载某一目录
-v:在export的时候,将分享的目录显示到荧屏上.
例子
#exportfs -rv //重新export一次
#exportfs -au //全部卸载
10./var/lib/nfs/xtab里面可以查看每个目录的分享权限(但是我怎么也没有找到,靠,找到了,原来要有人mount上nfs后才会出现内容),如:
/tmp node3(ro,sync,wdelay,hide,secure,root_squash,no_all_squash,subtree_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)
为什么anonuid=-2呢?呵呵!其实它说的是将 65536 - 2 的值,也就是 65534 的那个 UID 啦!对照一下 /etc/passwd ,你就会发现,哇!原来那就是 nobody 的啦
11.showmount命令
语法: showmount [-ae] hostname
-a: 显示目前主机与client所连上来的使用目录的状态
-e: 显示hostname的/etc/exports里面共享的目录
12.查看激活的portnumber
#netstat -utln
nfs 自己所开启的 port ,就是那个 2049 的 port 啦!就是 NFS 主要产生的 port NFS server 在前面我们就提过了,他是 RPC server 的一种,而 NFS 由于提供了多个 program ( 例如 rpc.mountd, rpc.rquotad, rpc.nfsd... ) ,因此就需要激活多个 port 了!而且这些 port 是『随机产生的』,也就是那个 port number 不会是固定的啦!每次 restart nfs 都会得到不一样的 port number 呢!那么 Client 端怎么知道要连接上那个 port 来呼叫需要的 program 呢?呵呵!那就是 sunrpc ( port 111 ) 那个 portmap 服务所产生的 port number 的功用啦!Client 会先连接到 sunrpc 那个 port 去知道应该到那个 port 去呼叫所需要的程序!所以啰, rpc.xxxx 等之类的 daemon 自然就不需要有固定的 port number 啰!
***********************************************
NFS客户端的设定
#mount -t nfs hostname(orIP):/directory /mountpoint 搞定,就这么简单
为了担心会不小心将 NFS 端挂进来的具有 SUID 权限档案的程序执行,root可以将NFS 所分享的目录以较为安全的情况挂载进来,可以
#mount -t nfs -o nosuid,ro hostname:/directory /mountponit
可能出问题的地方:
1.权限的设定不符合
2.忘记了激活portmap,此时会报错:
mount: RPC: Port mapper failure - RPC: Unable to receive 或者
mount: RPC: Program not registered
那么,启动portmap,并且重新启动nfs
#service portmap start
#service nfs restart
3.被防火墙搞掉
重新设置防火墙,包括iptables与TCP_Wrappers,因为激活了portmap,所以port 111必须提供出去.因此在iptables rules中,要增加:
iptables -A INPUT -p TCP --dport 111 -j ACCEPT
iptables -A INPUT -p UDP --dport 111 -j ACCEPT
如果还不行,那就是TCP_Wrappers的问题,检查/etc/hosts.deny,如果有一行是:
ALL: ALL: deny
那就必须在/etc/hosts.allow中增加:
portmap: ALL: allow
如果我们的NFS针对内部网络开发,对于外部网络只对学术网络开发(140.0.0.0/8),可以:
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
还可以使用TCP_Wrappers,在/etc/hosts.allow里面规定连上 NFS 主机的主机 IP 与名称,例如
#vi /.etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 :allow
portmap: 140.113.23.23 :allow
portmap: .sdu.edu.cn :allow
RPC Server的相关命令
rpcinfo
#rpcinfo -p hostname(orIP)
要注意的问题:
需要注意的是,由于 NFS 使用的这个 RPC 在 client 端连上主机时,那么你的主机想要关机,那可就会成为『不可能的任务』!我还不知道正确的原因是什么,但是,如果你的 Server 上面还有 Client 在联机,那么你要关机,可能得要等到数个钟头才能够正常的关机成功!嗄!真的假的!不相信吗?不然您自个儿试试看! ^_^!所以啰,建议您的 NFS Server 想要关机之前,能更先『关掉 portmap 与 nfs 』这两个东西!如果无法正确的将这两个 daemons 关掉,那么先以 netstat -utlp 找出 PID ,然后以 kill 将他关掉先!这样才有办法正常的关机成功喔!这个请特别特别的注意呢!
在TurboLinux8.0 for AMD64 (kernel 2.4.21-4smp),mount NFS时候报错为:
portmap: server localhost not responding, timed out
解决办法:
mount -t nfs -o nolock node1:/public /public
即增加-o nolock参数,原因:
Unfsd doesn't support NLM locking, and it's causing the lockd daemon to be started (which again requires the portmapper to be installed etc.)
构建Linux上的NFS服务器(1) |
文章来源: 开放系统世界 |
2003-11-29 11:01:29 |
|
如果修改了/etc/exports这个文件后,不需要重新激活nfs,只要重新扫瞄一次/etc/exports的文件,并且重新将设定加载即可:
# exportfs [-aruv] |
参数说明:
-a 全部挂载(或卸载) /etc/exports 文件内的设定 。
-r 重新挂载/etc/exports里的设定,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab的内容。
-u 卸载某一目录。
-v 在export的时候,将共享的目录显示到屏幕上。
5.检验目录/var/lib/nfs/xtab
检验所共享的目录内容,查看/var/lib/nfs/xtab这个文件:
# vi /var/lib/nfs/xtab /home/cao 192.168.0.1(rw,sync,wdelay,hide,secure,root_squash, no_all_squash,subtree_check,secure_locks, mapping=identity,anonuid=-2, anongid=-2) |
这就是/home/cao这个共享出去的目录预设NFS里面的属性。
6.showmount
# showmount [-ae] hostname |
参数说明:
-a 在屏幕上显示目前主机与Client所连上来的使用目录状态 。
-e 显示hostname这部机器的/etc/exports里面的共享目录。
当要扫瞄某一主机所提供的NFS共享的目录时,就使用showmount -e IP(或主机名称hostname)即可。
7.观察激活的端口号
# netstat -utln Active Internet connections (only SERVERs) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN <== portmap tcp 0 0 0.0.0.0:817 0.0.0.0:* LISTEN <== rpc.xxxx tcp 0 0 0.0.0.0:1266 0.0.0.0:* LISTEN <== rpc.xxxx udp 0 0 0.0.0.0:2049 0.0.0.0:* <== nfs 的 port udp 0 0 0.0.0.0:814 0.0.0.0:* <== rpc.xxxx udp 0 0 0.0.0.0:1327 0.0.0.0:* <== rpc.xxxx udp 0 0 0.0.0.0:111 0.0.0.0:* <== portmap |
nfs所开启的端口是2049,其它的端口是RPC Server其它程序(例如rpc.mountd、rpc.rquotad、rpc.nfsd... )随机产生的,也就是端口号不会是固定的,每次restart nfs都会得到不一样的端口号。
8. 停止NFS服务
# /etc/rc.d/init.d/portmap stop |
Client端PC的设定
1.扫瞄可以使用的NFS Server目录
在Client本地端建立mount point,使用mount将远程主机共享的目录挂载进来。假设主机名称是www.cao.net,使用showmount查看NFS Server可以共享的目录。然后将/home/public挂载在 /home/nfs/public下:
# showmount -e www.cao.net Export list for localhost: /tmp * /home/linux *.cao.net /home/public (everyone) /home/cao 192.168.0.1 |
2.挂载/home/public目录
首先建立这个目录,然后再利用mount指令来挂载/home/public目录:
# mkdir -p /home/nfs/public # mount -t nfs CAO.linux.org:/home/public /home/nfs/public |
挂载的格式:
# mount -t nfs hostname(orIP):/directory/mount/point # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 1904920 1235380 572776 68% / /dev/hdb1 976344 115212 810736 13% /backup www.cao.net:/home/public 1904920 1235376 572776 69% /home/nfs/public |
将资料挂载进来后,只要进入/home/nfs/public目录,就等于到了www.cao.net那部NFS Server的/home/public 目录中。
3.卸载使用umount
# umount /home/nfs/public |
关机时如果NFS Server上面还有Client联机,建议NFS Server关机之前,要先关掉portmap与nfs这两个系统服务。如果无法正确地将这两个系统服务关掉,那么先以netstat -utlp找出PID,然后使用kill杀掉进程,这样才能正常关机。
安全建议
为了保障网络安全,在使用NFS时最好结合TCP_Wrappers来限制使用范围(如果只希望192.168.5.120 这个C地址,以及IP地址为192.168.5.123的主机挂载我的NFS Server):
# vi /etc/hosts.allow portmap: 192.168.5.120/255.255.255.248 : allow portmap: 192.168.5.123 : allow # vi /etc/hosts.deny portmap: ALL : deny |
除了使用TCP_Wrappers之外,还可以使用iptables防火墙、/etc/exports权限设定来保障安全。