複数のインターフェイスを備えた Linux サーバーがあります。各インターフェースには IP とネットワークがあります。また、ルーティング テーブルにはデフォルト ルートとその他のルートがあり、特定のネットワークへの接続がいずれかのインターフェイスを経由するようになっています。もちろん、サーバーのインターフェイスの 1 つと同じネットワーク内の IP に向かうプログラムによって開始された接続は、そのインターフェイスを経由します。
そのサーバー上のプログラムが接続しようとしているターゲット IP が与えられた場合: 使用されるローカル インターフェイスの IP アドレスを取得する API はありますか?
または、別の方法として、特定の 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 に正しいアドレスを入れたいからです。