在fedora上调试nat-pt,其中使用BPF机制截获数据包,BPF截获的数据包同时也会交给系统的协议栈,举个例子,
6BrLm$dC
p:A:ri下面是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)是不期望的报文。
J;V`1]f]2R D%|
aaaa:bbbb:cccc:dddd:eeee:ffff:c0a8:d4 2001:250:f007:15::600 ICMPv6 Echo request
}1j"rA"A,xwww.linuxeden.com//解释:V4主机ping V6主机,经过nat-pt处理后发往V6主机,2001:250:f007:15::600(V6主机地址)
`#Sk!YCSDd QY2001:250:f007:15::600 aaaa:bbbb:cccc:dddd:eeee:ffff:c0a8:d4 ICMPv6 Echo reply
o0x+D.]6~%k/`'J//解释:V6主机给nat-pt发送可达数据包,告诉V4主机可以ping通V6(2001:250:f007:15::600)。
7ji&B2F}jov)h2001:250:f007:15::800 2001:250:f007:15::600 ICMPv6 Unreachable (Route unreachable)
x!uX/S5[V+VLinux伊甸园论坛//解释:同时nat-pt所在的机器(2001:250:f007:15::800)系统协议栈获得ICMPv6 Echo reply报文,返回给V6主机一个Unreachable (Route unreachable)
a~/S_al"a6P现在的问题是:我在red hat上运行同样的程序,不会出现此问题,但在fedora上运行,有此问题。请高手指点,万分感谢!
"sz4E\K }ULinux伊甸园论坛是不是截获数据包又不交给系统的协议栈处理就能解决此问题,如何不让协议栈处理已经截获的数据包?
:F
pNK3@3j Q D
为什么同样的程序在red hat 9上运行就没有此问题呢,是不是BPF机制在fedora与red hat上截获数据包的时机不同?
0j4D2q @%TGO8t谢谢!
Linux伊甸园论坛| a4B(d0u4{+RZTix
也可以E-mail ,QQ 给予指点,
(E&u5YoruaE-mail :
calf9007@163.com
r[y(m)N {ZQQ:43885970
J ^9w
CxPX B5@e&s,D
现在的问题是:我在red hat上运行同样的程序,不会出现此问题,但在在fedora上运行,有此问题。请高手指点,万分感谢!
] R.r
l|7I}6@Linux伊甸园论坛是不是截获数据包又不交给系统的协议栈处理就能解决此问题,那为什么同样的程序在red hat 9上运行就没有此问题呢,
%d6w3c/u3q
谢谢!
6x
WGk3Sw2bS
也可以E-mail ,QQ 给予指点,
m8K$pd&XbE-mail :[EMAIL="calf9007@163.com"]calf9007@163.com[/EMAIL]
8s,`;E ldM}
mtbQQ:43885970