2016-06-24 2 views
0

Я пишу свою магистерскую диссертацию, и у меня есть небольшая проблема с моей реализацией.Reinjecting сетевых пакетов в сетевые стеки (RAW-сокеты)

Одной из частей диссертации является шифрование сетевого пакета на ПК A и отправка его на ПК B. Теперь приемник должен расшифровать его и повторно установить в сетевой стек, чтобы другое приложение могло работать с пакетом.

Для первого тестового случая я использовал ICMP (запрос). Nftables используются для фильтрации трафика в системе A для исходящих пакетов. Если есть исходящий пакет, который соответствует, я ставил его в очередь с nft в пользовательское пространство. Мое C-приложение шифрует его и отправляет его с помощью сырых сокетов. Пакет получен от ПК B. На ПК B У меня есть приложение фильтра, основанное на сырых сокетах. Это приложение видит встроенный фрейм и расшифровывает его. Когда я проверяю результат с помощью wirehark, все кажется прекрасным. Каждый бит дешифрованного кадра равен битам исходного кадра. Теперь дешифрованный пакет должен быть повторно перенесен в сетевой стек. Как я уже говорил, это делается с помощью RAW-сокетов. Я бы ожидал, что этот повторно загруженный пакет должен обрабатываться как обычный пакет ICMP-Request. Но это не так. Система получает дешифрованный пакет, но ответ не отправляется.

Есть ли какие-либо идеи, что происходит worng? Можно ли вставить пакет с сырыми сокетами в собственный сетевой стек?

В последние дни я кое-что прочитал о TUN/TAP. будет ли это правильным способом для обновления моих пакетов?

Благодарим за помощь!

С наилучшими пожеланиями, Andreas

ответ

0

я получил его на работу.

Я нашел решение здесь: How to inject a raw L2 packet as an incoming packet to an interface on Linux?

На моих первых попыток найти ответ я нашел нету в этой теме. Но теперь все работает отлично!

Решение очень просто. Мне нужен виртуальный интерфейс, подключенный через мост к моему физическому интерфейсу eth0. Поэтому я посылаю пакеты, которые мне нравятся, переустанавливать в стек, в виртуальный интерфейс. Через мост они были отправлены на eth0 и обрабатывались как входящие кадры.

С уважением, Andreas