更新

更新

我需要设置防火墙配置规则,以便发送到特定目标地址的特定端口的任何请求都会(透明地发送到连接应用程序)重定向到同一台计算机上的特定端口。我知道这个iptables命令,并且我之前已经将其设置为与其他系统上的 FirewallD 一起使用。

麻烦的是,这次我需要在 OpenSuse (Leap) 上进行设置。我能够运行我的iptables命令并验证该命令是否有效。当然,问题是该设置不是持久的,并且在重新启动后会丢失。

我了解到 OpenSuse 使用名为 的东西,并且它允许通过将自定义规则添加到某些函数内的文件中来SuseFirewall2设置自定义规则。我已经尝试过,但似乎没有任何效果。我还确保和中的设置都设置为.iptables/etc/sysconfig/scripts/SuSEfirewall2-customFW_CUSTOMRULES/etc/sysconfig/SuSEfirewall2/sbin/SuSEfirewall2/etc/sysconfig/scripts/SuSEfirewall2-custom

我在网上没有找到太多有用的信息,并且不确定如何解决此问题。我是否缺少一些明显的东西?也欢迎任何关于我应该尝试什么的建议。

理想情况下,我想在SuseFirewall2设置中解决这个问题,而不是将其完全丢弃并用纯iptables脚本替换。

答案1

更新

我错过了这个关键细节 - 你想重定向到同一台机器SuSEFirewall2 并不真正支持这一点

因此,您要么创建一个别名接口,然后从真实接口重定向到别名;或者将现有iptables规则放入适当的脚本中。

这可能/etc/sysconfig/network/scripts/firewall位于“net-reconfig-done”部分:

           net-reconfig-done)
                    [ "$FIREWALL" = 'yes' ] || exit 2
                    sfw2_active || exit 3
                    /sbin/SuSEfirewall2 --bootunlock start

                    /usr/sbin/iptables ...YOUR_RULES...

但您可能会面临在下次升级时被覆盖的风险。或者您在 init.d 中准备一个自定义可执行启动脚本(您可以从现有脚本之一复制),假设您处于运行级别 5

# runlevel
5

然后您将使用 rc5.d 并在中创建脚本

/etc/init.d/rc5.d/S55Redirector

该脚本的关键部分是:

case "$1" in
    start)
        echo -n "Applying redirect rules"
        /usr/sbin/iptables ...YOUR_RULES...
        /usr/sbin/iptables ...YOUR_RULES...
        /usr/sbin/iptables ...YOUR_RULES...
        rc_status -v
        ;;

旧答案

确保其正常工作的最快方法是从 进行设置yast

从根外壳:

yast

从左侧菜单中选择“安全”;从右边的“防火墙”开始。 在此输入图像描述

在“允许的服务”中,添加您需要接受的服务。

在此输入图像描述

根据具体的 SuSE 版本,转到“Masquerading”。在那里您应该能够指定目标主机以及目标端口。

幸运的是,我唯一的 LEAP 机器和我唯一的另一台 LEAP 机器在家里,目前已关闭,而另一台机器没有防火墙,因此我无法验证或提供第三个屏幕截图。

我怀疑您的自定义规则是正确的,但忘记允许配置文件中的传入数据包(它应该进入/etc/sysconfig/SuSEfirewall2.d/services)。如果还是不行,可以回复我([电子邮件受保护])周四之后我就会回家。

相关内容