gpt4 book ai didi

c - 如何向内核发送数据包?

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:06 26 4
gpt4 key购买 nike

我的 Linux 系统中有两个接口(interface) - eth0 和 eth1。我在 eth0 上打开了一个原始套接字,我正在监听传入的数据包。当数据包来自 eth0 时,我在更改以太网 header (特别是目标 MAC 到 eth1 的 MAC 地址)后将其转发到 eth1。数据包现在应该被接口(interface)接受并发送到内核进行进一步处理,并最终发送到等待它的应用程序。但由于某种原因,数据包到达了 eth1(正如我从 wireshark 中看到的那样),但应用程序没有收到它(应用程序正在 ping,但我没有看到 ping 回复)。

我如何将数据包发送到 eth1,以便它被接受并向上游发送到内核?

最佳答案

这里可能存在误区:

如果您通过接口(interface)上的原始套接字发送数据包,在您的例子中是 eth1,它将被视为内核本地,无论其 mac 地址如何,但会离开网络接口(interface)(以其自己的 MAC 地址作为目标)。这就是您使用 wireshark 观察到的结果。

如果您希望数据包由您的内核处理,请将其发送到 lo 接口(interface)(环回接口(interface)),这是专门用于该目的的。

关于c - 如何向内核发送数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44267261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com