让内核选择不同的 IP 地址作为其源

让内核选择不同的 IP 地址作为其源

我正在使用 quagga 运行 ubuntu 路由器。路由器有许多虚拟接口,每个接口都连接到不同的上游合作伙伴。其中一个虚拟接口连接到 IX。从 IX 分配的 IP 不会全局路由,仅用于与此 IX 的对等合作伙伴进行通信(但它是公共 IP,而不是私有 IP)。

问题是,路由器上运行的程序似乎根据目标 IP 获取其源 IP。因此,例如mtr 50.31.164.145使用我们 IX 分配的 IP 作为其源,因此不起作用。我知道在使用 mtr 时可以指定源 IP mtr --address X.X.X.X 50.31.164.145,但有很多程序不提供此选项。

有没有什么方法可以普遍拒绝某个接口/ip 的(自动)使用,以便 IX 分配的 IP 永远不会被自动使用?

答案1

当数据包离开具有此接口 IP 地址的系统时,我将尝试使用 SNAT 目标的 iptables 将源 IP 更改为另一个 IP。

sudo iptables -t nat -A POSTROUTING -s 10.20.20.20 -j SNAT --to-source 10.30.30.30

相关内容