Linux下如何从特定接口发送UDP数据包?

Xav*_*tel 5 linux networking rust

我有多个具有 IPv4 链路本地地址的以太网接口,这意味着我有多个通往169.254.0.0/16不同接口的路由。(这些接口不一定位于同一个二层网络上,因此该范围内的相同IP可以被不同接口上的不同系统使用。)

当使用 Rust 的标准库将 UDP 数据包发送到地址时,169.254.0.0/16我无法选择使用哪个接口来发送数据包UdpSocket,但如果不指定接口,很可能会使用错误的接口。

如何从特定接口发送 UDP 数据包?

(IPv6 Link-Local也fe80::/64有类似的问题,但SocketAddrV6有一个scope_id可用于设置要使用的接口的索引)。

dor*_*ron 2

假设您知道哪个本地 IP 地址属于哪个网络,则可以使用bind将套接字绑定到该 IP 地址。