Как отправить пакет UDP с определенного интерфейса под Linux? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть несколько интерфейсов Ethernet с локальными адресами IPv4, что означает, что у меня есть несколько маршрутов к 169.254.0.0/16 на разных интерфейсах.(Эти интерфейсы не обязательно находятся в одной сети уровня 2, поэтому один и тот же IP-адрес в этом диапазоне может использоваться разными системами на разных интерфейсах.)

При отправке пакета UDP на адрес в 169.254.0.0/16 Iне могу выбрать, какой интерфейс будет использоваться для отправки пакета, используя стандартную библиотеку Rust UdpSocket, но без указания интерфейса очень вероятно, что он будет использовать неправильный.

Как я могу отправить пакет UDP изконкретный интерфейс?

(IPv6 Link-Local fe80::/64 имеет аналогичную проблему, но SocketAddrV6 имеет scope_id, который можно использовать для установки индекса используемого интерфейса).

1 Ответ

0 голосов
/ 19 мая 2018

Если вы знаете, какой локальный IP-адрес принадлежит какой сети, вы можете использовать bind для привязки сокета к этому IP-адресу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...