透明桥:使用 nftables 可以实现 nat 吗?

透明桥:使用 nftables 可以实现 nat 吗?

我在一张卡上配置了两个 10gb NIC(eth1、eth2),将其配置为桥接器(br0),PC(装有 ubuntu 22.04)自己的 nic(eth0)仅用于访问它。我正在使用 nftables 将其设置为透明桥接器,以过滤不需要的数据包,效果很好(我也刚学)。

我也需要进行端口转发。例如:

chain nat {
                type nat hook prerouting priority -199; policy accept;
                meta nftrace set 1
                iif eth1 ip daddr a.b.c.d tcp dport x counter dnat to e.f.g.h:y
        }

我知道它不是网桥内的网络标准,网桥 nat 是关于修改目标 mac 的。我读到 nft 目前没有网桥 l3 ip 功能。

无论如何,我想问的是是否有任何解决方法,最好使用 nft 的两步操作。最后,如果 nft 无法实现,我可以使用 xdp/bpf 或其他东西来做吗?我不喜欢这样,因为要为每个新/修改条目编译 c 代码,这会带来许多其他复杂情况。

预先感谢

我尝试了如下在网上找到的方法:

table inet try1 {
        chain nat {
                type nat hook prerouting priority -199; policy accept;
                meta nftrace set 1
                ip daddr 10.100.10.9 tcp dport 50080 counter dnat to 10.100.10.10:80
        }
}

table bridge firewall {
        chain prer {
                type filter hook prerouting priority -300;
                meta nftrace set 1
                iif eth1 ip daddr 10.100.10.9 tcp dport 50080 meta pkttype set host ether daddr set bridge MAC counter
        }
        chain input {
                type filter hook input priority 0; policy accept;
        }

其中桥接 mac 与 mac 的 eth1、eth2 不同(由我更改)。

还需要接受桥梁输入。

inet 表 nat 已触发,但我不知道这些数据包去了哪里。我再也找不到它们了。当然,数据包并没有像我需要的那样从 eth2 出去(我不需要改变它们的方向,但通常是 eth1 <--> eth2)。我认为上述方法是在多端口桥中更改输出,而不是这种情况

相关内容