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

0 背景

业务应用系统的web容器无法更改IP地址,例如临时SSH端口,但是不想修改SSH配置;例如某些服务web服务需要通过公共IP进行统一访问;例如外网访问内网资源等;例如快速调整web容器的端口而不需要更改服务的任何配置等。

流量转发命令语法为:

firewalld-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>

1.开启防火墙

  • 初始化防火墙

systemctl status firewalld

systemctl enable firewalld

systemctl restart firewalld

systemctl status firewalld

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

firewall-cmd --state

firewall-cmd --list-all

  • ipv4 端口转发

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

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

sysctl -p

  • 开启 IP 伪装

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

firewall-cmd --reload

2.内网服务器端口转发

将 server1 10.10.7.1:111 端口 转发 至 server2 10.10.7.2:222端口

操作命令如下:

# firewall-cmd --list-all

# firewall-cmd -add-forward-port=port=111:proto=tcp:toport=222:toaddr=10.10.7.2 --zone=public --permanent

# firewall-cmd --reload

# firewall-cmd --list-all

3. 本地服务器内部端口转发

将server-1 10.10.7.1:8443端口 转发 至 server-1 10.10.7.1:443

操作命令如下:

# firewall-cmd --list-all

# firewall-cmd --add-forward-port=port=8443:proto=tcp:toport=443 --zone=public --permanent

# firewall-cmd --reload

# firewall-cmd --list-all

执行成功前,原来的浏览器地址是:https://10.10.7.1

执行成功后,新的浏览器地址是:https://10.10.7.1/accounts/login/ 和https://10.10.7.1:8433/accounts/login/

有些情况是需要加上URL后缀地址,才能访问,直接访问IP:PORT会显示禁止访问或者403等。

特殊情况说明

通过以上方法firewall-cmd配置本地端口转发,例如将server-1 10.10.7.1:8443 端口转发至 server-1 10.10.7.1:443 ,在其他机器使用浏览器或者使用curl或者wget是正常的。但是在本地服务器使用curl或者wget就是提示failed: Connection refused.

为了解决这个问题,因为firewall-cmd-not-allowing-loopback-redirect,故需要执行这个命令:

# firewall-cmd --permanent --direct --add-rule ipv4 nat OUTPUT 0 -p tcp -o lo --dport 8443 -j REDIRECT --to-ports 443

# firewall-cmd --reload

# firewall-cmd --list-all

 这时候,我们看到规则没有很大变化,但是我们在本地机器执行curl或者wget已经正常显示了。

参考文章:1445918 – firewalld does not allow port forwarding on localhost

4. 删除端口转发

# firewall-cmd --list-all

移除 将本地端口8443 转发 本地端口80

# firewall-cmd --remove-forward-port=port=8443:proto=tcp:toport=443--zone=public --permanent

移除 将本地端口1111 转发10.10.7.2 的222端口

# firewall-cmd -remove-forward-port=port=111:proto=tcp:toport=222:toaddr=10.10.7.2 --zone=public --permanent

# firewall-cmd --reload

# firewall-cmd --list-all

5. 删除 IP 伪装

firewall-cmd --list-all

firewall-cmd --remove-masquerade --zone=public --permanent

firewall-cmd --reload

firewall-cmd --list-all

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值