繁体   English   中英

将网络数据包重新注入到网络堆栈(RAW套接字)中

[英]Reinjecting network packets into networkstack (RAW-Sockets)

我正在写硕士论文,但我的实现方面有一个小问题。

论文的一部分是对PC A上的网络数据包进行加密,然后将其发送到PCB。接收者现在应该对其进行解密,然后将其重新注入到网络堆栈中,以便其他应用程序可以使用该程序包。

对于第一个测试用例,我使用了ICMP(请求)。 Nftable用于在系统A上筛选出包的流量。 如果有匹配的传出程序包,我将它与nft一起排队到用户空间。 我的C-Application对其进行加密,并使用原始套接字将其发送出去。 该软件包是从PC B接收的。在PC BI上,有一个基于原始套接字的筛选器应用程序。 该应用程序看到传入的帧并将其解密。 当我用Wireshark检查结果时,一切似乎都很好。 解密帧的每个比特等于原始帧的比特。 现在应该将解密的数据包重新注入网络堆栈。 如前所述,这是通过RAW-Sockets完成的。 我现在希望,这个重新注入的包应该像普通的ICMP-Request数据包一样进行处理。 但这种情况并非如此。 系统收到解密的数据包,但未发送响应。

有什么想法吗? 是否可以将带有原始套接字的数据包注入到自己的网络堆栈中?

在最后几天,我读到一些有关TUN / TAP的文章。 这是重新注入我的包裹的正确方法吗?

谢谢你的帮助!

亲切的问候,安德烈亚斯

我知道了。

我在这里找到了解决方案: 如何将原始L2数据包作为传入数据包注入Linux上的接口?

在我第一次尝试搜索答案时,我还没有找到该线程。 但是现在一切正常!

解决方案非常简单。 我需要通过网桥连接到物理接口eth0的虚拟接口。 因此,我将希望重新注入堆栈的数据包发送到虚拟接口。 通过网桥,它们被转发到eth0并作为传入帧进行处理。

亲切的问候,安德烈亚斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM