Linux 服务器 Firewalld 防火墙配置端口转发

端口转发:是指传统的目标地址映射,实现外网访问内网资源

流量转发命令语法为:

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. 端口转发需求实战

  • (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 端口上

1.0 系统配置文件开启 ipv4 端口转发

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

1.1 开启防火墙

1.1.1 初始化防火墙

systemctl status firewalld
systemctl enable firewalld
systemctl restart firewalld
systemctl status firewalld

1.1.2 查看防火墙配置端口转发之前的状态

firewall-cmd --state
firewall-cmd --list-all

1.2 开启 IP 伪装

firewall-cmd --add-masquerade --zone=public --permanent
firewall-cmd --reload

1.3 添加端口转发

注意:
在 server-1 192.168.20.3 操作

1.3.1 需求一(内网服务器之间端口转发)

将本地的 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-all

1.5 删除 IP 伪装

firewall-cmd --list-all
firewall-cmd --remove-masquerade --zone=public --permanent
firewall-cmd --reload
firewall-cmd --list-all

至此,本文结束!你学会了没?

我们下期见,拜拜!