The OpenNET Project / Index page

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



"Дублирование пакетов;"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (Linux iptables, ipchains)
Изначальное сообщение [ Отслеживать ]

"Дублирование пакетов;"  +/
Сообщение от cement (?), 23-Июл-20, 15:04 
Всем привет!

Необходимо организовать дублирование пакетов.
Суть в чем.
Ранее было собрано решение (на nc) для приема трафика (хост: 10.10.10.2); (все норм)
Решил обновиться, и в сети появился новый хост: 10.10.10.3, который принимает трафик, который ранее принимался 10.10.10.2 (отредактировано правило переадресации на маршрутизаторе).

На пожарный случай, хочу продолжать получать тот же трафик по старой схеме. (т.е. чтобы трафик отправленный на 10.10.10.3 дублировался и на 10.10.10.2);


на новом хосте (10.10.10.3) создал правило:


iptables -A PREROUTING -d 10.10.10.3/32 -p tcp --dport 9999 -j TEE --gateway 10.10.10.2

По факту, на старый хост трафик дублируется, но в пакете не меняется dst_host.
На 10.10.10.2 tcpdump-ом вижу что влетает трафик для 10.10.10.3, и логично, он не обрабатывается тем механизмом, которым мне надо.

Подскажите пожалуйста, чего не хватает чтобы продублированный трафик влетел на старый хост с его значением dst_host?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от ACCA (ok), 23-Июл-20, 22:44   +1 +/
Осталось догадаться, каким механизмом тебе надо.

И ещё что про тебя и твой механизм думает TCP. То есть на .3 приходит "SYN", а после этого .3 и .2 два раза ответят вызывающему "SYN_ACK"?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2

2. Сообщение от cement (?), 24-Июл-20, 10:33   +/
> Осталось догадаться, каким механизмом тебе надо.

самым бюджетным :)
в идеале iptables

> И ещё что про тебя и твой механизм думает TCP. То есть
> на .3 приходит "SYN", а после этого .3 и .2 два
> раза ответят вызывающему "SYN_ACK"?

для понимания ситуации, речь идет про GPS-трекеры, которые "плюют" свои координаты;
По факту TCP может ограничиться рамками UDP, и этого будет достаточно.

т.е. было:
на .2  nc открывал порт, трекеры пушили координаты, которые складывались в базу.

решил для себя открыть traccar, который я развернул на  .3; и который вроде как нормально работает. И всё-таки хочется перебдеть (получать координаты на .2);

Для более ясной картины:  .2   .3   - это малинки (raspberrypi), при чем .2 не обновлялась хрен знает сколько, и для её дебиана уже нет поддержки(пакетов);

в реальности, контроль передачи в данной ситуации, для .2 не нужен (это по поводу ответа вызывающему) .2 успешно отработает то, что влетит;...

Если подытожить, правильно ли я понял, что в моей ситуации проблема заключается в открытии сокета на .2, перед тем как принять следующий (важный мне) пакет?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #4

3. Сообщение от Licha Morada (ok), 24-Июл-20, 21:23   +/
> По факту, на старый хост трафик дублируется, но в пакете не меняется
> dst_host.
> На 10.10.10.2 tcpdump-ом вижу что влетает трафик для 10.10.10.3, и логично, он
> не обрабатывается тем механизмом, которым мне надо.
> Подскажите пожалуйста, чего не хватает чтобы продублированный трафик влетел на старый хост
> с его значением dst_host?

На втором хосте сделать правило PREROUTING, с DNAT на желаемый адрес. Тогда пакет будет прилетать с правильным dst_host, но работать это всё равно не будет. TCP зависит от сессии.

Ещё можно сделать так чтобы 10.10.10.2 считал адрес 10.10.10.3 своим. Например, назначить .3 алиасом на интерфейсе lo.
Имейте в виду, что в таком случае 10.10.10.2 и 10.10.10.3 не смогут общаться друг с другом используя эти адреса.
Имейте в виду, что при использовании TCP, второй сервер тоже будет пытаться провести handshake с клиентом. В лучшем случае второй handshake будет игнорирован, вторая сессия TCP установлена не будет и .2 ничего н еполучит. В худшем это замусорит сессию с .3 и она тоже не установится. Переходите на UDP.

Можно попытаться что-то намутить с UDP multicast на шлюзе.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #8

4. Сообщение от ACCA (ok), 24-Июл-20, 23:02   +/
> По факту TCP может ограничиться рамками UDP, и этого будет достаточно.

Даже не смешно. Прочитай весь RFC-1180, потом мы сможем разговаривать.

