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