netfilter劫持ping包,却得不到响应?
1.我在用户机上写了一个内核模块,用Netfilter实现了ping数据包的劫持,并且能收到回包。现在用用户机去ping百度,然后通过netfilter修改目的地址到服务器,服务器再通过netfilter修改数据包ip的头部,目的地址,源地址,检验和,修改为源地址为服务器,目的地址为百度,检验和修正。等收到百度的回包后再修改数据包,使数据包可以返回到用户机。
2.现在用户机发向百度的ping包成功被修改,并且ping向了服务器,服务器也修改数据包成功了(tcpdump抓到了修改后的包,且修改后的数据包的ip头部和服务器直接Ping百度的ip头部是一样的),但是收不到回包。(服务器是在pre_routing处做的修改)
*有几个问题
1.tcpdump在服务器上,抓不到用户机ping向服务器的包,却能抓到被修改后发向百度的数据包 ???
2.在forward, post_routing处,都做了hook函数,却抓不到修改后的数据包 ???
3.经查阅,tcpdump基于libpcap,libpcap是在网卡和协议栈之间复制数据包,而netfilter是在网络层抓的数据包
总结:按理说,libpcap抓到了修改后的包,呢么,数据包已经递交给了网卡了,呢就是说我的数据包被baidu丢弃了,但是我的包的Ip头部和我直接去ping百度的ip头部是一致的。而且,为什么我用netfilter在forward,post_routing处都抓不到数据包。数据包被修改后应该注意哪些点?
补充:我将服务器修改的目的地址,改为我的另一台云服务器,结果是在另一台云服务器上无法抓到这个修改后的Ping包。呢libpcap抓到的包又是在链路层,数据包会是在哪里被丢弃了呢??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论