0

我的应用程序正在使用 TUN 说 tun0。在设计中,我的应用程序将收到一个包含完整 IP 层的 UDP,然后我将取出 IP 层,然后使用“文件写入”将它们放入我自己的 tun0 设备中,据说在设计中,我应该可以读取再次从 tun0 发出数据包。

现在的情况是我可以通过 tcpdump 看到包被写入隧道,但我无法读回它们。

隧道设置或路由设置有问题?

提前致谢

4

1 回答 1

0

您的第二个 tun0 不是 FIFO 队列。您的设计中可能存在使用第二个 tun0 设备的方式和原因的问题。澄清你为什么使用它以及应该阅读哪个过程。正确的方法应该源于该澄清。

如果您想读取发送给您的数据,您有一些选择。

  • 打开时将 tun0 连接到 TCP 或 UDP 回显服务。然后,这会将您塞入其中的数据包发回给您。
  • 为要连接的第二个 tun0 打开一个侦听器。然后连接到它并将数据包发送到该连接。从侦听器端读取您的数据。
  • 打开带有两个文件描述符的管道。写入一个描述符并从另一个描述符读取。在 fork children 时,管道通常用于 IPC(进程间通信)。
  • 创建一个套接字并从中读取数据。打开套接字的另一端进行写入。套接字通常用于允许其他进程与一个进程进行通信。当调用进程可能具有与侦听进程不同的生命周期时,这很有效。
  • 在内存中创建缓冲区或队列来存储数据。
于 2012-10-15T23:54:40.603 回答