我有一个 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
将从更改filter
为route
- 似乎可以解决这个问题。