nftables,输出链中的 dnat 似乎是在路由之后完成的

nftables,输出链中的 dnat 似乎是在路由之后完成的

我有一个 EC2 实例和一个需要从实例内部发送到 EIP 的应用程序。

我正在尝试在输出链上配置 dnat,以便数据包不会传出到互联网并返回。

我已尝试以下操作:

nft add table ip table
nft add chain table output '{ type filter hook output priority raw; policy accept; }'
nft add rule tgw-routing output oif "ens7" ip daddr "A.A.A.A" ip daddr set "B.B.B.B" accept

其中 AAAA 是 EIP 地址,BBBB 是 EC2 实例上的私有地址。

如果我进行数据包跟踪,我可以看到转换已经发生,但它被发送到默认网关的 MAC,就好像转换是在其路由决策之后发生的一样。

为了获得更多背景信息,我尝试复制此 iptables 规则:

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DNAT       all  --  anywhere             A.A.A.A  to:B.B.B.B

它按照我想要的方式工作,但是我被告知不能使用 iptables,所以需要一个 nftables 解决方案。

答案1

chain type将从更改filterroute- 似乎可以解决这个问题。

相关内容