> Если подытожить, правильно ли я понял, что в моей ситуации проблема заключается
> в открытии сокета на .2, перед тем как принять следующий (важный

В твоей ситуации проблема заключается в том, что ты не отличаешь TCP от UDP.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #5

5. Сообщение от cement (?), 25-Июл-20, 00:49   +/
>> По факту TCP может ограничиться рамками UDP, и этого будет достаточно.
> Даже не смешно. Прочитай весь RFC-1180, потом мы сможем разговаривать.
>> Если подытожить, правильно ли я понял, что в моей ситуации проблема заключается
>> в открытии сокета на .2, перед тем как принять следующий (важный
> В твоей ситуации проблема заключается в том, что ты не отличаешь TCP
> от UDP.

=))
UDP-а TCP-ой никогда не станет, а вот TCP UDP имитировать может...

Спасибо за критику, и советы.
Ваше мнение о моих проблемах ошибочно, и это подтверждает то, что Вы невнимательно читаете мои ответы, жаль. Искренне надеюсь что у Вас всё гораздо лучше, чем у меня. :) Мне просто показалось, Вы на меня накинулись не по теме вопроса :)

И всё-таки я не буду уподобляться критике в Ваш адрес, глубоко искать какие-то Ваши изъяны и постараюсь Вам вежливо пояснить, то что, возможно, было не очевидно для Вас в моём предыдущем ответе...

Ниже приведен простой пример telnet-сессии. Надеюсь Вы согласитесь что это будет TCP (по крайней мере мой tcpdump показывает так, и судя по Вашим ответам, Вы уж точно разбираетесь где TCP, а где UDP, у меня ведь с этим трудности, не так ли?).
Так вот, в моём случае (об этом я ранее уже писал, Вы просто это проигнорировали), рассматривая приведенный пример, после отправки "HELLO WORLD" ожидать от удалённой стороны успешное подтверждение приема пакета (рамки TCP) - не принципиально, т.к. по факту "HELLO WORLD" уже обработается и сохранится тем, чем мне надо;
В своей терминологии я это (отсутствие подтверждения приёма пакета c "HELLO WORLD") назвал "рамки UDP", жаль что сразу это было не так доходчиво, как я ожидал.(


~$ telnet 10.10.10.2 9999
Trying 10.10.10.2...
Connected to 10.10.10.2.
Escape character is '^]'.
HELLO WORLD
^]
telnet> quit
Connection closed.

В любом случае, огромное спасибо за советы. Ведь куда проще раскритиковать, нежели помочь :)
Горжусь своим собеседником :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #6, #7

6. Сообщение от ACCA (ok), 25-Июл-20, 03:01   +/
> просто это проигнорировали), рассматривая приведенный пример, после отправки "HELLO WORLD"
> ожидать от удалённой стороны успешное подтверждение приема пакета (рамки TCP) -
> не принципиально, т.к. по факту "HELLO WORLD" уже обработается и сохранится
> тем, чем мне надо;

Я на тебя не сержусь, ты просто неграмотный и не понимаешь, что ты делаешь. Между "Trying 10.10.10.2..." и "Connected to 10.10.10.2." прошло 2 пакета ARP и 3 пакета TCP. Это если вы на одном кабеле сидите. И это ещё не было никаких данных, так что не мешались PMTU Discovery и прочие window size control.

Ещё раз напомню - прочти RFC-1180 от начала до конца, чтобы с тобой можно было разговаривать. Ты задаёшь бессмысленные вопросы и не понимаешь ответов.

Кроме того, прочитай про "OSI модель".

TCP не может "имитировать" UDP и наоборот тоже не может быть. Разница как между USB и VGA. А чо, провода же?


Про дублирование трафика - либо пиши демона, который на 7 уровне скопирует данные и перешлёт на .3, либо переводи всё на UDP, либо не дублируй пакеты.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

7. Сообщение от ss (??), 28-Июл-20, 09:12   +/
>[оверквотинг удален]
> Connected to 10.10.10.2.
> Escape character is '^]'.
> HELLO WORLD
> ^]
> telnet> quit
> Connection closed.
>
> В любом случае, огромное спасибо за советы. Ведь куда проще раскритиковать, нежели
> помочь :)
> Горжусь своим собеседником :)

Вы не понимаете предмет разговора от слова "совсем".

Что же до Вашей проблемы - воспользуйтесь поисковиком на предмет "зеркалировать трафик"

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #10

8. Сообщение от ss (??), 28-Июл-20, 09:14   +/
>[оверквотинг удален]
> Ещё можно сделать так чтобы 10.10.10.2 считал адрес 10.10.10.3 своим. Например, назначить
> .3 алиасом на интерфейсе lo.
> Имейте в виду, что в таком случае 10.10.10.2 и 10.10.10.3 не смогут
> общаться друг с другом используя эти адреса.
> Имейте в виду, что при использовании TCP, второй сервер тоже будет пытаться
> провести handshake с клиентом. В лучшем случае второй handshake будет игнорирован,
> вторая сессия TCP установлена не будет и .2 ничего н еполучит.
> В худшем это замусорит сессию с .3 и она тоже не
> установится. Переходите на UDP.
> Можно попытаться что-то намутить с UDP multicast на шлюзе.

