在linux中是否有任何方式以编程方式创建可以侦听的虚拟网络适配器,以便每当尝试通过适配器发送数据时,都会调用一个方法?
我正在尝试将所有数据包转发到单个IP地址,然后将其原始位置包含在数据包中。
类似的东西:
void sendPacket(char to[], char data[])
因此,如果我通过虚拟网络适配器ping google.com,则会调用此方法sendPacket("GooglesIp","Whatever data a ping sends")
答案 0 :(得分:7)
我认为您正在寻找的是Linux中的TUN / TAP设备,它允许程序充当网络接口。
http://en.wikipedia.org/wiki/TUN/TAP
然后,您可以编写程序来侦听传入数据的TUN / TAP接口,并相应地处理它。基本上你会将ping路由到新的TUN / TAP接口,然后有一个程序从接口读取数据包,并从那里路由它们。