Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Как привязать приложение к интерфейсу?

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Prophion

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Встала крайне интересная задача.
Есть компьютер с ОС Виндовс (обязательно), версия этой ОС не важна, выбирайте люблю. В компьютер входят, например, два внешних канала, тоже не важно каких, главное, что в системе есть интерфейсы, а у этих интерфейсов есть IP-адреса. А задача: заставить разные приложения использовать заданный интерфейс, так сказать, выполнить для приложения пре-процессуню маршрутизацию.
Всякие варианты с использованием виртуальных машин, интейфесы которых подвязываются к физическим интерфесам можно не предгалать, так же не интересуют варианты с использованием локальных, привязанных к заданому интернету, прокси-серверов.
Интересно решение, может быть утилита или мануал на API чего-нибудь в Винде, которое позволят забиндить сокет программы за указаный исходящий IP, дальше, вроде как, система должна и сама, основываясь на таблице маршрутизации, всё завершить.
Для "пингвинят" оговорюсь, мне извесно о том, что IPTABLES и routematk это умеют по UID. Так же я знаю, что всё в тех же *nix-вей системах можно использовать для этого переменную окружения LD_PRELOAD в которой указать приложение/библиотеку, которое будет осуществлять подмену connect() (для TCP) и sendto()/sendmsg() (для UDP). Интересно решение именно для Окон.
Поделитесь информацией, пожалуйста или соображениями по существу вопроса.

Всего записей: 142 | Зарегистр. 18-02-2006 | Отправлено: 14:10 07-09-2013 | Исправлено: Prophion, 14:14 07-09-2013
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Prophion  После того, как программа открыла socket, она может с помощью функции  bind привязать этот сокет к определенному интерфейсу.
Если bind выполняется с параметром INADDR_ANY, то сокет привязывается ко всем имеющимся интерфейсам.
В большинстве программ именно это и реализовано, ибо разработчики не имеют понятия о том, сколько и какие интерфейсы будут на компе, использующем эту программу.
Если пишешь программу сам, то можешь выбирать, к какому интерфейсу ее привязывать, в случае чужой разработки это весьма затруднительно.
Есть софт, позволяющий перехватывать и модифицировать вызовы WinSock, содержимое пакетов. Например Komodia Winsock LSP либо Komodia WFP
И еще момент. Виндоза не умеет Policy Based Routing. Поэтому она отправит пакет по дефолт маршруту или маршруту с лучшей метрикой невзирая на то, к какому интерфейсу был привязан сокет.

----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 15:58 07-09-2013
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Prophion Ставите  на машине c двумя каналами какой-либо сервер, умеющий SOCKS5, указываете ему конкретный выходной интерфейс. На машине клиента ставите клиента socks5 (например SocksCap или Freecap http://www.freecap.ru/?p=whatis   http://widecap.ru/ ) и в этом клиенте указываете какие прилоежние через него запускать.    


----------
В сортире лучше быть юзером, чем админом...

Всего записей: 11743 | Зарегистр. 10-12-2003 | Отправлено: 09:19 09-09-2013
Prophion

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ipmanyak
Я же вроде просил варианты с прокси-серверами не предлогать. Интересует программная "прослойка", которая могла бы "заворачивать" пакеты на заданный интерфейс.
 
vlary
Это если разрабатывать своё приложение, а как же быть продуктами сторонних издателей. Нужна какая-нибудь прослойка. Знаю, на Линуксе такое приложение есть - fixsrcip называетсяф (http://freecode.com/projects/fixsrcip), вполне адекватно работает и не затрагивает функций ядра. Интересно, есть ли такое же, или подобное ему приложение и под Виндовс?

Всего записей: 142 | Зарегистр. 18-02-2006 | Отправлено: 12:44 11-09-2013
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Prophion
Цитата:
Это если разрабатывать своё приложение, а как же быть продуктами сторонних издателей.
Так именно это и делают продукты Komodia .  
В папку с файлом программы кладется дээлэлка, которая перехватывает обращения к Winsock, и меняет их параметры.


----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 13:10 11-09-2013
Prophion

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vlary
Спасибо, видимо что-то я не прочёл. Попробую с использованием этих решений.

Всего записей: 142 | Зарегистр. 18-02-2006 | Отправлено: 13:42 11-09-2013
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Prophion Еще можешь посмотреть FreeCap

----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 14:37 11-09-2013
Prophion

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vlary
СвободнаяКпека - это же для прокси-сервера. Мне интересно без него.

Всего записей: 142 | Зарегистр. 18-02-2006 | Отправлено: 15:41 11-09-2013
FESSU

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Панацея
https://r1ch.net/projects/forcebindip

Всего записей: 35 | Зарегистр. 04-12-2005 | Отправлено: 23:39 02-02-2022
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Как привязать приложение к интерфейсу?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru