LINUX.ORG.RU
ФорумAdmin

Модификация проходящего траффика

 , , , ,


0

4

Есть ноутбук, подключенный к интернету через wlan0. В нем также присутствует Ethernet адаптер, через который он раздает интернет другому ноуту. Как я могу организовать поток пакетов через свое приложение, в котором я буду обрабатывать эти пакеты, если нужно (шифровка, модификация и т.п), либо просто пропускать далее? Видел решение на FreeBSD с помощью ipfw и DIVERT сокетов. Но там он встроен в ядро и ipfw дефолтный, по-этому работает быстро и как надо. В Linux на ум приходят только 2 решения:

  • заюзать IP-aliasing + iptables, что, ИМНО, как-то не очень
  • сделать это с помощью netmap-ipfw. Он тоже билдится в ядро и работает очень шустро.

Или есть другие более элегантные решения, которые работать будут также шустро?

  • UPD1: обрабатывать нужно ВЕСЬ траффик.
  • UPD2: netmap работает достаточно быстро или все же нужно для этого писать свой модуль ядра?


Последнее исправление: Fetterless (всего исправлений: 1)

Ответ на: комментарий от Deathstalker

Знаю о Squid'e. Забыл уточнить,что нужно обрабатывать ВЕСЬ траффик.

Fetterless
() автор топика
Ответ на: комментарий от int13h

Спасибо, но я хочу сделать это сам. Тем более, что я не прошу написать вместо меня код, а лишь спрашиваю «направление» поиска и изучения

Fetterless
() автор топика

Какая-то каша. netmap это способ бысто передать (профильтровать) пакеты через user-space приложение. netmap-ipfw это уже сам firewall, который, вроде как вам не нужен, если вам нужно:

организовать поток пакетов через свое приложение

Для чего вам нужен IP-aliasing не понятно, и ещё непонятнее то, что в случаее с netmap-ipfw он вам получается не нужен.

netmap это большне скорости 10 Гбит/с, а у вас wifi, близко не валялось. ИМХО, получайте пакеты через iptables NFQUEUE и хватит вам.

mky ★★★★★
()
Ответ на: комментарий от mix_mix

Окей, впринципе, после гугления тоже пришел к этому варианту. Я правильно понял, что это все дело желательно сделать как модуль ядра, т.к. передача от ядра в user-space очень ресурсозатратна? (например тот же iptables NFQUEUE, который как вариант советовали выше). А сообщения между ядром и userspace базируются на сообщениях, посылаемых через NETLINK сокет, по этому нету такой важной штуки как zero-copy.

Fetterless
() автор топика
Ответ на: комментарий от Fetterless

Да, всё примерно так. Копирование не очень ресурсозатратно, но при большой нагрузке аукнется. Zero copy нет по причинам безопасности, но при большом желании можно смапить в процесс страницы из ядра. А вообще интересно узнать подробнее о самой задаче.

mix_mix ★★★★★
()
Ответ на: комментарий от mix_mix

Задача состоит в том, чтобы сделать свою реализацию IPSec для построения VPN'a. Знаю, что можно нарыть уже готовые исходники, но хочется именно свою реализацию.

Fetterless
() автор топика
Ответ на: комментарий от pinachet

Работа продвигается медленно, но уверенно, т.к. занимаюсь этим в свободное время (от работы, друзей и т.п.)

Fetterless
() автор топика
Ответ на: комментарий от Fetterless

Найдите себе книжку «Understanding Linux Network Internals» и внимательно посмотрите на фигуру 18.1

Если вы собираетесь вставлять в проходящие пакеты какие-то свои служебные заголовки связанные с шифрованием, то нужно внимательно относиться к моменту фрагментации. IPSec не зря так глубоко интегрирован в стэк, в отличие от прочих VPN.

Например на хуке NF_IP_POST_ROUTING вставлять ничего нельзя, ибо фрагментация данных уже завершена. Можно лишь зашифровать payload и поправить checksum - эдакая stealth-security без всяких служебных заголовков, относящихся к шифрованию.

Это первое, что приходит в голову, если вы хотите реализовать прямо-таки IPSec-IPSec

rubic
()
Ответ на: комментарий от rubic

Не поверите - как раз уже почитываю ее. Кстати, фигура 18.1 - схема касательно ext3

Fetterless
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.