基本上我需要的是将发往一个子网的所有数据包更改为另一个子网
我需要这个,因为我的路由器有 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
转发wg1
到192.168.1.0
wg0
答案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)选择整个不同的路由表。