Firewalld DNAT 子网转换

Firewalld DNAT 子网转换

我想使用firewalld 转换子网。

我有一个以太网接口,它应该转换针对的传入数据包 192.168.1.0/24 to 192.168.178.0/24

我的家庭网络是192.168.8.0/24

我基本上想添加一条像这样的 rhich 规则(cmd 不起作用!):

firewall-cmd --zone=myzone --add-rich-rule 'rule netmap any from="192.168.8.0/24" to="192.168.178.0/24" with dst="192.168.1.0/24'

完成此规则缺少哪个部分?我查看了防火墙文档,但什么也没找到。

答案1

我认为甚至没有办法在防火墙中执行单地址对 DNAT(除了滥用指令forward-port)。我发现实现你想要的唯一半官方方法是--direct

firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -s 192.168.8.0/24 -d 192.168.1.0/24 -j NETMAP --to 192.168.178.0/24

它不仅--direct被认为已被弃用,甚至不使用 nftables(如其他的防火墙部分)作为后端。它实际上只是一个毫无意义的包装器iptables

您还可以通过某种方式“侧载”额外的 nftables 表:

table ip meh {
    chain netmap {
        type nat hook prerouting priority dstnat; policy accept;
        ip saddr 192.168.8.0/24 ip daddr 192.168.1.0/24 dnat to ip daddr & 255.255.178.255 | 0.0.178.0
    }
}

PS 坦白说,在我看来,firewalld 很烂。对我来说,它只是破坏了 nftables 的灵活性,而没有让任何东西变得更简单/更容易/更易理解(也就是说,没有任何作用)。

相关内容