端口转发:是指传统的目标地址映射,实现外网访问内网资源
流量转发命令语法为:
firewalld-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
环境准备:
- server1 192.168.20.3
- server2 192.168.20.4
- server3 192.168.20.5
-
(1)需求一:将 server1 192.168.20.3:6666 端口 转发 至 server2 192.168.20.4:22 端口
-
(2)需求二:将 server1 192.168.20.3:9999 端口 转发 至 server3 192.168.20.5:80 端口
-
(3)需求三:将 server1 192.168.20.3:8888 端口 转发 至 server1 192.168.20.3:80 端口
注意:(本地端口转发/映射)
原来,浏览器访问 http://192.168.20.5/ ,http 协议默认是 80 端口
现在,做端口转发,把 80 端口映射到 8888 端口
浏览器访问 http://192.168.20.5:8888/ 即可实现访问 80 端口同样的功能
无需放行 80、8888 端口,相当于把访问 80 端口的流量转发到 8888 端口上
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p1.1 开启防火墙 1.1.1 初始化防火墙
systemctl status firewalld systemctl enable firewalld systemctl restart firewalld systemctl status firewalld1.1.2 查看防火墙配置端口转发之前的状态
firewall-cmd --state firewall-cmd --list-all1.2 开启 IP 伪装
firewall-cmd --add-masquerade --zone=public --permanent firewall-cmd --reload1.3 添加端口转发
注意:
在 server-1 192.168.20.3 操作
将本地的 192.168.20.3:6666 端口 转发 至 192.168.20.4:22 端口
- 具体操作
firewall-cmd --list-all firewall-cmd --add-forward-port=port=6666:proto=tcp:toport=22:toaddr=192.168.20.4 --zone=public --permanent firewall-cmd --reload firewall-cmd --list-all
- 端口测试
原来,是用 ssh 连接 server-2 192.168.20.4 的 22 端口
ssh root@192.168.20.4
现在,通过 ssh 远程 server-1 192.168.20.3 的 6666 端口,连接 server-2 192.168.20.4
ssh -p 6666 root@192.168.20.3
所以,通过 Firewalld 防火墙可以实现内网服务器 ssh 远程 端口 转发
1.3.2 需求二(内网服务器之间端口转发)将本地 192.168.20.3:9999 端口 转发 至 192.168.20.5:80 端口
- 具体操作
firewall-cmd --list-all firewall-cmd --add-forward-port=port=9999:proto=tcp:toport=80:toaddr=192.168.20.5 --zone=public --permanent firewall-cmd --reload firewall-cmd --list-all
- 端口测试
原来,浏览器访问 server-3 192.168.20.5 的 80 端口
http://192.168.20.5/
配置端口转发后,浏览器访问 server-1 192.168.20.3 的 9999 端口
http://192.168.20.3:9999/
所以,通过 Firewalld 防火墙可以实现内网服务器 web 服务 端口 转发
1.3.3 需求三(本地服务器内部端口转发)将本地 192.168.20.3:8888 端口 转发 至 server-1 192.168.20.3:80 端口
- 具体操作
firewall-cmd --list-all firewall-cmd --add-forward-port=port=8888:proto=tcp:toport=80:toaddr=192.168.20.3 --zone=public --permanent firewall-cmd --reload firewall-cmd --list-all
由于是服务器内部,所以又可以简写一下
firewall-cmd --list-all firewall-cmd --add-forward-port=port=8888:proto=tcp:toport=80 --zone=public --permanent firewall-cmd --reload firewall-cmd --list-all
- 端口测试
原来,浏览器访问 server-3 192.168.20.3 的 80 端口
http://192.168.20.3/
配置端口转发后,浏览器访问 server-1 192.168.20.3 的 8888 端口
http://192.168.20.3:8888/
所以,通过 Firewalld 防火墙可以实现本地服务器 web 服务 端口 转发
1.4 删除端口转发firewall-cmd --list-all firewall-cmd --remove-forward-port=port=6666:proto=tcp:toport=22:toaddr=192.168.20.4 --zone=public --permanent firewall-cmd --reload firewall-cmd --list-all
firewall-cmd --list-all firewall-cmd --remove-forward-port=port=9999:proto=tcp:toport=80:toaddr=192.168.20.5 --zone=public --permanent firewall-cmd --reload firewall-cmd --list-all
firewall-cmd --list-all firewall-cmd --remove-forward-port=port=8888:proto=tcp:toport=80:toaddr=192.168.20.3 --zone=public --permanent firewall-cmd --reload firewall-cmd --list-all1.5 删除 IP 伪装
firewall-cmd --list-all firewall-cmd --remove-masquerade --zone=public --permanent firewall-cmd --reload firewall-cmd --list-all
至此,本文结束!你学会了没?
我们下期见,拜拜!