Я пытаюсь написать приложение пользовательского пространства, которое может подключиться к сетевому стеку операционной системы, перехватывать пролетающие мимо пакеты и редактировать те, которые ей интересны.
После долгих поисков, мне кажется, что самое простое (все же достаточно надежный) способ сделать это (на любой платформе) - проект Linux libnetfilter_queue
.Однако у меня возникают проблемы с поиском какой-либо разумной документации для проекта, за исключением ограниченной официальной документации.Его основные характеристики (как указано в первой ссылке):
- получение пакетов из ядра подсистемы nfnetlink_queue
- выдача вердиктов и / или повторное внедрение измененных пакетов подсистема ядра nfnetlink_queue
Акцент мой.Как именно я имею в виду пойти по этому поводу?Я попытался изменить предоставленный код sample , но, возможно, я что-то неправильно понимаю.Код работает в режиме NFQNL_COPY_PACKET
, поэтому я получаю весь пакет - но мои изменения в нем, похоже, ограничены моим собственным приложением - как и следовало ожидать, учитывая "копию"семантика.
У меня такое ощущение, что я должен каким-то образом использовать NF_QUEUE
, но я не совсем понял.Любые указатели?
(Если для этого есть более простой механизм, к тому же кроссплатформенный, я бы хотел услышать об этом!)