![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Доброе время суток.
Опишу задачу: Есть сервер и два приложения (a и b), запущенные на разных компах. Приложение a подключено к серверу, приложение b нет. Нужно все пакеты, отправляемые из сервера приложению a, продублировать (отправить повторно) от компа, на котором запущено приложение a, компу, на котором запущено приложение b. То есть для приложения b создать иллюзию того, что с ним общается сервер (но на самом деле сервер общается с приложением a). Как можно это осуществить (в Linuxe, соответственно)? Приложения на основе сокетов писал, но они здесь, как я понял, не помогут. P.S. Вообще хотелось бы найти литературу по поводу организации этой сетевой модели в Linux'e. Узнать как можно сканировать входящие и исходящие пакеты?. Как можно установить определённый адрес получателя (отправителя) или как вообще вручную (без сокетов) формировать пакеты? Это сообщение отредактировал(а) KaraKum - 28.7.2009, 16:44 |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
в одной локалке сервер и клиенты находятся?
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Нет - сервер и клиент (комп с приложением a) находятся по разные стороны интернета. В одной локалке будут компы с приложениями a и b - то есть комп с приложением a должен будет передавать по локалке (дублировать) все пакеты компу с приложением b, получаемые от сервера через www. При этом эти пакеты должны "выглядеть" для приложения b так, якобы они предназначались именно для него (а не для приложения a - как в действительности).
Хотелось бы, помимо ответа, узнать литературу, описывающую вообще всю эту модель (организацию портов, пакетов и так далее) или хотя бы знать название этой "науки", чтобы знать с чего начать искать. P.S. "raw sockets" - правильное направление поиска?. |
|||
|
||||
InvalidProperty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: 1 Всего: 9 |
нет. читай литературу "Стивенс_UNIX_Разработка сетевых приложений". Ее легко можно найти в сети - классная книга. Кто будет инициировать работу с сервером? Приложение b? Оно якобы запрашивает соединения с сервером, а на самом деле траф идет через a или как? Если так, то почему бы просто порт на a не прокинуть к серверу? -------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Немного не так - соединяться с сервером должно приложение a. Комп, на котором запущено это приложение a, должен все пакеты, посылаемые сервером приложению a, дублировать на комп (уже по локальной сети) с приложением b, при этом приложение b должно "думать", что все эти дублированные пакеты предназначаются именно для него. То есть пакеты, посылаемые сервером приложению a, должны доходить И до a, И до b. P.S. Программы скомпилированы не мною и исходников нету, поэтому вручную на сокетах продублировать пакеты нельзя. Это сообщение отредактировал(а) KaraKum - 29.7.2009, 09:28 |
|||
|
||||
Pointer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 24.6.2008 Где: Cheboksary Репутация: 1 Всего: 1 |
Попробуй iptables. Что-то типа такого.
iptables -t nat -A POSTROUTING -p tcp -d SERVER_ADR --dport PORT_A -j SNAT --to-source IP_B |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Спасибо за совет, но проблему "замены заголовка отправителя" это не решает. Нашёл библиотеку libpcap (Инструкция использования библиотеки libpcap (Packet CAPture).) - похоже она решает проблему. Это сообщение отредактировал(а) KaraKum - 29.7.2009, 11:07 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |