Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как организована сетевая модель в Linux? мониторинг пакетов, подмена адреса... 
V
    Опции темы
KaraKum
  Дата 28.7.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL WWW   Вверх
MAKCim
Дата 28.7.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



в одной локалке сервер и клиенты находятся?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
KaraKum
  Дата 29.7.2009, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Нет - сервер и клиент (комп с приложением a) находятся по разные стороны интернета. В одной локалке будут компы с приложениями a и b - то есть комп с приложением a должен будет передавать по локалке (дублировать) все пакеты компу с приложением b, получаемые от сервера через www. При этом эти пакеты должны "выглядеть" для приложения b так, якобы они предназначались именно для него (а не для приложения a - как в действительности).

Хотелось бы, помимо ответа, узнать литературу, описывающую вообще всю эту модель (организацию портов, пакетов и так далее) или хотя бы знать название этой "науки", чтобы знать с чего начать искать.
P.S. "raw sockets" - правильное направление поиска?.
PM MAIL WWW   Вверх
InvalidProperty
Дата 29.7.2009, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: 1
Всего: 9



Цитата(KaraKum @  29.7.2009,  00:01 Найти цитируемый пост)
P.S. "raw sockets" - правильное направление поиска?. 

нет.

читай литературу "Стивенс_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
PM MAIL ICQ Jabber   Вверх
KaraKum
  Дата 29.7.2009, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Цитата(InvalidProperty @ 29.7.2009,  09:32)
Кто будет инициировать работу с сервером? Приложение b? Оно якобы запрашивает соединения с сервером, а на самом деле траф идет через a или как?

Немного не так - соединяться с сервером должно приложение a. Комп, на котором запущено это приложение a, должен все пакеты, посылаемые сервером приложению a, дублировать на комп (уже по локальной сети) с приложением b, при этом приложение b должно "думать", что все эти дублированные пакеты предназначаются именно для него. То есть пакеты, посылаемые сервером приложению a, должны доходить И до a, И до b.

P.S. Программы скомпилированы не мною и исходников нету, поэтому вручную на сокетах продублировать пакеты нельзя.

Это сообщение отредактировал(а) KaraKum - 29.7.2009, 09:28
PM MAIL WWW   Вверх
Pointer
Дата 29.7.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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

PM MAIL   Вверх
KaraKum
  Дата 29.7.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Цитата(Pointer @ 29.7.2009,  10:56)
Попробуй iptables. Что-то типа такого.
iptables -t nat -A POSTROUTING -p tcp -d SERVER_ADR --dport PORT_A  -j SNAT --to-source IP_B

Спасибо за совет, но проблему "замены заголовка отправителя" это не решает.
Нашёл библиотеку libpcap (Инструкция использования библиотеки libpcap (Packet CAPture).) - похоже она решает проблему.

Это сообщение отредактировал(а) KaraKum - 29.7.2009, 11:07
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.2424 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.