如何将数据包发送/注入本地网络接口(linux)

时间:2014-09-10 19:00:55

标签: linux sockets

我正在研究Linux上的C程序(内核2.6.18)。我需要在我的Linux系统中发送/注入IP数据包(例如,通过套接字),但让同一个Linux“认为”这些数据包是从另一台主机传入的。我创建了一个数据链接套接字,并使用伪造的源mac / ip作为通过此套接字发送的数据包。目标mac / ip设置为本地Linux中的目标。但是,无论我是在用户空间程序还是在内核模块中发送这些数据包,我的本地Linux都不认为这些数据包来自外部。例如,如果我创建一个数据链接套接字以发送发往我本地Linux的ICMP请求,我希望我的本地Linux认为这个ICMP请求来自外部,并会响应ICMP回复,但我的本地Linux不这样做。 (但是,使用相同的程序,我可以将伪造的ICMP请求发送给另一台主机,并且该主机确实响应ICMP回复。)

我在网上做了一些关于这个主题的研究,似乎所有相关的解决方案都建议使用TAP。但正如this VirtualBox article所说:

  

...在具有桥接网络的Linux上不再需要TAP,...

我很想知道这是怎么回事。感谢。

0 个答案:

没有答案