nftables dnat 转发无法正常工作

nftables dnat 转发无法正常工作

再会,

我目前正在从 iptables 迁移到 nftables。问题是我的 systemd 容器在 NAT 后面运行,但我想将 443 或 80 等端口转发给它们。当我使用以下命令集时没有错误消息,但当我使用 nftables 时我也无法访问我的 Web 服务器。

提前谢谢了。

致以最诚挚的问候,Felix

编辑:问题已通过有用的评论得到解决。谢谢!

答案1

感谢 Роман Иванов 提供的有用信息nft monitor

NAT 不起作用,因为我在过滤器转发的末尾使用了这个规则:

iifname wan0 reject

在链式 NAT 中你需要规则:

NAT => 预路由

nft add rule nat prerouting iifname wan0 tcp dport { 80, 443 } dnat 192.168.0.10  

在链式过滤器中你需要规则:

筛选 => 前进

nft add rule filter forward iifname wan0 oifname lan0 ip daddr 192.168.0.10 tcp dport { 80, 443 } accept

答案2

您可以采取以下一些步骤:

  1. 类型 nat hook 预路由优先级 0;<-根据 NF_IP_PRI_NAT_DST netfilter 常量应为 -100(减一百)
  2. 在预路由中使用“meta nftrace set 1”,并使用“nft monitor”调试数据包流
  3. 最简单的规则集,用于隔离问题并举例说明

我的 dnat 也不起作用。从一个 iface 上一切正常,但从另一个上不行。

数据包进入预路由,dnat 被接受但此后什么也没有发生。“Conntrac -E”看不到这些包。

相关内容