在前面的一篇文章(https://www.cnblogs.com/zyxnhr/p/10660431.html)中,已经介绍了nfs的安装挂载使用,但是存在两个问题
一、 防火墙
在nfs和nfs的守护进程rpcbind起来后,会由几个端口,防火墙需要打通,才能是客户端访问
[[email protected] ~]# rpcinfo -p > nfs.txt
[[email protected] ~]# vim nfs.txt
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 40657 mountd
100005 1 tcp 46458 mountd
100005 2 udp 52413 mountd
100005 2 tcp 53785 mountd
100005 3 udp 60260 mountd
100005 3 tcp 44574 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 44067 nlockmgr
100021 3 udp 44067 nlockmgr
100021 4 udp 44067 nlockmgr
100021 1 tcp 44186 nlockmgr
100021 3 tcp 44186 nlockmgr
100021 4 tcp 44186 nlockmgr
但是在重新启动这两个服务后,会发现端口都发生变化
[[email protected] ~]# service rpcbind restart
[[email protected] ~]# service nfs restart
[[email protected] ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 12792 mountd
100005 1 tcp 42422 mountd
100005 2 udp 2212 mountd
100005 2 tcp 31979 mountd
100005 3 udp 5090 mountd
100005 3 tcp 38716 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 19191 nlockmgr
100021 3 udp 19191 nlockmgr
100021 4 udp 19191 nlockmgr
100021 1 tcp 34774 nlockmgr
100021 3 tcp 34774 nlockmgr
100021 4 tcp 34774 nlockmgr
这样的的防火墙原先配置开放的端口就会失效,nfs客户端就无法使用nfs
1.1 解决一
根据端口,再次打开新的端口限制,但是不可取
1.2 解决二
固定端口,把端口写进配置文件,每次重启使用固定的端口
[[email protected] ~]# vim /etc/sysconfig/nfs
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
[[email protected] ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 30003 mountd
100005 1 tcp 30003 mountd
100005 2 udp 30003 mountd
100005 2 tcp 30003 mountd
100005 3 udp 30003 mountd
100005 3 tcp 30003 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 30002 nlockmgr
100021 3 udp 30002 nlockmgr
100021 4 udp 30002 nlockmgr
100021 1 tcp 30002 nlockmgr
100021 3 tcp 30002 nlockmgr
100021 4 tcp 30002 nlockmgr
把这些端口开放,在再起启动,偶不会影响
开放端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30002 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30003 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30004 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30001 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 111 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 2049 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30001 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30002 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30003 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30004 -j ACCEPT
1.3 解决三
直接开放源的网卡端口
-A INPUT -s 客户端IP/32 -i eth0 -j ACCEPT
重启防火墙:
[[email protected] ~]# service iptables restart
客户端连接
二,权限开了rw,但是客户端依然没有写权限
[[email protected] ~]# vim /etc/exports
/home/data/sharedir 客户端IP(rw,sync,no_root_squash)
客户端写数据
[[email protected] ~]# cd /home/data/www/
[[email protected] www]# touch 111
touch: cannot touch `111‘: Permission denied
查看服务端本文件夹的权限,发现对于其他用户,是没有写权限的
[[email protected] ~]# chmod o+w /home/data/www/ -R
再次测试,已经可以成功写入
[[email protected] www]# touch 111
[[email protected] www]# ll
-rw-r--r--. 1 root root 0 Apr 16 17:20 111