发新话题
打印

急,关于BPF截获数据包的问题

急,关于BPF截获数据包的问题

fedora上调试nat-pt,其中使用BPF机制截获数据包,BPF截获的数据包同时也会交给系统的协议栈,举个例子,
下面是ethereal抓包,对于一个ICMPv6 Echo request ,其中Echo reply是期望得到的,aaaa:bbbb:cccc:dddd:eeee:ffff:c0a8:d4是V4主机在V6域中对应的地址,算是不存在的虚拟地址,nat-pt截获这个数据包后经过处理会返回Echo reply,但同时nat-pt所在机器的协议栈收到了Echo reply,因为aaaa:bbbb:cccc:dddd:eeee:ffff:c0a8:d4 不是V6域中的可路由地址,所以同时返回一个ICMPv6   Unreachable (Route unreachable),而这个Unreachable (Route unreachable)是不期望的报文。

aaaa:bbbb:cccc:dddd:eeee:ffff:c0a8:d4 2001:250:f007:15::600 ICMPv6   Echo request
//解释:V4主机ping V6主机,经过nat-pt处理后发往V6主机,2001:250:f007:15::600(V6主机地址)

2001:250:f007:15::600 aaaa:bbbb:cccc:dddd:eeee:ffff:c0a8:d4 ICMPv6   Echo reply
//解释:V6主机给nat-pt发送可达数据包,告诉V4主机可以ping通V6(2001:250:f007:15::600)。

2001:250:f007:15::800 2001:250:f007:15::600 ICMPv6   Unreachable (Route unreachable)
//解释:同时nat-pt所在的机器(2001:250:f007:15::800)系统协议栈获得ICMPv6   Echo reply报文,返回给V6主机一个Unreachable (Route unreachable)

现在的问题是:我在red hat上运行同样的程序,不会出现此问题,但在fedora上运行,有此问题。请高手指点,万分感谢!
是不是截获数据包又不交给系统的协议栈处理就能解决此问题,如何不让协议栈处理已经截获的数据包?
为什么同样的程序在red hat 9上运行就没有此问题呢,是不是BPF机制在fedora与red hat上截获数据包的时机不同?
谢谢!
也可以E-mail ,QQ 给予指点,
E-mail :calf9007@163.com
QQ:43885970

本文由calf9007 发布于Linuxsky 论坛,网址:http://bbs.linuxsky.org/thread-5690-1-1.html

TOP

发新话题