我有一个带有两个网络接口的系统,它们都连接到同一个默认网关。我想在两个接口上对从系统到同一目标 IP 的连接进行负载平衡,并使用每个接口的源 IP。我希望这个解决方案是通用的,适用于我们在系统中运行的任何程序。到目前为止,我观察到的是,Linux 维护一个小型路由缓存,因此一旦建立了前几个连接,就会锁定一条路由。因此,最初的几个连接分布在两个接口的源 IP 上,但最终会收敛到其中一个(我猜想在发生冲突的情况下,有一些逻辑可以锁定以决定哪条路由比其他路由更好)
只有在做出初始路由决策并选择源 IP 后,使用 iptables 才会影响数据包。有没有什么方法可以影响套接字的源 IP 选择,以便在多个接口之间进行负载平衡?
更新:我遇到了可以修改套接字属性的 eBPF,可以利用它来修改所有可用接口(环回接口除外)中循环使用的源地址吗?