两种方式:
1. nginx四层反向代理NFS
2. firewalld防火墙转发
为什么要代理NFS?
NFS共享由于安全和网络等多种因素,无法直接提供对外访问,需通过代理服务器进行端口转发,以实现对外访问。
nginx需要什么模块才能支持四层代理?
--with-stream
环境网络架构是怎么样的?
代理服务器有2个网卡,一个网卡与NFS存储直连,另外一个网卡与NFS客户端相连接,代理服务器中部署nginx,通过nginx将nfs存储进行反向代理,对nfs客户端提供nfs访问接口。
------------------------- nfs 服务端安装 -------------------------------
1. nfs安装
yum install nfs-utils -y
2. 配置nfs
mkdir /data
cat <<EOF> /etc/exports
/data *(rw,insecure)
EOF
3.设置防火墙规则
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=2049/udp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --zone=public --add-port=20048/udp --permanent
firewall-cmd --reload
-------------------------- nginx代理服务器配置 --------------------------
1. yum安装nginx
cat <<EOF> /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
yum install nginx -y
2. 修改nginx配置文件
cat <<EOF>> /etc/nginx/nginx.conf
stream {
include /etc/nginx/nfs/*.conf;
}
EOF
#配置nfs 代理
mkdir /etc/nginx/nfs/
cat <<EOF> /etc/nginx/nfs/nfs.conf
upstream nfs {
server 192.168.0.102:111;
}
upstream rpc {
server 192.168.0.102:2049;
}
upstream mountd {
server 192.168.0.102:20048;
}
server {
listen 111 udp;
proxy_connect_timeout 5s;
proxy_timeout 300s;
proxy_pass nfs;
}
server {
listen 111;
proxy_connect_timeout 5s;
proxy_timeout 300s;
proxy_pass nfs;
}
server {
listen 2049 udp;
proxy_connect_timeout 5s;
proxy_timeout 300s;
proxy_pass rpc;
}
server {
listen 2049;
proxy_connect_timeout 5s;
proxy_timeout 300s;
proxy_pass rpc;
}
server {
listen 20048 udp;
proxy_connect_timeout 5s;
proxy_timeout 300s;
proxy_pass mountd;
}
server {
listen 20048;
proxy_connect_timeout 5s;
proxy_timeout 300s;
proxy_pass mountd;
}
EOF
参数说明:
192.168.0.102是NFS存储IP地址,可根据实际情况修改。通过tcp和udp两种协议监听111、2049、20048三个端口,将该3个端口的请求转发到NFS存储端的对应端口,实现NFS反向代理
3. 启动服务
systemctl enable nginx --now
systemctl status nginx
4. 检查端口监听
netstat -anp |grep nginx
firewalld转发NFS服务
systemctl enable firewalld --now
#配置转发规则
firewall-cmd --add-forward-port=port=111:proto=tcp:toport=111:toaddr=192.168.0.102 --zone=public --permanent
firewall-cmd --add-forward-port=port=111:proto=udp:toport=111:toaddr=192.168.0.102 --zone=public --permanent
firewall-cmd --add-forward-port=port=2049:proto=tcp:toport=2049:toaddr=192.168.0.102 --zone=public --permanent
firewall-cmd --add-forward-port=port=2049:proto=udp:toport=2049:toaddr=192.168.0.102 --zone=public --permanent
firewall-cmd --add-forward-port=port=20048:proto=tcp:toport=20048:toaddr=192.168.0.102 --zone=public --permanent
firewall-cmd --add-forward-port=port=20048:proto=udp:toport=20048:toaddr=192.168.0.102 --zone=public --permanent
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --add-port=111 --permanent
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=2049/udp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --zone=public --add-port=20048/udp --permanent
firewall-cmd --reload
参数说明:
192.168.0.102是NFS存储IP,根据实际情况进行替换即可。
NFS客户端访问
#查看nfs共享目录列表
showmount -e 192.168.1.254
#挂载nfs存储
mount -t nfs 192.168.1.254:/data /mnt/
#检查挂载
df -hT -t nfs
以上提供了两种方式让位于内网环境的NFS通过代理或者转发的方式,处于另一端的NFS可以访问。
代理服务器可以通过两种方法进行NFS端口转发,即通过nginx和firewalld。本环境因为只有1台NFS存储,所以两种方法都可以采用,如果后端有多台NFS存储,是集群模式的,那么建议使用nginx,因为nginx除反向代理外还有负载均衡能力。