Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Работа с ethernet пакетами  (Прочитано 2771 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Erlah

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Работа с ethernet пакетами
« : 08 Июня 2009, 22:08:14 »
Вощем задача следующая.
Есть Linux с двумя сетевухами.
Небходимо отлавливать весь трафик из первого интерфейса, изменить мак-назначения в пакете и выкинуть его в другом интерфейсе. Пока не знаю с чего начать. Хотелось бы заюзать готовое решение, но такое я пока не нашел. Писать буду на Си/С++ в крайняк на асме.

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #1 : 08 Июня 2009, 22:51:37 »
Netfilter + iptables не прокатит?
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн digiwhite

  • Активист
  • *
  • Сообщений: 732
  • http://www.welinux.ru
    • Просмотр профиля
    • http://www.welinux.ru
Re: Работа с ethernet пакетами
« Ответ #2 : 09 Июня 2009, 00:48:59 »
Есть книжка "Программирование боевого софта под Linux", Скляров И.C., ISBN 5-94157-897-0. Там найдете кучу информации по вашему вопросу.
Социальная сеть не фанатично настроенных Linuxойдов - http://www.welinux.ru

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #3 : 09 Июня 2009, 10:58:32 »
Йон Снейдер "Эффективное программирование TCP/IP"
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #4 : 09 Июня 2009, 11:23:23 »
Вощем задача следующая.
Небходимо отлавливать весь трафик из первого интерфейса, изменить мак-назначения в пакете и выкинуть его в другом интерфейсе. Пока не знаю с чего начать. Хотелось бы заюзать готовое решение, но такое я пока не нашел. Писать буду на Си/С++ в крайняк на асме.
Насчет готовых решений не подскажу.

Поскольку работать собираетесь с низкоуровневыми Ethernet-пакетами, то писать вам ИМХО нужно будет модуль ядра. Можно еще взглянуть на утилиты, предназначенные для создания мостов (bridge) между интерфейсами.

С чего начать? Начните с изучения исходников ядра в части работы с Ethernet-пакетами.

Цитировать
Йон Снейдер "Эффективное программирование TCP/IP"
Это имхо слишком "высоко" для поставленной задачи.

Цитировать
Netfilter + iptables не прокатит?
Аналогично. iptables работает с IP-пакетами.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #5 : 09 Июня 2009, 19:22:09 »
Тут все немного сложнее. В принципе есть 2 варианта. Изменить модуль bridge как написал предидущий оратор. Преимущество более быстрая работа, недостаток все делается в кернеле, и есть необходимость перестройки модуля при обновлении ядра. Второй способ более тривиальный, открываем RAW_SOKET к каждому интерфейсу и вперед. Преимущество, все делается в Юзер спейсе, недостаток работает медленнее.

Оффлайн Erlah

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #6 : 10 Июня 2009, 08:27:42 »
Спасибо за советы. Выбрал путь наименьшего сопротивления. Написал утилитку с помощью libpcap и libnet. С помощью libpcap вытаскиваю ip пакет из eth0, потом юзая libnet оборачиваю его своим ethernet заголовком и выкидываю из eth1.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #7 : 10 Июня 2009, 08:40:07 »
Быть может стоит это дело выложить где-нибудь для потомков? :)
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн Erlah

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #8 : 10 Июня 2009, 13:15:45 »
(Нажмите, чтобы показать/скрыть)

За криво написаную софтину не ругайте. Интерфейсы задаются в коде. В дальнейшем добавлю использование BPF.
Может кому пригодится

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #9 : 10 Июня 2009, 18:00:53 »
По мне так это оверкил, ну хозяин барин, работает и ладно. Единственное принтфы убери после отладки, под трафиком бусдут тормозить и либнет_инит/дестрой в майне сделай, не надо либ насиловать на каждом пакете. Либнет_врайте врядли все ошибки критические, тоже не мешало бы посмотреть какие есть и не убивать процесс по любому поводу.
И еще ты уверен, что тебе только ИП пакеты нужно форвардить?

--
И если ты МАК адреса в ИП пакетах меняешь, возможно нужно еще и сорс МАКи в обратную сторону менять
« Последнее редактирование: 10 Июня 2009, 18:04:30 от mkarasik »

Оффлайн Erlah

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #10 : 11 Июня 2009, 08:45:14 »
Цитировать
И еще ты уверен, что тебе только ИП пакеты нужно форвардить?
Уверен, остальные фсб просто не нужны :)

Цитировать
И если ты МАК адреса в ИП пакетах меняешь, возможно нужно еще и сорс МАКи в обратную сторону менять
Наверное имеется в виду ethernet пакетах. В коде я прописываю мак дст и мак сорс, чтобы комутатор зря в ступор не вводить.

http://forum.dlink.ru/viewtopic.php?t=98816 ради вот этого и делал.

Цитировать
либнет_инит/дестрой в майне сделай
Это точно.

Спасибо за критику.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Работа с ethernet пакетами
« Ответ #11 : 11 Июня 2009, 10:38:41 »
Цитировать
И еще ты уверен, что тебе только ИП пакеты нужно форвардить?
Уверен, остальные фсб просто не нужны :)
Таки следят? Всегда сомневался в этом.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.