环境: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