LINUX.ORG.RU

Отправить/получить UDP пакет на каком-то конкретном интерфейсе при полностью одинаковых настройках

 , , ,


0

2

Ситуация совершенно гипотетическая. Допустим, есть два интерфейса eth0 и eth1 с полностью аналогичными сетевыми настройками, т.е. и там и там адрес 192.168.0.1, и там и там подсеть та же, даже мак адрес совпадает.
Во-первых, как это вообще настроить?

Во-вторых, допустим я хочу получать UDP пакет с конкретно eth0 интерфейса, в berkeley sockets я не вижу, как это можно было бы сделать. Функция recvfrom() и sendto() принимает структуру struct sockaddr_in в которой sin_addr указывает ip хоста, а конкретный интерфейс указать нельзя! С этим что-то можно сделать? Или только TCP/IP стек в ядре патчить?

★★★★★
Ситуация совершенно гипотетическая. Допустим, есть два интерфейса eth0 и eth1 с полностью аналогичными сетевыми настройками, т.е. и там и там адрес 192.168.0.1, и там и там подсеть та же, даже мак адрес совпадает.
Во-первых, как это вообще настроить?

надо тестить и смотреть

Во-вторых, допустим я хочу получать UDP пакет с конкретно eth0 интерфейса, в berkeley sockets я не вижу, как это можно было бы сделать. Функция recvfrom() и sendto() принимает структуру struct sockaddr_in в которой sin_addr указывает ip хоста, а конкретный интерфейс указать нельзя! С этим что-то можно сделать? Или только TCP/IP стек в ядре патчить?

предварительно сделать bind() на этот интерфейс

Harald ★★★★★
()
Ответ на: комментарий от Harald

предварительно сделать bind() на этот интерфейс

Походу да, через setsockopt() с SO_BINDTODEVICE можно привязку к интерфейсу сделать. Спасибо

SZT ★★★★★
() автор топика

Скорее всего такая конструкция заработает, но что ты поймаешь я не знаю. Насколько я помню таблица роутинга не оперирует понятием интерфейса и приязывает ip к маку напрямую. Как там ARP будет себя вести хз.

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

Я думаю, там предполагается что обратно пакет придёт с того же интерфкйса т.к на другом интерфейсе его некому отправить

mittorn ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.