【发布时间】:2016-06-24 11:36:36
【问题描述】:
我正在写我的硕士论文,我的实现有一个小问题。
论文的一部分是在 PC A 上加密一个网络数据包并将其发送到 PC B。接收者现在应该对其进行解密并将其重新注入网络堆栈,以便其他应用程序可以使用该包。
对于第一个测试用例,我使用了 ICMP(请求)。 Nftables 用于过滤系统 A 上的传出包的流量。如果有一个匹配的传出包,我将它与 nft 一起排队到用户空间。我的 C-Application 对其进行加密,并使用原始套接字将其发送出去。包裹是从 PC B 收到的。 在 PC B 上,我有一个基于原始套接字的过滤器应用程序。此应用程序看到传入的帧并对其进行解密。当我用wireshark检查结果时,一切似乎都很好。解密帧的每一位等于原始帧的位。现在解密的数据包应该重新注入网络堆栈。正如我之前提到的,这是由 RAW-Sockets 完成的。 我现在希望,这个重新注入的包应该像普通的 ICMP-Request 包一样被处理。但这种情况并非如此。系统收到解密后的包,但没有回复。
有什么想法会发生什么吗?是否可以将带有原始套接字的数据包注入自己的网络堆栈?
最近几天我读到了一些关于 TUN/TAP 的文章。这是重新注入我的包裹的正确方法吗?
感谢您的帮助!
亲切的问候, 安德烈亚斯
【问题讨论】:
标签: c network-programming raw-sockets