Chinaunix首页 | 论坛 | 博客
  • 博客访问: 530419
  • 博文数量: 87
  • 博客积分: 1549
  • 博客等级: 上尉
  • 技术积分: 970
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 16:56
文章分类
文章存档

2013年(10)

2012年(28)

2011年(49)

分类: LINUX

2011-05-08 18:35:06

最近看到有人解决如下问题:
两边互相都能ping通
但一挂载: mount 192.168.0.11:/home/ddv /tmp      
显示:
nfs warning: mount version older than kernel                                    
RPC: sendmsg returned error 101                                                  
portmap: RPC call returned error 101                                            
RPC: failed to contact portmap (errno -101).                                    
RPC: sendmsg returned error 101                                                  
portmap: RPC call returned error 101                                            
RPC: failed to contact portmap (errno -101).                                    
lockd_up: makesock failed, error=-101                                            
RPC: sendmsg returned error 101                                                  
portmap: RPC call returned error 101                                            
RPC: failed to contact portmap (errno -101).                                    
# QDir::readDirEntries: Cannot read the directory: /usr/lib/ipkg/externinfo      
解决方案:
重新配置了/etc/hosts.allow和/etc/hosts.deny
重启了portmap
但我看了里面的文件,不知如何配置???问题暂置,望高人指望或以后以外发现
 
一、安装tftp
安装tftp先要安装xinetd,我安装的是xinetd-2.3.14-11.i386.rpm,用rpm即可快速安装,接下来安装tftp-server,由于s3c2410中的uboot上已经实现了tftp-client,故只需下载tftp-server软件包,我下载的是tftp-server-0.42-4.i386.rpm,也直接用rpm安装就行了。安装好后,就要配置/etc/xinetd.d/tftp文件了

service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot // tftp/tftpboot 可自己随便定义,不过不要写成/*****的形式
disable = no //这里把yes改成no
per_source = 11
cps = 100 2
flags = IPv4
}

最后启动tftp服务:service xinet restart

碰到的问题:在uboot下使用命令tftp 0x31000000 zImage.img时,然后一直出现TTTT,下载不了。当时我的server_args是设成/tftpboot,令我不解的是把server_args设成/tftp/tftpboot居然可以下载了,到现在还搞不懂是啥原因,先暂时这样写着,搞懂了再来改。

二、 安装nfs
NFS的安装是非常简单的,只需要两个软件包即可,而且在通常情况下,是作为系统的默认包安装的,在配置使用NFS之前需要先查询所需的软件包是否已安装。

# rpm -q nfs-utils portmap

nfs-utils-1.0.6-70.EL4

portmap-4.0-63

//如果出现包的信息,则表示已安装了nfs-utils portmap两个软件包

我的系统是FC7,默认下只安装了nfs-utils,没有安装portmap,我下了个portmap-4.0-65.i386.rpm 用rpm很快就能装好。

接下来配置文件/etc/exports ,一开始里面什么都没有,输入:

/nfs/nfsroot *(rw,sync,no_root_squash)

其中/nfs/nfsroot 可自定义

现在可以启动nfs服务了,不过要先启动portmap(service protmap restart),再启动nfs(service nfs start),可以通过service nfs status查看nfs的当前状态。

碰到的问题:
[Tekkaman2410@UP-NETARM2410-S]#mount -t nfs 192.168.253.111:/nfs/nfsroot /mnt
RPC: sendmsg returned error 101
portmap: RPC call returned error 101
RPC: failed to contact portmap (errno -101).
RPC: sendmsg returned error 101
portmap: RPC call returned error 101
RPC: failed to contact portmap (errno -101).
lockd_up: makesock failed, error=-101
RPC: sendmsg returned error 101
portmap: RPC call returned error 101
RPC: failed to contact portmap (errno -101).

解决方法:重新启动portmap和nfs服务即可。

额外的问题还有:

1、fs type nfs no supported by kernel
kernel不支持nfs文件系统,重新编译一下KERNEL就可以解决。

2、cant contact portmapper: RPC: Remote system error - Connection refused
出现这个错误信息是由于SEVER端的PORTMAP没有启动。

3、mount clntudp_create: RPC: Program not registered
NFS没有启动起来,可以用showmout -e host命令来检查NFS SERVER是否正常启动起来。

4、mount: localhost:/home/test failed, reason given by server: Permission denied
这个提示是当client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录。解决方法当然是去修改NFS SERVER咯。

5、被防火墙阻挡
这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开。而NFS默认是使用111端口,所以我们先要检测是否打开了这个端口,另外也要检查TCP_Wrappers的设定。
 
tftp可以用以下配置,并且不用关闭防火墙:
[root@localhost /]# setup
Firewall configuration--> Customize--other port 处:69:udp,保存就可以了。
查看一下:
[root@localhost /]# setup
Firewall configuration--> Customize--other port 处:tftp:udp。
tftp应该开启的端口是69。
nfs不用关闭防火墙可以正常使用的配置好像我还不会,这里帖一个网友的文章看看一下:
重新设置防火墙,包括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
 
