我的Linux系统中有两个接口 - eth0和eth1。我在eth0上打开了一个原始套接字,我正在监听传入的数据包。当数据包来自eth0时,我在更改以太网头(特别是目标MAC到eth1的MAC地址)后将其转发到eth1。现在,接口应该接受该数据包,并将其发送到内核进行进一步处理,最终到应用程序等待它。但由于某种原因,数据包达到eth1(我可以从wireshark看到),但应用程序没有收到它(应用程序是ping,我没有看到ping回复)。
如何将数据包发送到eth1,以便它被接受并上行发送到内核?
答案 0 :(得分:1)
这里可能存在误解:
如果您通过接口上的原始套接字发送数据包,在您的情况下eth1,不将被视为内核的本地,无论其mac-address如何,但将离开网络接口(具有自己的mac-address作为目的地)。这是你通过wireshark观察到的。
如果您希望内核处理数据包,请将其发送到 lo - 接口(Loopback接口),这是专门用于此目的。