Учитывая что человек не понимает базовых вещей в пердметной области- все что вы говорите очень сложно походу будет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #9

9. Сообщение от Licha Morada (ok), 28-Июл-20, 22:09   +/

> Учитывая что человек не понимает базовых вещей в пердметной области- все что
> вы говорите очень сложно походу будет.

Да ну, чего сложного?
Увидит в сниффере пакеты с тем dst_host который хотелось, мусор от неудавшихся хэндшейков и что всё равно приложение не работает. И начнёт что-то подозревать. Собственно, "учитывая", в таком случае можно считать что ответ свою задачу выполнил. А если не начнёт, то, может быть, в другой раз.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #11

10. Сообщение от cement (?), 28-Июл-20, 22:46   +/
> Вы не понимаете предмет разговора от слова "совсем".
> Что же до Вашей проблемы - воспользуйтесь поисковиком на предмет "зеркалировать трафик"

Правильно ли я Вас понимаю, что советуя "зеркалировать трафик", Вы в корне понимаете предмет разговора (не то что я, совсем:) ), и считаете что это поможет в решении изначально поднятого вопроса? И знаете как реализовать задачу, но не расскажите? :) Верно?

Как предложите зеркалировать трафик, через port-mirror на коммутаторе; или тот вариант, который я уже указал в своем первом сообщении?

Готов поспорить что Вы невнимательно его почитали, раз затронули тему зеркалирования, и вместо совета по сути (указать чего в моём примере "зеркалирования" не хватает) :) начинаете упорно советовать воспользоваться поисковиком. Спасибо, улыбнуло :)

Я уже привел пример зеркалирования трафика, и Вы (тут можете подключить свою фантазию, чтобы себя оценить по достоинству), вместо того чтобы признать что Вам эта задача так же не по зубам, начинаете давать советы, которые не приведут ни к чему конкретному. Признайтесь, вам просто хотелось хоть что-то ответить, и раз не помогу, так хоть чуток подосру)) Я оценил..


Это примерно как:
-Пишу код на [python|js|c], не получается реализовать [фича], код ниже, прошу помощи;
-Воспользуйся поиском по [python|js|c];

Вам самим не смешно от своих ответов, или вы действительно загнаны в такие рамки?
Или, поделитесь, Вашим представлением для чего создан этот форум? (может я не по адресу обратился?)
Мой ответ по сути - Вы мне не помогли.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #12

11. Сообщение от cement (?), 28-Июл-20, 23:24   +/
> Да ну, чего сложного?
> Увидит в сниффере пакеты с тем dst_host который хотелось, мусор от неудавшихся
> хэндшейков и что всё равно приложение не работает. И начнёт что-то
> подозревать. Собственно, "учитывая", в таком случае можно считать что ответ свою
> задачу выполнил. А если не начнёт, то, может быть, в другой
> раз.

Полностью с Вами согласен, (рассматривая конкретно заданный мною вопрос).
Получив на сетевой интерфейс важный для меня пакет со всеми нужными мне заголовками (вопрос как раз был про них), он действительно не обработается тем механизмом, который у меня уже имеется (nc, который слушает tcp-порт);

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #13

12. Сообщение от ss (??), 29-Июл-20, 08:32   +/
>[оверквотинг удален]
> Это примерно как:
> -Пишу код на [python|js|c], не получается реализовать [фича], код ниже, прошу
> помощи;
> -Воспользуйся поиском по [python|js|c];
>
> Вам самим не смешно от своих ответов, или вы действительно загнаны в
> такие рамки?
> Или, поделитесь, Вашим представлением для чего создан этот форум? (может я не
> по адресу обратился?)
> Мой ответ по сути - Вы мне не помогли.

Как много слов вместо того чтобы начать учить матчасть... :)
Успехов Вам :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

13. Сообщение от ss (??), 29-Июл-20, 08:44   +/
>> Да ну, чего сложного?
>> Увидит в сниффере пакеты с тем dst_host который хотелось, мусор от неудавшихся
>> хэндшейков и что всё равно приложение не работает. И начнёт что-то
>> подозревать. Собственно, "учитывая", в таком случае можно считать что ответ свою
>> задачу выполнил. А если не начнёт, то, может быть, в другой
>> раз.
> Полностью с Вами согласен, (рассматривая конкретно заданный мною вопрос).
> Получив на сетевой интерфейс важный для меня пакет со всеми нужными мне
> заголовками (вопрос как раз был про них), он действительно не обработается
> тем механизмом, который у меня уже имеется (nc, который слушает tcp-порт);

И как вы это понимаете?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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