Chinaunix首页 | 论坛 | 博客
  • 博客访问: 749915
  • 博文数量: 176
  • 博客积分: 2548
  • 博客等级: 少校
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-29 16:36
个人简介

爱咋咋地

文章分类

全部博文(176)

文章存档

2024年(1)

2023年(17)

2022年(19)

2021年(3)

2020年(1)

2018年(1)

2017年(1)

2014年(1)

2013年(4)

2012年(11)

2011年(19)

2010年(22)

2009年(71)

2008年(5)

分类: LINUX

2009-06-17 14:14:02

前几天做了一个nfs服务器来共享代码,省得考来考去(svn太慢),后来发现在同一网段内mount的时候一切正常,但在用nat夸网段访问的时候,总是不成功。
 
原以为是nfs在数据包内封装了客户端的ip地址引起的nat穿越问题(就好象sip和ftp的问题),后来用ethereal抓包发现里面没有ip地址,可以肯定不是这个问题。
 
去看server的log发现了nfs的错误日志“illegal port 63300”,nat转换后把子网主机的源端口映射到nat主机的某个端口上(一般会在1024端口以上,可以自行配置),我的nat转换后变成6w多,所以nfs报错了。
 
处理方法:在exports 文件的访问选项中加上insecure 选项
  insecure NFS通过1024以上的端口发送
/**************************************************************/
NFS的安装说明:
  1、NFS包
  -----------
  NFS需要5个RPM,分别是:
  setup-* : 共享NFS目录在/etc/exports中定义
  initscripts-* : 包括引导过程中装载网络目录的基本脚本
  nfs-utils-* : 包括基本的NFS命令与监控程序
  portmap-* : 支持安全NFS RPC服务的连接
  quota-* : 网络上共享的目录配额,包括rpc.rquotad (这个包不是必须的)
  2、基本监控程序
  -------------------
  要顺利运行NFS,至少需要五个Linux服务,它们各有不同的功能,有的负责装载服务,有的保证远程命令指向正确的位置。这些服务通过/etc/rc.d/init.d目录中的nfs,nfslock和portmap脚本启动。下面简单介绍每个监控程序:
  (1) 基本NFS
  rpc.nfsd是NFS服务器监控程序,它通过/etc/rc.d/init.d目录中的nfs脚本启动。NFS监控程序还启动rpc.mountd装载监控程序,并导出共享目录。
  (2) RPC装载
  可以用mount命令连接本地目录或网络目录,但还需要一个装载NFS目录的特殊监控程序rpc.mountd
  (3) 端口映射器
  portmap监控程序只是定向RPC通信数据流,但它对于NFS服务很重要。如果不运行portmap,则NFS客户机无法找到从NFS服务器共享的目录。
  (4) 重新启动与statd
  当NFS服务需要中断或者重新启动时,rpc.statd监控程序和rpc.lockd在服务器重新启动之后使客户机恢复NFS连接。
  (5) 锁定
  通过共享NFS目录打开文件时,锁定可以使用户不能覆盖同一个文件。锁定通过nfslock脚本并使用rpc.lockd监控程序启动运行。
  3、配置NFS
  -------------
  共享的NFS目录在/etc/exports中列出,这个文件控制对目录的共享。书写规则是:(每个共享规则一行)
  共享目录 主机(参数)
  例如:
  /mnt/cdrom *.abc.com(ro,sync) master.abc.com(rw,sync)
  上面的规则代表将/mnt/cdrom目录以只读同步方式共享给*.abc.com域,并且以读写同步方式共享给master.abc.com主机。
  任何共享目录都要指定sync或async,也就是指定文件写入磁盘之前共享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
  anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
  4、启动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
  另外,还需要查看系统的iptables、/etc/hosts.allow、/etc/hosts.deny是否设置了正确的NFS访问规则。
阅读(2314) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~