• 欢迎访问老司机不开车的博客,,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入 TG群 QQ群
  • 10z4.com 老司机不开车提醒您:回复"666666"无需人工审核,禁止带HTTP连接和联系方式广告留言。即可查看文章!Gmail邮箱的都需要审核!
  • 廣告招租!衹接受比特幣和萊特幣付款。廣告沒有限制!有意向聯係 TG_1024

你的请求是如何被运营商劫持的?|被运营商劫持了怎么办?

学习 老司机 1年前 (2017-09-15) 983次浏览 0个评论

大多数的引导和劫持都是到 cache 设备上的,做 cache 有诸多好处,比如对于运营商而言可以节省网间流量(省钱)、提高用户体验(静态内容、视频等加速),对于网站主通过 CDN 做了 cache 后可以提高
大多数的引导和劫持都是到 cache 设备上的,做 cache 有诸多好处,比如对于运营商而言可以节省网间流量(省钱)、提高用户体验(静态内容、视频等加速),对于网站主通过 CDN 做了 cache 后可以提高用户体验(加速),当然也有非法获利者通过 cache 设备洗流量加广告等也挣到了钱,那么这个过程他们是怎么把一个请求引导到他们的服务器上的呢???原理是什么???
一、DNS 正常引导
1、cname 引导
此引导方式是大多数 CDN 厂商的做法,面向各网站主,用 cname 的方式为其提供接入 CDN 系统的入口,在操作上,一般 CDN 厂家会提供一个域名供网站主做 cname 使用,在做完 cname 的那一刻,你连接的服务器就由 CDN 厂家来控制了,也就成功将用户请求智能的引导到他们的设备上去了。另外,要正常提供服务,主要得关注两个问题,一个是 cname 解析,另一个是网站回源问题。关于 cname 的介绍可参考之前写的:CDN 工作原理
2、forword 引导
此引导方式是大多数运营商的做法,他们有自己的 DNS,有自己的宽带用户、专线用户、无线用户,为了节省网间流量成本的同时提高用户体验,他们会自建或找 cache 厂家合作进行 cache 集群建设,拿 cache 厂家为例,在操作上,运营商或 cache 厂家会先分析出一批可以做缓存的网间域名,然后将这些域名 forword 到 cache 厂家自建的 DNS(二次开发后适合 cache 配置的)上,cache 厂家的 dns 根据不同的解析规则(比如轮序、hash 等)解析到后端的 cache 集群,进而成功的将用户请求引导到了 cache 厂家的设备上,每台缓存代理服务器会安装 bind 并配置回源 DNS(或者直接根域回源)。当然 cache 厂家也做了很好的高可用策略,比如说 cache 集群挂了访问直接回源、两台 DNS 做高可用等等。
有童鞋问运营商为什么要用 forword 递归的方式,而不是迭代指定 dns 的方式.先说一下迭代和递归的区别,举个例子,你向 A 询问什么是互联网,A 不知道,他告诉我让我问 B 或 C 然后就不管了,这叫迭代,但同样如果 A 不知道,但他说虽然我不知道但我向 B 或 C 问清楚后再告诉你,这就是递归,很清楚了吧。递归有个好处,每经过的环节能够做到信息同步,所以用递归处理。下面是一个精简的业务架构原理图:

二、劫持污染
劫持和污染是运营商进行请求引导的另外一种重要方式,在操作上会在入口链路上使用分光设备将流量复制一份,复制后的流量使用流量分析设备进行分析处理,由于更靠近网内网民,设备会将要劫持的请求抢先将伪造的结果回传给用户,而这个结果就是欺骗网民去访问指定的服务器,从而达到将请求劫持到 cache 服务集群上的效果,从劫持的请求看分为 dns 劫持和 http 劫持。有些同学叫这种 dns 引导方式为 dns 污染,因为感觉只是伪装回复没有劫持,反正不管怎么叫,都是这么一个理,画了一张业务流程架构图如下:

1、DNS 劫持(污染)
DNS 劫持(污染)是指流量分析劫持设备在分析到需要的 DNS 查询请求后(一般为 udp53 号端口,要抓取的 dns 的 ip 地址设置白名单),抢先伪装一个 DNS 回复请求给用户,为什么会抢先呢,因为用户和流量分析劫持设备是网内对网内,不管是时延也好还是其它链路质量也好,都要比网间要快很多很多,而 udp 的特点是没有验证机制,用户会接受第一个查询结果,其余的将会被抛弃。

2、http 请求劫持
http 请求劫持是指流量分析劫持设备在分析道需要的 http 请求后,伪装客户端给源站发一个 reset 标记断开连接,然后伪装源站给用户回一个 302 重定向到 cache 设备上,比如说你访问的是 www.aaa.com/123.html,cache 设备是 1.1.1.1,被劫持后会发一个 http://1.1.1.1/www.aaa.com/123.html 的 302 重定向给用户,用户自然就被引导到 1.1.1.1 上面了。

三、透明代理引导
透明代理是将 cache 设备作为中间网关串联到链路中去的,作为网关其实说白了 cache 设备要开启路由转发,承担了路由器的作用,很多大的企事业单位为什么节约流量,会在其出口上安装一台这样的设备,比如说原来需要买两个 G 带宽,在做了透明代理后只需要买 1.5 个 G 了,的对于用户而言没有任何需要操作的,所以叫透明代理。
透明代理也有两种方式,都是基于 iptable,一种是基于端口转发,将目的地址是 80 的请求,转发到本地启用的比如说 8080 的 cache 应用上,由 cache 应用处理后为客户提供服务,这种方式的弊端是有可能影响一些服务,因为 80 端口过来不一定全是 http 请求。另外一种是采用 tcp 旁路监听代理的方式 tproxy,此种方式是非常好的,配置 iptable 的 mangle 表的 PREROUTING 链,对 tcp 的 socket 的连接打上 mark 标记,然后新建路由表让打过标记的 tcp 通过,监听目的端口是 80 的 tcp 通过 tproxy 代理至 8080 的 cache 应用上,由 cache 应用处理后为客户提供服务。
操作上,服务器要开启路由转发、开启 iptable,要安装缓存代理软件,然后进行相应的配置,当然在高可用性上要做到对路由的心跳,一旦代理服务器故障,直接跳过代理服务器到下一跳,保证业务的持续性。

 

也许会对这些文章感兴趣

什么是 DNS 劫持?如何判断 DNS 是否被运营商劫持?DNS 劫持简单分析

 

什么是 HTTP 劫持? 什么是 HTTP 会话劫持?HTTP 劫持简单分析


10z4 , 版权所有丨如未注明 , 均为原创丨本网站采用CC BY 4.0协议进行授权 , 转载请注明你的请求是如何被运营商劫持的?|被运营商劫持了怎么办?
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址