如何在 Fedora 19 路由器上使用 Firewalld 允许转发

如何在 Fedora 19 路由器上使用 Firewalld 允许转发

我刚刚安装了 Fedora 19,并且使用 firewalld 而不是 iptables,但我很难解释新的术语。

我有 2 个 NIC。在 ifcfg-* 文件中,一个指定 ZONE="internal",另一个指定为 "external",我在 /etc/sysctl.conf 中设置了 ipv4.forwarding = 1,然后运行了firewall-cmd --zone=external --add-masquerade

但是,当我尝试从内部网络上的任何机器进行路由时,我得到了“目标主机被禁止”的信息,当然,如果我禁用防火墙,错误就会消失,但我就会失去伪装。

在 iptables 中有一个名为 FORWARD 的规则集,但在firewalld 中我只能找到 --add-port-forward,这不是一回事。

如何在firewalld中允许路由?

...我取得了一些进展...

#firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens4 -o eth1 -j ACCEPT

允许路由,但不是持久的,并且不允许 --permanent 选项。如何让它在重启后持久?

答案1

最后,我找到了答案......

# cat /etc/firewalld/direct.xml
<?xml version="1.0" encoding="utf-8"?>
<direct>
   [ <rule ipv="ipv4" table="filter" chain="FORWARD_direct" priority="0"> -i eth0 -o eth1 -j ACCEPT </rule> ]
</direct>

该功能出现在firewalld-0.3.4-1.fc19中,但目前尚不支持firewall-cmd,手册页也被省略了,但它确实有效

最终在以下邮件列表中找到了它 http://www.spinics.net/linux/fedora/fedora-security/msg01688.html

答案2

从 Fedora25 开始,可以使用 Firewalld Rich Rules 解决这个问题。Firewalld Rich Rules 类似于 iptables DSL,但灵活性更高。

它们也遵循与 iptables 类似的链式操作。更多详细信息请参见此处:- https://fedoraproject.org/wiki/Features/FirewalldRichLanguage#firewalld_Rich_Language

相关内容