配置一个NFS服务器和防火墙
版本:红帽企业Linux 4
现象:
NFS依赖portmap分配它监听的端口。这些端口是动态分配的,所以每次NFS重启后,端口都会改变。这使得在只允许访问系统指定端口的防火墙后运行一个NFS服务器变得困难。
解决:
第一步是分配一个永久端口号给每个NFS服务(rquotad, mountd, statd, and lockd)。因为它们能使用任何高于1024的没有被使用的端口,建议你首先查看/etc/services文件来找到一个有效的没有使用的端口范围。下面的例子使用10000-10005。
这些端口大部分在/etc/sysconfig/nfs文件里被配置。如果它不存在就创建它。它看起来像这样:
# NFS port numbers
STATD_PORT=10002
STATD_OUTGOING_PORT=10003
MOUNTD_PORT=10004
RQUOTAD_PORT=10005
lockd服务和其他服务配置不同,因为它是一个核心模块。要设置lockd使用的端口,在/etc/sysconfig/nfs文件里添加这些选项:
LOCKD_UDPPORT=30001
LOCKD_TCPPORT=30001
这里"30001"可以被替换成任何可用并且可以被分配使用的端口。
做完这些配置改变后,你可以用命令 rpcinfo -p 来查看端口分配情况:
# rpcinfo -p localhost
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100021    1   udp  10001  nlockmgr
    100021    3   udp  10001  nlockmgr
    100021    4   udp  10001  nlockmgr
    100021    1   tcp  10000  nlockmgr
    100021    3   tcp  10000  nlockmgr
    100021    4   tcp  10000  nlockmgr
    100024    1   udp  10002  status
    100024    1   tcp  10002  status
    100011    1   udp  10005  rquotad
    100011    2   udp  10005  rquotad
    100011    1   tcp  10005  rquotad
    100011    2   tcp  10005  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100005    1   udp  10004  mountd
    100005    1   tcp  10004  mountd
    100005    2   udp  10004  mountd
    100005    2   tcp  10004  mountd
    100005    3   udp  10004  mountd
    100005    3   tcp  10004  mountd
这样,当NFS重启后端口将会保留。下面是在防火墙上需要被打开的端口列表:
   * 111: portmap (tcp/udp)
   * 2049: nfs (tcp/udp)
   * 10000: example lockd (tcp)
   * 10001: example lockd (udp)
   * 10002: example statd/status (tcp/udp)
   * 10003: example statd/status outgoing (tcp/udp)
   * 10004: example mountd (tcp/udp)
   * 10005: example rquotad (tcp/udp)
你现在可以在防火墙上打开这些端口,来允许远方的客户端挂载服务器上的共享输出了。如果你使用iptables,可以用下面的命令来增加输入/输出规则,来允许访问这些端口。注意这只是一个例子,你的防火墙规则可能不一样:
# iptables -A INPUT -p tcp -m tcp --dport 111 -j ACCEPT
# iptables -A INPUT -p udp -m udp --dport 111 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT
# iptables -A INPUT -p udp -m udp --dport 2049 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
# iptables -A INPUT -p udp -m udp --dport 10001 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 10002:10005 -j ACCEPT
# iptables -A INPUT -p udp -m udp --dport 10002:10005 -j ACCEPT
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
# iptables -A OUTPUT -p tcp -m tcp --dport 111 -j ACCEPT
# iptables -A OUTPUT -p udp -m udp --dport 111 -j ACCEPT
# iptables -A OUTPUT -p tcp -m tcp --dport 2049 -j ACCEPT
# iptables -A OUTPUT -p udp -m udp --dport 2049 -j ACCEPT
# iptables -A OUTPUT -p tcp -m tcp --dport 10000 -j ACCEPT
# iptables -A OUTPUT -p udp -m udp --dport 10001 -j ACCEPT
# iptables -A OUTPUT -p tcp -m tcp --dport 10002:10005 -j ACCEPT
# iptables -A OUTPUT -p udp -m udp --dport 10002:10005 -j ACCEPT
# iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable
注意:没有指明用tcp选项的挂载请求会缺省使用udp。
 
Linux NFS服务 固定端口及防火墙配置
1.在LINUX上正常安装NFS服务
2.修改/etc/service,添加以下内容(端口号必须在1024以下,且未被占用)
    # Local services
    mountd 1011/tcp #rpc.mountd
    mountd 1011/udp #rpc.mountd
    rquotad 1012/tcp #rpc.rquotad
    rquotad 1012/udp #rpc.rquotad
3.重起nfs服务
  service nfs restart
    chkconfig nfs on
4.此时rpc相关端口已经被固定,可以添加防火墙规则
#portmap
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 111 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 111 -j ACCEPT
#nfsd
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 2049 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 2049 -j ACCEPT
#mountd
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 1011 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 1011 -j ACCEPT
#rquotad
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 1012 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 1012 -j ACCEPT
#rpc.statd
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 32768 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 32768 -j ACCEPT
阅读(1663) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~