将 IPTables 规则转换为 Firewalld 规则以进行重定向

将 IPTables 规则转换为 Firewalld 规则以进行重定向

我不太熟悉网络方面的东西,并且很难理解防火墙的工作原理。

我正在开发一个 REST 服务,实际上是在监听端口 8080,我希望能够在端口 80 上发送请求,然后将其重定向到 8080。

为了在 CentOS 6 上做到这一点,我使用了 iptables 和这样的规则:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

我迁移到了 CentOS 7,即使 iptables 仍然存在并且仍然有效,但事实上,firewalld 是默认的防火墙软件,这让我认为我应该开始使用该软件...事实上,我无法理解它是如何工作的,以及如何将我的单个 iptables 规则转换为防火墙规则。我知道防火墙“理解”iptables 规则(事实上,我正在将此规则与防火墙一起使用以继续工作),但我想知道怎么做,我也想使此规则永久生效。

谢谢

答案1

用于--add-forward-port设置端口转发。

firewall-cmd手册页中:

       --add-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]]
       [--timeout=timeval]
           Add the IPv4 forward port for zone. If zone is omitted, default
           zone will be used. This option can be specified multiple times. If
           a timeout is supplied, the rule will be active for the specified
           amount of time and will be removed automatically afterwards.
           timeval is either a number (of seconds) or number followed by one
           of characters s (seconds), m (minutes), h (hours), for example 20m
           or 1h.

           The port can either be a single port number portid or a port range
           portid-portid. The protocol can either be tcp, udp, sctp or dccp.
           The destination address is a simple IP address.

因此你可以这样做:

firewall-cmd --zone=whatever --add-forward-port=port=80:proto=tcp:toport=8080

如果它达到了你想要的效果,使其永久化

答案2

iptables 是默认的防火墙工具,您可以在所有 Linux 版本下找到它。firewalld 是一个方便的工具,因此用户可以在不知情的情况下与“iptables 规则”进行交互。使用firewall-cmd ...命令似乎非常简单,因为您可以动态选择预定义的区域和服务(它们会自动转换为特定端口)。您可以重新加载firewalld.service,而无需重新启动或任何不便。

您仍然可以在 CentOS7 上使用 iptables,但您必须禁用firewalld(并更好地屏蔽它):

systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld

安装 iptables-services 和 iptables-utils:

yum install -y iptables-services iptables-utils

现在您可以在 CentOS7 上使用 iptables

如果您需要保存配置以便在重启后继续使用:

iptables-save >/etc/sysconfig/iptables

如果你想改变你的 iptables 规则的顺序,你可以编辑它们的文件(例如 /your_file),然后:

iptables-restore </your_file

并恢复规则。

希望对你有帮助

相关内容