在fedora上调试nat-pt,其中使用BPF机制截获数据包,BPF截获的数据包同时也会交给系统的协议栈,举个例子,
paJ{'l!F+P5D
下面是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)是不期望的报文。
F0am o)_aaaa:bbbb:cccc:dddd:eeee:ffff:c0a8:d4 2001:250:f007:15::600 ICMPv6 Echo request
(b d(J7ws^~
//解释:V4主机ping V6主机,经过nat-pt处理后发往V6主机,2001:250:f007:15::600(V6主机地址)
"W Bmo&A!f
m
2001:250:f007:15::600 aaaa:bbbb:cccc:dddd:eeee:ffff:c0a8:d4 ICMPv6 Echo reply
4O(L
q;mK//解释:V6主机给nat-pt发送可达数据包,告诉V4主机可以ping通V6(2001:250:f007:15::600)。
8ByT? u f2\al W
2001:250:f007:15::800 2001:250:f007:15::600 ICMPv6 Unreachable (Route unreachable)
WN7LW;Yw0Q hU//解释:同时nat-pt所在的机器(2001:250:f007:15::800)系统协议栈获得ICMPv6 Echo reply报文,返回给V6主机一个Unreachable (Route unreachable)
+az)pJ `,dS现在的问题是:我在red hat上运行同样的程序,不会出现此问题,但在fedora上运行,有此问题。请高手指点,万分感谢!
(FA4TNc|9FEk0q%~
是不是截获数据包又不交给系统的协议栈处理就能解决此问题,如何不让协议栈处理已经截获的数据包?
/N#mg)M#ER为什么同样的程序在red hat 9上运行就没有此问题呢,是不是BPF机制在fedora与red hat上截获数据包的时机不同?
$u(t^s/z"] |\2{:kA
谢谢!
D[1o.lk1Y?b5hA
也可以E-mail ,QQ 给予指点,
$^#P&K\Zmh
E-mail :
calf9007@163.com
w7DB C3uwww.linuxeden.comQQ:43885970
%TX2rq Mwww.linuxeden.com
kP$yS0`YN-e现在的问题是:我在red hat上运行同样的程序,不会出现此问题,但在在fedora上运行,有此问题。请高手指点,万分感谢!
L)En[s3?X'c|
是不是截获数据包又不交给系统的协议栈处理就能解决此问题,那为什么同样的程序在red hat 9上运行就没有此问题呢,
www.linuxeden.com)C_8l(De*j\qq
谢谢!
4~D0_ BQwww.linuxeden.com也可以E-mail ,QQ 给予指点,
SHKyDt
E-mail :[EMAIL="calf9007@163.com"]calf9007@163.com[/EMAIL]
PBvs-Lv3@RLinux伊甸园论坛QQ:43885970