当前位置: 技术问答>linux和unix
如何在路由器上修改数据包
来源: 互联网 发布时间:2017-05-26
本文导语: 1.某台内网机器,比如访问百度,我在路由器上能否将这个包替换掉? 2.某台内网机器访问百度后,百度服务器返回数据到路由之后,路由是怎么将数据转发给内网机器的? 我能否在路由器上将这部数据包改掉?或者只是修改...
1.某台内网机器,比如访问百度,我在路由器上能否将这个包替换掉?
2.某台内网机器访问百度后,百度服务器返回数据到路由之后,路由是怎么将数据转发给内网机器的?
我能否在路由器上将这部数据包改掉?或者只是修改下重新发送就可以。
|
这是路由器的技术吧,一般家用路由器是不是没有办法编辑,或者可不可以说是ROM,以前配置的都是那种多口的路由交换,在计算机上你只能拿到路由器权限后进入之后,家用的看他提供给你的功能吧,非家用的那种试着应该能改,有ACL的。
|
从“路由器”的严格定义上来说是不可以的,因为路由器的功能就是路由数据包。当然,路由器必须修改包的链路层信息(mac地址)才能路由,所以其实也算是修改了数据包的。
现在的路由器(90年代以后)还有了其它的功能,比如acl,nat,那么就会拦截数据包,修改网络层信息(比如五元组)。代理服务器修改的就更多。
如果你搞协议分析开发,把自己的机器做成网关,带路由等功能,你想怎么改,就怎么改。
你可以捕获缓存访问百度的某台机器的数据包和返回的报文(libpcap+libnet可以做非生产等级的实现),修改后转发,你可以实现:把ip地址换成另外一个,百度发回的报文你也可以把内容换掉,修改ua,在移动核心网里还可以修改电话号码、手机串号、基站信息(lac、rac、sac)等等。
前提是处理能力,libpcap+libnet这种库在生产系统上是基本上搞不定的。但是它可以告诉你的是,只要你对协议(这得努力看rfc文档)充分理解,网络数据包就是数据,什么socket的都是浮云,防火墙、路由、负载均衡、应用网关......基本原理都是在捕获/缓存/修改/转发数据包。
剩下的就是修炼算法、数据结构,来应付每秒钟几十万到几千万的数据包,且不会让用户觉察。
库函数、语法、协议规范神马滴都是死的,任何一个能认字的人都可以干得了(神州的“程序员”95%都是这种货),程序员是能够在自己代码里构建合适的数据结构,熟练运用大多数通用算法,让自己的程序能够以最高效率处理人处理不了的事务的工种。而不是腆着脸把堆代码、砌函数就敢称为编程的傻货。(有感而发,切勿对号入座)
现在的路由器(90年代以后)还有了其它的功能,比如acl,nat,那么就会拦截数据包,修改网络层信息(比如五元组)。代理服务器修改的就更多。
如果你搞协议分析开发,把自己的机器做成网关,带路由等功能,你想怎么改,就怎么改。
你可以捕获缓存访问百度的某台机器的数据包和返回的报文(libpcap+libnet可以做非生产等级的实现),修改后转发,你可以实现:把ip地址换成另外一个,百度发回的报文你也可以把内容换掉,修改ua,在移动核心网里还可以修改电话号码、手机串号、基站信息(lac、rac、sac)等等。
前提是处理能力,libpcap+libnet这种库在生产系统上是基本上搞不定的。但是它可以告诉你的是,只要你对协议(这得努力看rfc文档)充分理解,网络数据包就是数据,什么socket的都是浮云,防火墙、路由、负载均衡、应用网关......基本原理都是在捕获/缓存/修改/转发数据包。
剩下的就是修炼算法、数据结构,来应付每秒钟几十万到几千万的数据包,且不会让用户觉察。
库函数、语法、协议规范神马滴都是死的,任何一个能认字的人都可以干得了(神州的“程序员”95%都是这种货),程序员是能够在自己代码里构建合适的数据结构,熟练运用大多数通用算法,让自己的程序能够以最高效率处理人处理不了的事务的工种。而不是腆着脸把堆代码、砌函数就敢称为编程的傻货。(有感而发,切勿对号入座)
|
如果你的路由器是基于Linux系统,用netfilter就可以很容易办到。你需要做的就是写两个netfilter内核模块,一个match模块用于匹配指定的网站URL,一个target模块用于修改报文。做这些之前你得熟悉内核netfilter的实现,并且对IP,TCP和HTTP协议都有较深入的理解,最好是看过相关的RFC文档,比如明白修改TCP报文后需要重新计算checksum、TCP的seqence number要根据修改后的报文长度进行修改、甚至需要对http服务器端发TCP reset断开连接而由路由器对内网伪装成http服务器(类似于黑客技术里面的中间人攻击)等等。我以前做过类似模块,不过出于商业原因不能将代码开放出来,不过我记得CU论坛的内核源码版以前有人问过类似的问题,你可以去CU论坛找找看,相较于CSDN论坛CU在Linux方面更专业、大牛也更多。