LINUX.ORG.RU
ФорумAdmin

Сетевые интерфейсы, как настроить?


0

0

Есть, допустим, два интерфейса (или больше интерфейсов, в моем случае ppp0, ppp1 и т.д.), и есть две программы (или больше), которые посылают udp пакеты на один и тот же ip и port, но через разные интерфейсы (каждая программа через свой интерфейс, программе известен ip адрес интерфейса и ip gateway'я). Как настроить (route?) это все так, что бы оно работало, т.е. каждая программа работала через свой определенный интерфейс?

Был бы благодарен за советы, которые помогли бы решить этот вопрос.

anonymous

а ты уверен, что тебе это надо? как-то надуманно выглядит: можнно узнать, для чего так?

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

Ну по-другому не знаю как это сделать. Я когда-то писал WDP/WTP/WSP/MMS (мда:-) стэк, для посылки MMS сообщений через gsm модем/телефон поддерживающий gprs, в этом случая UDP заменяет WDP, и все вышестоящие протоколы икапсулируются в udp. Все работало хорошо, когда был только один модем. Сейчас их 5. 4 из них работают от одного оператора, соотв. у них один wap gw, поэтому когда программа создает gprs соединение, посредством ppp оператор выделяет модемам ip адреса, но wap gw (через который и подключаются к MMSC, т.к. только так оператор может определить от кого идет MMS) доступен только через gateway, который указывает оператор так же во время ppp соединения, которые тоже отличаются. Получается, что udp пакеты идут к одному и тому же ip (wap gw ip), но они должны идти через определенные интерфейсы, и ответы соответственно тоже должны приходить через определенные интерфейсы. Т.к. gprs соединения появляются (когда нужно выслать ммс), и исчезают (когда оно отослано) (это автоматизированная система оповещений), мне просто необходимо четко указывать, что эти пакеты идут через этот интерфейс, и ответы на эти пакеты я тоже жду с этого интерфейса. Вот собственно и все :-) Google мне нашел несколько ссылок на конференции иностранных коллег, где говорилось о setsockopt и флаге SO_BINDTODEVICE, что привязывает сокет к интерфесу, т.е. просто буквально то, что мне нужно. Но у меня не получилось этого сделать, функция возвращает ошибку :-/ Я думаю это можно решить и просто надлежащим образом редактируя таблицы маршрутизации ядра, но я в этом не силен... поэтому и спрашиваю.

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