(C)虚拟网络适配器

时间:2011-09-21 12:49:43

标签: c linux networking packet data-processing

在linux中是否有任何方式以编程方式创建可以侦听的虚拟网络适配器,以便每当尝试通过适配器发送数据时,都会调用一个方法?

我正在尝试将所有数据包转发到单个IP地址,然后将其原始位置包含在数据包中。

类似的东西:

void sendPacket(char to[], char data[])

因此,如果我通过虚拟网络适配器ping google.com,则会调用此方法sendPacket("GooglesIp","Whatever data a ping sends")

1 个答案:

答案 0 :(得分:7)

我认为您正在寻找的是Linux中的TUN / TAP设备,它允许程序充当网络接口。

http://en.wikipedia.org/wiki/TUN/TAP

然后,您可以编写程序来侦听传入数据的TUN / TAP接口,并相应地处理它。基本上你会将ping路由到新的TUN / TAP接口,然后有一个程序从接口读取数据包,并从那里路由它们。