我正在使用 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