环境:VMware8 虚拟机   

Linux发行版:CentOS5.8   

内核版本:2.6.18-308.el5

现象:开启两台虚拟机,运行的操作系统都是上述操作系统,把其中一台做服务器,开启NFS服务,开启portmap服务。

另外一台做客户机,开启portmap服务,开启NFS服务。

做好服务器上的共享目录后,在客户机上运行showmount -e 服务器IP地址发现,提示如下出错信息:

[root@机器名略去 ~]# showmount -e 192.168.88.128
mount clntudp_create: RPC: Port mapper failure - RPC: Unable to receive

提示说rpc端口映射失败,仔细看了所有该启动的服务,发现有几个该启动的服务没有启动,尝试service nfs restart无效。

在service nfs restart的过程中,会发现部分进程启动失败(这个不是一定的,可能所有进程都正常重启)

[root@机器名略去 ~]# service nfs restart
Shutting down NFS mountd: [  OK  ]
Shutting down NFS daemon: [  OK  ]
Shutting down NFS quotas: [  OK  ]
Starting NFS services:  [  OK  ]
Starting NFS quotas: [  OK  ]
Starting NFS daemon: [  OK  ]
Starting NFS mountd: [  OK  ]

 

考虑到,可能会不会是Linux的防火墙iptables把数据包拦截了?

查看iptables -nvxL

[root@机器名略去 ~]# iptables -nvxL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination        
     823    65116 RH-Firewall-1-INPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0          

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination        
       0        0 RH-Firewall-1-INPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0          

Chain OUTPUT (policy ACCEPT 331 packets, 32038 bytes)
    pkts      bytes target     prot opt in     out     source               destination        

Chain RH-Firewall-1-INPUT (2 references)
    pkts      bytes target     prot opt in     out     source               destination        
      88     7528 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0          
      12     1152 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 255
       0        0 ACCEPT     esp  --  *      *       0.0.0.0/0            0.0.0.0/0          
       0        0 ACCEPT     ah   --  *      *       0.0.0.0/0            0.0.0.0/0          
      18     4100 ACCEPT     udp  --  *      *       0.0.0.0/0            224.0.0.251         udp dpt:5353
       0        0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:631
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:631
     227    15052 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:21
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:25
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:2049
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
     478    37284 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:137
       0        0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:138
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:139
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:445
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:443
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:23
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80
       0        0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

 

再查看命令,rpcinfo -p 192.168.88.128

[root@机器名略去 ~]# rpcinfo -p 192.168.88.128
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    819  status
    100024    1   tcp    822  status
    100011    1   udp    752  rquotad
    100011    2   udp    752  rquotad
    100011    1   tcp    755  rquotad
    100011    2   tcp    755  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  41030  nlockmgr
    100021    3   udp  41030  nlockmgr
    100021    4   udp  41030  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   tcp  37684  nlockmgr
    100021    3   tcp  37684  nlockmgr
    100021    4   tcp  37684  nlockmgr
    100005    1   udp    767  mountd
    100005    1   tcp    770  mountd
    100005    2   udp    767  mountd
    100005    2   tcp    770  mountd
    100005    3   udp    767  mountd
    100005    3   tcp    770  mountd

可以看到,很多端口没有在iptables中打开。

有两种解决办法,一种,把这些端口全部在iptables中允许,另外一种,关闭防火墙。

这两种方法,个人觉得第二种比较方便一些,NFS开启的一些端口是随机的,不能固定加入这些端口。

在NFS服务器端,

[root@机器名略去 ~]# service iptables stop
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: filter [  OK  ]
Unloading iptables modules: [  OK  ]

再重新在客户端showmount查看,

[root@cahou ~]# showmount -e 192.168.88.128
Export list for 192.168.88.128:
/home/toshiba/sed_test/nfstest 192.168.88.0/24

显示已经可以挂载,挂载看看,挂载成功,已可以访问该共享目录。

[root@机器名略去 ~]#  mount -t nfs  192.168.88.128:/home/toshiba/sed_test/nfstest  /root/nfstest
[root@机器名略去 ~]#
[root@机器名略去 ~]#
[root@机器名略去 ~]# cd /root/nfstest/;ls -l
total 0
-rw-r--r-- 1 root root 0 Sep  4 15:40 nfstest1
-rw-r--r-- 1 root root 0 Sep  4 15:40 nfstest2
-rw-r--r-- 1 root root 0 Sep  4 15:40 nfstest3