The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"TCP/IP пакеты в UNIX"
Отправлено d187, 04-Дек-08 19:52 
Привет, всем!

Я программирую под unix совсем немного времени... Возникла проблема, решение которой, теперь я думаю под силу человеку, знающему функционирование обработки сетевых потоков.

Вот вкратце суть моей задачи. На узле А нужно ловить все пакеты, направленные в определенную сеть, отсекать эти пакеты и пересылать их на узел B. Т.е. на узле А нужно ловить нужные пакеты, инкапсулировать их в UDP пакеты и пересылать на узел B. А на узле B нужно "отпустить" этот пакет будто он сам пришел на узел В и дальше он идет обычными средствами туда, куда и направлялся.

Я использую ubuntu 10. Для перехвата пакетов использую iptalbes/libipq.
Инкапсулирую перехваченный пакет как он пришел (без его изменения). А потом на узле получив пакет, пытаюсь "положить" его на дальнейшую обработку. Для этого я использую библиотеку libnet.

1. Открываю сокет int libnet_open_raw_sock(int protocol);

2. Записываю полученный пакет int libnet_write_ip(int sock, u_char *packet, int len);

Wireshark перехватывает этот пакет. Т.е. вроде бы он записался нормально. Но система как будто НЕ ОБРАБАТЫВАЕТ эти пакеты. Пакеты в систему падают, wireshark их ловит, но система на них не реагирует.

Вот тут у меня и вопрос. Можно ли так делать? Я отправляю перехваченный пакет на узел B.
(т.е. я отправляю m->payload, где m - это объект ipq_packet_msg_t). А на узле B просто записываю в raw_sock эти данные. Сколько байт получил на узле А, столько же и записал в raw_sock на узле B.

Есть тут какие-нибудь противоречия? Почему система их не обрабатывает?
Я решил, что система не обрабатывает эти пакеты, потому что я на узле А перехватываю ICMP пакеты пинга узла B, передаю эти пакеты в инкапсулированном виде на узел В. На узле B вторая программа ожидает эти пакеты, "разворачивает" их из UDP и "отпускает" на обработку путем записи в raw_sock. Но пинги назад не возвращаются!! Хотя wireshark перехватил пакет, который пришел в систему с пингом...

Очень надеюсь на вашу помощь!
Спасибо!

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру