2013-06-23 3 views
0

Мне было дано задание найти подходящую точку перехвата в цепочке данных ethernet Linux.Получение данных Ethernet в Linux

Я посмотрел на него с разных ракурсов. Я успешно написал NetFilters. Но то, что я действительно ищу, - лучшее место для вставки моего кода, так что я получаю непосредственно от драйвера - без необходимости изменять драйвер и, надеюсь, оставаться «Linux-friendly». (Я не против враждебного захвата, но я стараюсь избегать этого.)

Я хочу иметь возможность: полностью взять на себя весь IP-адрес или выбрать TCP (возможно, проприетарное соединение, которое я не хочу обходить стек Linux), или отбирать другие протоколы или соединения. (Я не имею в виду среднее соединение.)

Например: TCP SYN поступает с IP-адреса, который я распознаю. Я хочу отвечать и общаться без стека Linux, когда-либо зная, что сообщение когда-либо появлялось. Я хочу, чтобы сообщения TX без сетевых фильтров получали его копию.

Я не хочу брать на себя бремя всех великих вещей, которые предоставляет стек Linux, но я не хочу, чтобы какие-либо фильтры также видели мои личные сообщения.

Просмотрев тонны кода ядра, я прихожу к выводу, что проще изменить драйвер (в данном случае r8169.c). Но я бы предпочел найти это «сладкое пятно», где я могу заглядывать/ткнуть/подталкивать/принуждать через мой модуль ядра и создавать цепочку со мной, всегда будучи первым.

Кто-нибудь знает, где может быть это «сладкое пятно»?

ответ

0

Если вы открываете стандартный сокет с протоколом RAW, я считаю, что это предотвращает передачу данных на уровни TCP/IP. Это позволит вам проверять пакеты Ethernet и отвечать, но я не думаю, что это позволит вам вернуть пакет в стек, чтобы он продвигался дальше.

+0

Спасибо за ваш вклад. Я смотрел на это, но, к сожалению, он также не мешает фильтрам смотреть. –

Смежные вопросы