配置目标 NAT nftables 整个子网

配置目标 NAT nftables 整个子网

基本上我需要的是将发往一个子网的所有数据包更改为另一个子网

我需要这个,因为我的路由器有 2 个 VPN,它们都使用相同的 IP 范围 [不受我控制]

这是我当前的配置,但它不起作用,数据包的目的地没有改变

table inet nat {
    chain prerouting {
        type nat hook prerouting priority dstnat; policy accept;

        ip daddr 192.168.5.0/24 dnat to 192.168.1.0/24
    }
}

我的主要目标是将带有目的地的数据包192.168.5.0转发wg1192.168.1.0wg0

答案1

在当前版本中,使用“ip prefix map”:

ip daddr … dnat ip prefix to ip daddr map { 192.168.5.0/24 : 192.168.1.0/24 }

在旧版本中,使用按位运算:

ip daddr … dnat to ip addr & 0.0.0.255 | 192.168.1.0

然而,DNAT 还不够,因为正如链名所暗示的那样,重写是在做出路由决策之前完成的。一旦系统开始路由,它仍然有两个冲突的 192.168.1.0/24 接口。

我认为你需要另外设置包裹标记在应用 NAT(例如在链中raw)之前在 192.168.5.0/24 上,然后使用策略路由通过ip rule为第二个 VPN(wg1)选择整个不同的路由表。

相关内容