我有一个具有多个接口的 Linux 服务器。每个接口都有一个 IP 和网络。路由表中还有一条默认路由和其他路由,以便与某些网络的连接通过一个或另一个接口。当然,任何程序发起的连接到与服务器接口之一位于同一网络中的 IP 将通过该接口。
给定该服务器上的程序将连接到的目标 IP:是否有 API 来检索将使用的本地接口的 IP 地址?
或者:一旦刚刚启动到某个 IP 的连接,我如何才能准确地获得最合适的服务器的本地 IP 地址?可以吗?
我不想再写路由逻辑了。
示例:eth0:192.168.1.10/24 eth1:10.1.1.20/24 默认gw:192.168.1.1 附加静态路由:通过10.1.1.1 到10.2.0.0/16
现在,如果程序启动到 1.2.3.4 的 UDP 连接,它将使用 eth0,而我要查询的适当 IP 将是 192.168.10。现在,如果程序启动到 10.2.55.66 的 UDP 连接,它将使用 eth1,而我要查询的适当 IP 将是 10.1.1.20。现在,如果程序启动到 10.1.1.9 的 UDP 连接,它将使用 eth1,而我要查询的适当 IP 将是 10.1.1.20。
这个问题的原因是我想修改snmp-trap发送程序,把正确的地址放在agentField