The distinguish of ios and android device traffic through cluster
一.Mobile 为什么需要vpn
(1)如果没有vpn,mobile用户流量怎么导入到cloud里面?mobile用户不像pc终端一样可以安装endpoint或者直接在浏览器里面设置代理服务器,所以我们需要一种方案可以把pac file url的地址使mobile知道。
(2)经过vpn服务器处理的流量,http头部里面都加入了x-ws-auth字段,方便被proxy server认证.
二.iOS device
1.拓扑
10.250.70.111是mvc的地址,这个地址通过ifconfig查不到,使用ip a来看
2.包结构
(1)首先mobile打开浏览器,输入网站地址,这个动作会触发vpn连接(为什么vpn会连接?因为vpn隧道保护的是所有流量,所以vpn会自动启动)。浏览器从vpnprofile中获取pac file url地址,然后去这个地址获取pac file的内容。然后将要访问的网站地址和pac file的内容进行匹配,如果匹配到了,就直接返回了proxy的地址。
(2)浏览器知道了proxy的地址应该是“webdefence-cn-mobile-it.odd.blackspider.com:8081”,然后使用dns去查找这个域名的ip地址,因为有vpn隧道,所以这个查询的流量应该传到cluster里面。首先我们pingwebdefence-cn-mobile-it.odd.blackspider.com看看回显的地址是多少?
[root@mvc01o ~]# ping webdefence-cn-mobile-it.odd.blackspider.com
PINGwebdefence-cn-mobile-it.odd.blackspider.com (10.32.14.73) 56(84) bytes of data.
64 bytes from 10.32.14.73:icmp_seq=1 ttl=64 time=0.189 ms
可以看到这个地址是10.32.14.73,所以ios mobile出发经过vpn隧道的流量的目的都是10.32.14.73.
(3)因为流量需要经过vpn隧道,所以数据包再进行封装,在原数据包的前面加上vpn隧道两端的ip地址,以及esp头部。封装之后为
新源ip(10.32.145.136)----新目的ip(10.250.70.11)----ESP----源ip(10.32.145.136)-----目的ip(10.32.14.73)
这是在fw上抓的经过esp加密的数据包
(4)当流量到达mvc之后,mvc解密并且解封装该流量,解封装之后数据包的格式为:
源ip(10.32.145.136)-----目的ip(10.32.14.73)
(5)然后进行数据包的重组,将数据包的源ip改成自己的出口ip(因为数据包的源ip是10.32.145.136,这是一个私网地址,对于prx来说它并不认识这个地址,所以需要将数据包的源ip进行更改),也就是10.250.70.111,目的地址依然是proxy的地址10.32.14.73,并且在http头部中加入x-ws-auth,在mvc上抓包。
但是抓到包的目的地址是10.250.42.10,why????????10.250.42.10不是fw的接口地址吗?目的不应该是10.32.17.73吗???为什么跟分析的不一样呢?
想了好久,终于想通了原因!!!!
回到上面的第(2)步,使用dns到cluster里面去查找“webdefence-cn-mobile-it.odd.blackspider.com”的ip地址,觉得应该是10.32.14.73。仔细想想,当查询dns的流量被mvc解密之后,mvc会把流量传到dns server去解析这个域名对应的ip地址,但是这个dns查询流量在到达dns server之前,会经过fw,fw是一个load balance,fw会直接回复自己接口的ip地址,因为这个域名“webdefence-cn-mobile-it.odd.blackspider.com”的proxy是fw load balance的一部分。所以mobile得到的dns应答的ip地址应该是fw的接口ip地址“10.250.42.10”,所以从mobile到vpn server的流量不是
新源ip(10.32.145.136)----新目的ip(10.250.70.11)----ESP----源ip(10.32.145.136)-----目的ip(10.32.14.73)
而应该是
新源ip(10.32.145.136)----新目的ip(10.250.70.11)----ESP----源ip(10.32.145.136)-----目的ip(10.250.42.10)
X-Ws-Auth
The algorithm looks like thefollowing:
Function string AES (stringData, string key);
Encrypted Blob = AES (Blob, AES(“www.google.com”, “Shared secret”));
Decrypted Blob
Username,Device id,UDID etc
(5)流量到达了prx之后,prx首先验证x-auth头,如果验证通过(判断该使用default policy,还是specific policy),则prx查看htttp get 头部,如果这个website跟web category里面的想匹配,并且action是deny,那么prx将会发送一个code 200 forbidden给mvc,然后mvc通过vpn把网页内容传给mobile。在prx上抓包tcpdump -i any port 8081 -s 0 -w *.cap
3.总结
Fw-ip:10.250.42.10
Mvc_ip:10.250.70.111
Prx:10.250.0.171
Vpn(解密之后的流量)---fw----prx---fw
Mvc: 10.250.70.111------》10.250.42.10
Fw : 10.250.70.111-------》10.250.42.10
10.250.70.111------》10.250.0.171
Prx: 10.250.70.111------》10.250.0.171
流量从mobile出来经过vpn到达mvc,mvc处理数数据包,把流量传到fw,fw处理数据包,通过load balance策略把数据传到真实的prx,prx认证用户并且匹配policy,然后根据policy的action来决定下一步动作。
三.AndroidDevice
1.拓扑
2.包结构
(1)跟ios device一样,先取pac file,然后去查询pac file中域名的ip地址。但是android device 跟ios device不一样,从ios device出来的流量都是要经过vpn隧道,然后流量被vpn server解封装,而android device的vpn隧道就在device里面完成了,所以出来的流量还是明文的,所以查询域名的dns server并不是cluster里面的netboot服务器,而是mobile device设置的dns server,所以这个域名“webdefence-cn-mobile-it.odd.blackspider.com”的ip地址就是10.32.14.73。从mobile发出的流量为:(http头部里面也是有X-Ws-Auth)
源ip10.32.145.159-----》目的ip10.32.14.73
(2)因为数据都是明文的,所以fw可以直接抓包tcpdump -i any port 8081 -s 0 -w *.cap
当fw收到去proxy的数据包的时候,还是要使用load balance的功能,所以fw会把目的ip修改为proxy真实的地址10.250.0.171
初始数据包
源ip10.32.145.159-----》目的ip10.32.14.73
Fw load balance之后
源ip10.32.145.159-----》目的ip10.250.0.171
(3)在mvc上抓包,发现没有任何8081的流量,说明andorid device的流量不会经过mvc,因为vpn在mobile本地被封装和解封装了。
(4)在prx上抓包tcpdump -i any port 8081 -s 0 -w prx_8081_android.cap
3.总结
Pac_file_ip:10.32.14.73
mobile_ip:10.32.145.159
Prx:10.250.0.171
Fw:10.32.145.159---à10.32.14.73
10.32.145.159---à10.250.0.171
Prx: 10.32.145.159--à10.250.0.171
流量从android mobile经过vpn封装、解封装以及添加x-ws-auth头部之后到达mvc,mvc处理数数据包,把流量传到fw,fw处理数据包,通过load balance策略把数据传到真实的prx,prx认证用户并且匹配policy,然后根据policy的action来决定下一步动作。
------------------------------------------------------------
1. Mobile Security
为什么需要vpn?
(1) 如果没有vpn,mobile用户流量怎么导入到cloud里面?mobile用户不像pc终端一样可以安装endpoint或者直接在浏览器里面设置代理服务器,所以我们需要一种方案可以把pacfile url的地址使mobile知道。
(2) 经过vpn服务器处理的流量,http头部里面都加入了x-ws-auth字段,方便被proxyserver认证.
2. iOS device
10.250.70.111是mvc的地址,这个地址通过ifconfig查不到,使用ip a来看
(1)首先mobile打开浏览器,输入网站地址,这个动作会触发vpn连接(为什么vpn会连接?因为vpn隧道保护的是所有流量,所以vpn会自动启动)。浏览器从vpnprofile中获取pacfile url地址,然后去这个地址获取pacfile的内容。然后将要访问的网站地址和pacfile的内容进行匹配,如果匹配到了,就直接返回了proxy的地址。然后mobile将目的地址改成proxy的地址,也就是10.250.0.171.
源ip(10.32.145.136)-----目的ip(10.250.0.171)
(2)因为流量需要经过vpn隧道,所以数据包再进行封装,再源数据包的前面加上vpn隧道两端的ip地址,以及esp头部。封装之后为
新源ip(10.32.145.136)----新目的ip(10.250.70.11)----ESP----源ip(10.32.145.136)-----目的ip(10.250.0.171)
(3)当流量到达mvc之后,mvc解密并且解封装该流量,解封装之后数据包的格式为:
源ip(10.32.145.136)-----目的ip(10.250.0.171)
在prx上抓包tcpdump-i any port 443 or port 8081 or port 80 and host 10.250.70.111 -s 0 -w *.cap
因为android设备的加密和解密都在android设备上完成的,所以数据包从mobile出来的时候没有外层的封装,并且该流量是明文的。
在fw抓包tcpdump-i any host 10.32.145.159 -s 0 -wfw_ios_could_163.cap
并且数据包从mobile出来的时候已经打了x-ws-auth的认证消息,所以流量不会经过vpn,流量是直接到的prx,所以目的地址是10.250.0.171
The distinguish of ios and android device traffic through cluster相关推荐
- 如何阻止YouTube在iOS,Android和Web上自动播放视频
Over at YouTube, they love it when you watch more YouTube. If you're sick of YouTube automatically q ...
- HTML 5 会让iOS和Android开发者转行吗?
我们第一次谈论 HTML5 要改变世界大概是因为乔布斯,他坚持在 iOS 上不兼容 Flash,在 Adobe 统治多媒体开发的那个年代,这需要付出极大的勇气.这么多年过去了,虽然所有人都在谈论 HT ...
- 适用于 iOS、Android 和 Windows 设备的移动设备管理
适用于 iOS.Android 和 Windows 设备的移动设备管理 随着企业环境中移动设备的数量不断增加,详细检查访问您企业资源的移动设备变得至关重要.统一终端管理软件 Desktop Centr ...
- 基于DLNA实现iOS、Android投屏:基本概念
http://geek.csdn.net/news/detail/58920 由于我司需求,需要在iOS和安卓客户端实现DLNA投屏和控制.经过一番折腾,决定由我来研究DLNA.说起来又兴奋又紧张,兴 ...
- Cocos2D-X Tutorial for iOS and Android: Getting Started
Cocos2D is an amazing and easy to use framework, but since it's written in Objective-C you can only ...
- cocos android 播放视频,Cocos2d-x IOS 和Android播放视频
本篇文章会给大家介绍在对IOS 和Android开发时,是如何实现播放视频这个功能的,下面就分别给大家介绍下. 一. iOS播放本地视频 对于ios平台的视频播放,这里直接使用MediaPlayer. ...
- Appium统计iOS或者Android应用的性能
目录 1.手动统计方法 2.自动化统计方法 3.问题记录 我们知道可以通过Appium来控制iOS或者Android设备,进而做一些自动化测试的任务,那么如果我们想收集应用(APP)的基础性能数据呢? ...
- iOS vs Android 系统架构
iOS是基于UNIX内核,Android是基于Linux内核,iOS和android作为两款优秀的手机操作系统,他们有共性有区别. iOS的系统架构 分为四个层次: 核心操作系统层(Core OS l ...
- ios静态库和代码同名_使用一个代码库开始制作NativeScript iOS和Android应用程序
ios静态库和代码同名 Users can choose whatever operating system they prefer, but every operating system use d ...
最新文章
- facebook maskrcnn 安装笔记
- 《Android的设计与实现:卷I》——第2章 框架基础JNI
- XML和HTML有什么区别?两者之间有什么关联?
- metadata model entry in /IWFND/CL_MED_MDL_SVC_GRP
- Git commit后,本地代码丢失解决方法
- 谈谈你对AOP的理解
- Java SimpleTimeZone inDaylightTime()方法及示例
- C++Primer学习之二#define,const,constexpr
- jstree中json data 的生成
- java块语句_Java运算符、表达式、语句块
- 力压微信成 App Store 榜第一,子弹短信能否避免火一把就“死”?| 畅言
- shp地图如何导入奥维地图手机_如何将CAD图导入到手机版奥维互动地图
- 探索性测试ET(Exploratory Test)
- 基于CNN的IMDB电影数据集文本分类
- L-ScanPort2.0beta版+完整源代码
- Excel如何批量删除公式只保留数值
- TypeScript基础入门之Symbols
- 手机如何从网页完美的跳转到应用程序
- 57.音乐播放器的进度条
- 聊聊Java的单元测试