有时需要将内部的NFS服务器供外部客户端访问,但NFS的目录不能再共享,因此考虑通过端口转发来穿透内网。
这里用防火墙来实现。
1、启用地址伪装
firewall-cmd --permanent --add-masquerad
2、转发固定端口
firewall-cmd --permanent --zone=public --add-forward-port=port=111:proto=tcp:toaddr=X.X.X.X:toport=111
firewall-cmd --permanent --zone=public --add-forward-port=port=111:proto=udp:toaddr=X.X.X.X:toport=111
firewall-cmd --permanent --zone=public --add-forward-port=port=2049:proto=tcp:toaddr=X.X.X.X:toport=2049
firewall-cmd --permanent --zone=public --add-forward-port=port=2049:proto=udp:toaddr=X.X.X.X:toport=2049
firewall-cmd --permanent --zone=public --add-port=111/tcp
firewall-cmd --permanent --zone=public --add-port=111/udp
firewall-cmd --permanent --zone=public --add-port=2049/tcp
firewall-cmd --permanent --zone=public --add-port=2049/udp
3、转发RPC端口
由于RPC端口是随机分配的,服务器需要改配置固定端口。
客户端可通过命令查询:
rpcinfo -p X.X.X.X
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
90000001 1 tcp 6007
90000001 1 udp 6007
100024 1 udp 2051 status
100024 1 tcp 2051 status
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 4 udp 2052 nlockmgr
100021 4 tcp 2052 nlockmgr
100005 1 udp 2050 mountd
100005 1 tcp 2050 mountd
100005 2 udp 2050 mountd
100005 2 tcp 2050 mountd
100005 3 udp 2050 mountd
100005 3 tcp 2050 mountd
将涉及到的端口都转发即可
firewall-cmd --permanent --zone=public --add-forward-port=port=2050:proto=tcp:toaddr=X.X.X.X:toport=2050
firewall-cmd --permanent --zone=public --add-forward-port=port=2050:proto=udp:toaddr=X.X.X.X:toport=2050
firewall-cmd --permanent --zone=public --add-forward-port=port=2051:proto=tcp:toaddr=X.X.X.X:toport=2051
firewall-cmd --permanent --zone=public --add-forward-port=port=2051:proto=udp:toaddr=X.X.X.X:toport=2051
firewall-cmd --permanent --zone=public --add-port=2050/tcp
firewall-cmd --permanent --zone=public --add-port=2050/udp
firewall-cmd --permanent --zone=public --add-port=2051/tcp
firewall-cmd --permanent --zone=public --add-port=2051/udp