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