FaceBook ATC 弱网测试工具环境搭建
原址
工具简介
ATC是FaceBook开源的移动网络测试工具Augmented Traffic Control(ATC),能够方便的让我们模拟各种网络环境进行测试。
ATC有两个最吸引人的特点:
- 在手机上通过Web界面就可以随时切换不同的网络环境。
- 多个手机可以连接到同一个WIFI下,相互之间模拟的网络环境各不影响。
搭建步骤
一、基础准备
1. 硬件准备
我这里用的是水星(Mercury)MW150U 150M无线USB网卡(别问为什么,要是你用别的网卡可以支持ap模式且有驱动也是可以的,我之前用Ralink和360wifi因为驱动和网卡本身不支持ap模式踩的坑非常多),还有,如果有树莓派玩一玩就更好了
2. 系统
ubuntu 14.04 LTS 桌面版
二、配置ubuntu下wifi
1. 检查无线网卡连接情况
我的ubuntu是安装vmware下,所以要先点击右键连接到虚拟机上(右下角的USB图标)
连接上之后,在命令行输入:lsusb
如果显示f201:5370就是我们的无线网卡的信息,说明我们识别出我们的usb无线网卡
2. 安装hostapd 和 dhcp
简单的概念解释下:
- hostapd
通过Hostapd可以将无线网卡切换为AP/Master模式,通过修改配置文件,可以建立一个开放式的(不加密)的,WEP,WPA或WPA2的无线网络 - dhcp
简单的说ip管理 - 安装
apt-get install hostapd isc-dhcp-server - 验证是否安装成功
分别敲入hostapd和dhcpd,显示命令详解则为成功
3. 配置hostapd
创建并编辑配置文件 ,在terminal中输入命令:
root@lufukeng:/#vi /etc/hostapd/hostapd.conf
配置内容如下:
interface=wlan0
driver=nl80211
ssid=autotest //wifi名字
channel=10
hw_mode=g
macaddr_acl=0
auth_algs=3
wpa=2
wpa_passphrase=12345678 //密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=TKIP CCMP
PS:除了wifi名字和密码,其他都可以一样,然后记得注释的反斜杠和内容要删掉
4.运行hostapd
terminal中输入以下命令:
root@lufukeng:/#nmcli nm wifi off
root@lufukeng:/#rfkill unblock wlan
root@lufukeng:/#killall hostapd
root@lufukeng:/#hostapd -B /etc/hostapd/hostapd.conf
hostapd -B是后台运行,-d是前台运行
5. 查询DNS,下一步备用
root@lufukeng:/# nmcli dev list iface eth0 | grep IP4IP4.ADDRESS[1]: ip = 192.168.200.131/24, gw = 192.168.200.2IP4.DNS[1]: 192.168.200.2IP4.DOMAIN[1]: localdomainIP4.WINS[1]: 192.168.200.2
查询结果,DNS:192.168.200.2
6.配置dhcpd
root@lufukeng:/#vi /etc/dhcp/dhcpd.conf
输入以下内容:
subnet 192.168.0.0 netmask 255.255.255.0{range 192.168.0.2 192.168.0.10;option routers 192.168.0.1;option domain-name-servers 192.168.200.2;//查询的DNS,前面不用改}
7.设置wlan0
root@lufukeng:/#ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
8.启动dhcp-server
root@lufukeng:/# touch /var/run/dhcp-server/dhcpd.pid
root@lufukeng:/# chmod 777 /var/run/dhcp-server/dhcpd.pid
root@lufukeng:/# dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid
9.IP转发
root@lufukeng:/#bash -c "echo 1 >/proc/sys/net/ipv4/ip_forward"
10.设置NAT
root@lufukeng:/#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
到这里,如果手机连接wifi,并正常上网则说明成功。
三、下载并配置ATC
1.安装pip
root@lufukeng:/#apt-get install python-pip
通过pip安装ATC需要的django组件:
root@lufukeng:/#pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage
2. 创建一个django工程以便使用ATC服务端app
root@lufukeng:/#django-admin startproject atcui
此时会在当前路径生成actui项目
3.修改ATC配置
切换到项目路径下,编辑配置文件
cd atcui/atcui
vi settings.py
在INSTALLED_APPS里添加如下内容:
'rest_framework',
'atc_api',
'bootstrap_themes',
'django_static_jquery',
'atc_demo_ui',
'atc_profile_storage',
vi urls.py
将urlpatterns 内容改为一下内容:
from django.views.generic.base import RedirectView
from django.conf.urls import includeurlpatterns = [url(r'^admin/',admin.site.urls),url(r'^api/v1/',include('atc_api.urls')),url(r'^atc_demo_ui/',include('atc_demo_ui.urls')),url(r'^api/v1/profiles/',include('atc_profile_storage.urls')),url(r'^$',RedirectView.as_view(url='/atc_demo_ui/', permanent=False)),]
最后切换到manage.py所在目录,更新django数据库,执行以下命令:
python manage.py migrate
4.设置网卡
配置完成然后可以运行了,这里使用网卡eth0作为公网连接,wlan0作为内网连接,启动时通过参数指定,执行以下命令:
atcd --atcd-wan eth0 --atcd-lan wlan0
5.运行ATC UI
执行启动命令:
python manage.py runserver 0.0.0.0:8000
这时通过手机浏览器访问192.168.0.1:8000,会显示没有配置过任何profile的网页,下面提供Facebook已经配置好的文件配置。
6.使用facebook已经配置好的网络配置文件
获取方式如下:
apt-get install git
git clone https://github.com/facebook/augmented-traffic-control.git
apt-get install curl
cd augmented-traffic-control
utils/restore-profiles.sh localhost:8000
好了,这个时候再次在手机浏览器上访问192.168.0.1:8000,就可以看到如下界面:
基本使用如下:
turn on //打开
select //选择
update Shaping //更新,选择网络之后,点击更新
turn off //关闭
7.启动脚本
为了方便,把以上操作步骤写在shell脚本中,每次开机之后,只要执行脚本就可以启动项目和wifi,暂时没有配置成开机启动脚本
start-up.sh
#!/bin/bash
nmcli nm wifi off
sudo rfkill unblock wlan
sudo killall hostapd
sleep 2
sudo hostapd -B /etc/hostapd/hostapd.conf
sleep 3
sudo ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
sleep 1
sudo touch /var/run/dhcp-server/dhcpd.pid
sudo chmod 777 /var/run/dhcp-server/dhcpd.pid
sudo dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid
sleep 3
sudo bash -c "echo 1 >/proc/sys/net/ipv4/ip_forward"
sleep 1
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sleep 1
cd /home/lufukeng/Desktop/atcui/
nohup sh atcd.sh >atcd.log &
sleep 3
nohup sh start-atcserver.sh >atcserver.log &
sleep 3
atcd.sh
#!/bin/bash
atcd --atcd-wan eth0 --atcd-lan wlan0
start-atcserver.sh
#!/bin/bash
python manage.py runserver 0.0.0.0:8000
8.最后附上一份网络参数配置
Name (网络名称) | 延迟(latency) | 网络带宽(bandwidth) | 丢包率(packet loss) |
---|---|---|---|
GPRS (good) | 500 | 50 | 2 |
EDGE (good) | 300 | 250 | 1.5 |
3G/HSDPA (good) | 250 | 750 | 1.5 |
DIAL-UP (good) | 185 | 40 | 2 |
DSL (poor) | 70 | 2000 | 2 |
DSL (good) | 40 | 8000 | 0.5 |
WIFI (good) | 40 | 30000 | 0.2 |
Satellite | 1500 | - | 0.2 |
可以根据自己的需要进行配置
至此,搭建结束,童鞋们可以根据自己的需要进行使用了。
参考文献
Facebook网络模拟测试工具ATC使用
Facebook/atc环境搭建总结
FaceBook ATC 弱网测试工具环境搭建相关推荐
- Facebook ATC弱网环境搭建
本文记录如何利用facebook ATC使用搭建一个弱网环境,与前一篇Dash net(网速控制,可变)类似,但是这个弱网环境不能动态变化,相比DASH_NET好处在可以连接多个设备,分别控制网速 为 ...
- tcp连接测试工具_“国货之光”!国产弱网测试神器 QNET,比主流弱网测试工具强在哪?...
弱网测试,是软件测试不可缺少的一个环节,但目前主流的一些弱网测试工具,或多或少暴露了一些缺点,这工具称不称手只有自己知道. 最近腾讯出了一款弱网测试神器 QNET,被誉为测试行业的"国货之光 ...
- Qnet弱网测试工具操作指南
Qnet弱网测试工具操作指南 一.下载安装 Qnet官网下载地址:https://wetest.qq.com/product/qnet/ 注:目前只支持Android版本,iOS暂不支持 二.特点 1 ...
- 测试丢包_入行游戏测试之弱网测试工具
接上次的弱网测试要点,今天我想写一下一些常用的弱网测试工具: 一.谷歌浏览器自带的开发者工具 想起我去年一次短暂的三月份棋牌测试时间,后端是用java,客户端是用json?引擎是cocos? 一不小心 ...
- 弱网测试工具使用--web/pc/app
各端弱网测试工具使用 涉及到web端和移动端: windows系统下推荐使用clumsy,clumsy工具简单易上手,可以上下行网络的延迟和丢包. clumsy工具下载地址:http://jagt.g ...
- 弱网测试工具-qnet
备注:个人学习笔记整理,仅供测试同学学习,切莫转载商用,有错误或者更好的方案可以留言,一同进步! 参考学习: https://www.cnblogs.com/quark/p/10734587.html ...
- (转)Facebook ATC弱网环境搭建
用户的网络环境并不是一直处于能高速传输的状态,网络的好坏受用户所处地理位置,同一基站使用人数等许多因素影响.百度公开的数据显示,百度APP使用者约有1%的人群处于弱网状态.所以研究弱网测试,来提升这部 ...
- 弱网测试工具以及模拟真实的网络环境
弱网测试的情况和意义我就不讲了,基本上浏览器搜一下就清楚了,我这里主要是讲下我在实际测试环境中对弱网的工具选择以及怎么去模拟真实的网络环境. 弱网工具 现在网络上用于限制网络的工具有很多,我这里主要介 ...
- IOS开发者自带弱网测试工具界面说明NETWORK LINK CONDITIONER
IOS手机的开发者自带了弱网模拟工具,以下是界面说明,便于大家使用时自行配置使用.测试工具NETWORK LINK CONDITIONER. 1.准备环境,设置中调出:开发者选项(如果没有,需要真机联 ...
最新文章
- css 固定内容显示范围,css之让文字在一定范围内显示,不超过固定的宽度和高度...
- 安卓学习笔记13:安卓触摸事件
- Django视图层:URL调度器、Django处理一个请求、URLconf在查找什么?URL:①path()路径、②路径转换器Path converter、③正则表达式组re_path()
- 致远互联携手华为云启动开发者大赛,加速企业应用定制向平台生态转型
- LeetCode() Reorder List
- 喜庆博客积分排名进入前3万
- MI(mutal information)and Entropy
- 关于RIGOL可编程电源连接说明(网口连接)
- linux系统编译dfu
- linux卸载带输入法,Ubuntu删除自带的输入法之后设置不见了
- 第十二章:email-mailbox:管理email归档-imaplib:IMAP4客户库-邮箱状态
- 打开PDF文件需要使用什么软件?看完你就明白了
- 电脑外接硬盘,磁盘管理处显示动态磁盘,无效,解决办法
- (87)--Python数据分析:指数密度函数与指数分布图
- Elaticsearch安装越南语分词器
- lol退出后显示服务器繁忙,LOL:近期客户端问题汇总,出现这些不是因为玩家,是系统的锅...
- 微信报名系统源代码,可二开(VS2015+SQL2008)
- [RK3288][Android6.0] 一律运行WLAN漫游扫描选项
- 通行费电子发票可以抵扣吗?通行费电子发票怎么打印?
- ITIL新手10问(zt)
热门文章
- 【Python】区分List 和String
- 关于maven modules开发时候,eclipse的dubug模式不能找到源代码
- 与众不同 windows phone (23) - Device(设备)之硬件状态, 系统状态, 网络状态
- 详解linux netstat输出的网络连接状态信息
- NFS 服务固定端口
- JDBC连接数据库集
- java 数组 存储_Java-将数组存储到内存或从内存上传到磁盘
- 执行conda install tensorflow solving environment一直转圈圈,Anaconda无法打开的问题
- 对象删除某个属性_JS对象基本用法
- jquery的ajax异步请求接收返回json数据