一.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)

(4)然后进行数据包的重组,将数据包的源ip改成自己的出口ip(因为数据包的源ip是10.32.145.136,这是一个私网地址,对于prx来说它并不认识这个地址,所以需要将数据包的源ip进行更改),也就是10.250.70.111,目的地址依然是proxy的地址10.250.0.171,并且在http头部中加入x-ws-auth,像下面一样

(5)流量到达了prx之后,prx查看htttpget 头部,如果这个website跟web category里面的想匹配,并且action是deny,那么prx将会发送一个code200 forbidden给mvc,然后mvc通过vpn把网页内容传给mobile。

在prx上抓包tcpdump-i any port 443 or port 8081 or port 80 and host 10.250.70.111 -s 0 -w    *.cap

3.      Android Device

因为android设备的加密和解密都在android设备上完成的,所以数据包从mobile出来的时候没有外层的封装,并且该流量是明文的。

在fw抓包tcpdump-i any  host 10.32.145.159 -s 0 -wfw_ios_could_163.cap

10.32.145.159是mobile的地址

可以看到数据包没有被vpn封装。

并且数据包从mobile出来的时候已经打了x-ws-auth的认证消息,所以流量不会经过vpn,流量是直接到的prx,所以目的地址是10.250.0.171

The distinguish of ios and android device traffic through cluster相关推荐

  1. 如何阻止YouTube在iOS,Android和Web上自动播放视频

    Over at YouTube, they love it when you watch more YouTube. If you're sick of YouTube automatically q ...

  2. HTML 5 会让iOS和Android开发者转行吗?

    我们第一次谈论 HTML5 要改变世界大概是因为乔布斯,他坚持在 iOS 上不兼容 Flash,在 Adobe 统治多媒体开发的那个年代,这需要付出极大的勇气.这么多年过去了,虽然所有人都在谈论 HT ...

  3. 适用于 iOS、Android 和 Windows 设备的移动设备管理

    适用于 iOS.Android 和 Windows 设备的移动设备管理 随着企业环境中移动设备的数量不断增加,详细检查访问您企业资源的移动设备变得至关重要.统一终端管理软件 Desktop Centr ...

  4. 基于DLNA实现iOS、Android投屏:基本概念

    http://geek.csdn.net/news/detail/58920 由于我司需求,需要在iOS和安卓客户端实现DLNA投屏和控制.经过一番折腾,决定由我来研究DLNA.说起来又兴奋又紧张,兴 ...

  5. 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 ...

  6. cocos android 播放视频,Cocos2d-x IOS 和Android播放视频

    本篇文章会给大家介绍在对IOS 和Android开发时,是如何实现播放视频这个功能的,下面就分别给大家介绍下. 一. iOS播放本地视频 对于ios平台的视频播放,这里直接使用MediaPlayer. ...

  7. Appium统计iOS或者Android应用的性能

    目录 1.手动统计方法 2.自动化统计方法 3.问题记录 我们知道可以通过Appium来控制iOS或者Android设备,进而做一些自动化测试的任务,那么如果我们想收集应用(APP)的基础性能数据呢? ...

  8. iOS vs Android 系统架构

    iOS是基于UNIX内核,Android是基于Linux内核,iOS和android作为两款优秀的手机操作系统,他们有共性有区别. iOS的系统架构 分为四个层次: 核心操作系统层(Core OS l ...

  9. ios静态库和代码同名_使用一个代码库开始制作NativeScript iOS和Android应用程序

    ios静态库和代码同名 Users can choose whatever operating system they prefer, but every operating system use d ...

最新文章

  1. facebook maskrcnn 安装笔记
  2. 《Android的设计与实现:卷I》——第2章 框架基础JNI
  3. XML和HTML有什么区别?两者之间有什么关联?
  4. metadata model entry in /IWFND/CL_MED_MDL_SVC_GRP
  5. Git commit后,本地代码丢失解决方法
  6. 谈谈你对AOP的理解
  7. Java SimpleTimeZone inDaylightTime()方法及示例
  8. C++Primer学习之二#define,const,constexpr
  9. jstree中json data 的生成
  10. java块语句_Java运算符、表达式、语句块
  11. 力压微信成 App Store 榜第一,子弹短信能否避免火一把就“死”?| 畅言
  12. shp地图如何导入奥维地图手机_如何将CAD图导入到手机版奥维互动地图
  13. 探索性测试ET(Exploratory Test)
  14. 基于CNN的IMDB电影数据集文本分类
  15. L-ScanPort2.0beta版+完整源代码
  16. Excel如何批量删除公式只保留数值
  17. TypeScript基础入门之Symbols
  18. 手机如何从网页完美的跳转到应用程序
  19. 57.音乐播放器的进度条
  20. 聊聊Java的单元测试

热门文章

  1. 自动语音识别技术(ASR)在聋哑儿童计算机辅助教学中的开发与应用
  2. 一云一湖一平台,智IT慧应用见未来
  3. HCIP-3 ---MGRE
  4. React群聊组合头像
  5. 14个超级牛X的免费开源小工具!
  6. 多人开源博客系统 - 再搜集
  7. java excel 列数_计算Excel工作表列中的行数(提供的Java代码)
  8. 《我的世界》Python编程入门(4)欢迎回家!
  9. 限时下载 | 福建省区块链协会官方材料《区块链落地案例选集》
  10. 逻辑面试题之:A说B说谎,B说C说谎,C说AB说谎,那么谁说的是真话谁说的是假话