如何从netfilter截获的skb中获取mac头信息
我用netfilter在locol in截获收到的数据包,但是mac头已经被剥掉了,获取不到源mac地址,打印输出ethhdr除了protol是0800外全是0,我现在需要获取达到数据报的源mac信息。这里netfilter钩子函数起作用是在3层。可以用什么接口函数直接在当前钩子中获取二层信息吗?之前看版主说netfilter在二层也有实现,请问具体该怎么操作?也是像在网络层那5个钩子点那样可以挂载自定义钩子? :'(:'(:'(只有自己顶一顶 把data减去sizeof(struct ethhdr)获取的以太头也是0,这是不是意味着在三层抓到的包中mac信息已经丢失,不能再找回?本帖最后由 nswcfd 于 2015-09-10 20:44 编辑
能看到0x0800说明mac-header还是在的,没有哪个模块闲的没事干把src-mac和dst-mac清零的:lol
顺便把skb->dev打印出来,看到mac是0,多半是来自虚拟口的报文,比如lo或者ppp等。 回复 1# dqlzy
其实只是 skb 中 data 指向了 IP header,MAC 头仍然在,只是需要通过指针操作自己去取。
回复 4# nswcfd
:dizzy:犯傻了 竟然抓的是虚拟口的包,多谢! 回复 5# Godbach
这个问题已经解决了~多谢版主,再问一个问题,现在我需要截取链路层的数据包,是不是只能改写驱动不能用netfilter了?
页:
[1]