在链路层修改包并送回协议栈
请问有没有方法能在以太网桢进入协议栈之前,在链路层截取以太网桢,对以太网桢头做修改后,再送回内核协议栈处理?
试过用libnetfilter_queue处理,但好像只能修改IP层以上的部分。
有其它办法吗?用netfilter的hook可以吗?或者有更方便的方法?
谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
你想修改什么内容, MAC 头部吗
嗯,是的
你的目的是什么,为什么要修改 MAC,源 or 目的?
其实是这样的。。是我自己的一个实验性的想法
我们学校上网用的是锐捷认证,基于802.1X认证那种。在通过认证之前,应该只有802.1X包才能通过交换机,所以内网的机器虽然连在同一个交换机上,还是不能通信。我的想法是,把正常的IP数据封装在802.1X包里,发送出去。接收到包的机器上再作相应处理,取出IP部分,这样两台内网的机器在通过认证前也能通信了。
所以就有了之前的那个需求。第一,要自己填写源MAC和目的MAC,因为ARP也不起作用了。第二,MAC头的协议部分要写成802.1X(0x888e),以通过交换机。
现在的问题是,如果理论上这个想法可行,用哪种方法实现最方便? netfilter hook? 或者TAP/TUN可以吗?
在netif_receive_skb里改
netfilter 是在IP层注册的钩子.
因此使用netfilter的钩子来修改L2层的数据似乎不行。
回复 5# morfast
回复 7# asweisun_shan
NF 在二层也有实现
回复 8# Godbach
版主的意思,就用NF hook来实现? 我试试看
ebtable不行吗?