一、防火墙配置
CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙。
1、关闭firewall:
代码语言:javascript复制systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
systemctl mask firewalld
systemctl stop firewalld
yum remove firewalld
2、安装iptables防火墙
代码语言:javascript复制yum install iptables-services #安装
代码语言:javascript复制vi /etc/sysconfig/iptables #编辑防火墙配置文件
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 111 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 892 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 892 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1001:2001 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 1001:2001 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 32803 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 32769 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出
代码语言:javascript复制systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
/usr/libexec/iptables/iptables.init restart #重启防火墙
防火墙端口说明:
rpcbind使用:tcp/udp 111
nfs使用:tcp/udp 2049
mountd使用: TCP/UDP 892
status使用: TCP/UDP 1001-2001
nlockmgr使用:TCP/32803端口 UDP/32769端口
二、关闭SELINUX
代码语言:javascript复制vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
三、安装NFS服务器
#如果是debian/ubuntu系统,使用命令安装
代码语言:javascript复制apt-get install nfs-common nfs-kernel-server
rpcbind默认已安装
代码语言:javascript复制yum -y install nfs-utils rpcbind #安装
vi /etc/sysconfig/nfs #编辑修改配置文件
LOCKD_TCPPORT=32803 #取消前面的注释
LOCKD_UDPPORT=32769 #取消前面的注释
MOUNTD_PORT=892 #取消前面的注释
STATD_PORT=1001 #取消前面的注释,端口修改为1001
STATD_OUTGOING_PORT=2001 #取消前面的注释,端口修改为2001
:wq! #保存退出
创建共享目录,在服务器上创建共享目录,并设置权限。
代码语言:javascript复制mkdir -p /nfs
chmod 755 -R /nfs
vi /etc/exports #编辑共享目录,添加以下内容
/nfs 192.168.21.0/24(insecure,rw,sync,no_subtree_check,no_root_squash)
:wq! #保存退出
使配置生效
代码语言:javascript复制exportfs -rv
如果有多个网段或主机用空格分开
- rw 表示设置目录可读写
- sync 表示数据会同步写入到内存和硬盘中,相反rsync表示数据会先暂存于内存中,而非直接写入到硬盘中
- no_subtree_check 不检查目录权限,提高数据读取效率
- no_root_squash 登入NFS主机使用分享目录的使用者
- insecure 表示客户端请求源端口可以大于1024
启动服务(注意顺序不能错)
代码语言:javascript复制systemctl start rpcbind
systemctl start nfs
#设置开机启动
代码语言:javascript复制systemctl enable rpcbind
systemctl enable nfs
#关闭
代码语言:javascript复制systemctl stop nfs
systemctl stop rpcbind
#查看nfs信息
代码语言:javascript复制rpcinfo -p 192.168.21.8
代码语言:javascript复制[root@master01 ~]# rpcinfo -p 192.168.21.8
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
100024 1 udp 1001 status
100024 1 tcp 1001 status
100005 1 udp 892 mountd
100005 1 tcp 892 mountd
100005 2 udp 892 mountd
100005 2 tcp 892 mountd
100005 3 udp 892 mountd
100005 3 tcp 892 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 32769 nlockmgr
100021 3 udp 32769 nlockmgr
100021 4 udp 32769 nlockmgr
100021 1 tcp 32803 nlockmgr
100021 3 tcp 32803 nlockmgr
100021 4 tcp 32803 nlockmgr
显示共享目录
代码语言:javascript复制showmount -e 192.168.21.8
[root@master01 ~]# showmount -e 192.168.21.8
Export list for 192.168.21.8:
/nfs 192.168.21.0/24
cat /var/lib/nfs/etab
四、客户端配置
客户端挂载目录不需要开放nfs服务器上的端口
1.安装nfs
客户端只需要安装即可,无需启动
代码语言:javascript复制yum -y install nfs-utils rpcbind #安装
显示共享目录
代码语言:javascript复制showmount -e 192.168.21.8
#创建挂载目录
代码语言:javascript复制mkdir -p /nfs
#执行挂载命令
代码语言:javascript复制mount -t nfs -o nolock,nfsvers=3,vers=3,soft,intr,bg,rw,rsize=32768,wsize=32768 192.168.21.8:/nfs /nfs
#客户端挂载NFS服务器共享目录,第一个目录是nfs服务器共享目录,第二个目录是客户端本地目录
如果要卸载目录,执行下面命令
代码语言:javascript复制umount /data/nfs #卸载目录
2、设置开机自动挂载目录
说明:
请勿将挂载目录写到/etc/fstab文件中,因为开机时先挂载本机磁盘再启动网络,而NFS是需要网络启动后才能挂载的
把挂载命令写入到/etc/rc.d/rc.local文件中即可。
代码语言:javascript复制vi /etc/rc.d/rc.local #添加
mount -t nfs -o nolock,nfsvers=3,vers=3,soft,intr,bg,rw,rsize=32768,wsize=32768 192.168.21.8:/nfs /nfs
:wq! #保存退出