[转]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 IP4
IP4.ADDRESS[1]: ip = 192.168.200.131/24, gw = 192.168.200.2
IP4.DNS[1]: 192.168.200.2
IP4.DOMAIN[1]: localdomain
IP4.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 include
urlpatterns = [
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 |
可以根据自己的需要进行配置
至此,搭建结束,童鞋们可以根据自己的需要进行使用了。
参考文献
作者:dancingking
链接:https://www.jianshu.com/p/fb4824fd5bbc
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
[转]FaceBook ATC 弱网测试工具环境搭建的更多相关文章
- APP弱网测试工具(QNET)
QNET介绍官网链接:https://wetest.qq.com/product/qnet 目前在测试移动设备上进行弱网络专项测试的方案主要有两种: 通过Android设备连接到PC上进行弱网络测试, ...
- Xcode弱网测试工具
Network Link Conditioner Network Link Conditioner工具是Mac下提供的一个弱网测试工具. 安装Network Link Conditioner Xcod ...
- Facebook ATC弱网环境搭建
用户的网络环境千姿百态,弱网的.高延时的.丢包的.常有用户反馈偶发bug,我们测试人员却始终无法复现,根据用户的描述,开发排查可能是网络不稳定导致的,所以急需建个弱网环境来测试. 弱网工具简介: Au ...
- facebook atc弱网环境搭建和踩坑总结
facebook atc介绍 Augmented Traffic Control(又名atc)是一种模拟网络状况的工具.由facebook开源,是一个允许开发人员控制设备与互联网连接的项目.atc可以 ...
- pylot测试工具环境搭建
1.下载Pylot:www.pylot.org/ 2. 安装Python 2.5 + (必须) 3. 安装wxPython(可选 - 用于GUI模式) 4. 安装numpy的(可选 - 用于报告以图表 ...
- 弱网测试—Network-Emulator-Toolkit工具
参考别人网址:http://blog.csdn.net/no1mwb/article/details/53638681 弱网测试,属于健壮性测试:怎么样去做弱网测试呢? 一.安装弱网测试工具-Netw ...
- 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(15)-Fiddler弱网测试,知否知否,应是必知必会
1.简介 现在这个时代已经属于流量时代,用户对于App或者小程序之类的操作界面的数据和交互的要求也越来越高.对于测试人员弱网测试也是需要考验自己专业技术能力的一种技能.一个合格的测试人员,需要额外关注 ...
- App弱网测试与常用模拟工具
iOS平台,通过自带的开发者选项 >Network Link Conditioner, 即可简单的模拟各种速度的网络情况: 通过抓包工具,设置延迟,进行模拟不同的网络情况,比如常用的fiddle ...
- 『言善信』Fiddler工具 — 14、使用Fiddler进行弱网测试
目录 1.什么是弱网测试 2.弱网环境的影响 3.弱网环境测试场景 4.使用Fiddler进行弱网测试 (1)Fiddler模拟弱网环境 (2)设置弱网的参数 (3)进行弱网测试对比 (4)恢复设置 ...
随机推荐
- #import @import #include
1.在xcode5以后 ,Replace #import <Cocoa/Cocoa.h> with @import Cocoa; 在这之前 必须手动设置一下才能用. 2.#import 与 ...
- redis05----Redis 中的事务
Redis支持简单的事务 Redis与 mysql事务的对比 Mysql Redis 开启 start transaction multi 语句 普通sql 普通命令 失败 rollback 回滚 d ...
- 常见的页面效果,相关的js代码
1.焦点图 $(document).ready(function(){ var i=0; var autoChange= setInterval(function(){ if(i<$(" ...
- .Net线程池ThreadPool导致内存高的问题分析
最近写了一个WinFrom程序.此程序侦听TCP端口,接受消息处理,然后再把处理后的消息,利用线程池通过WebService发送出去(即一进一出). 在程序编写完成后,进行压力测试.用Fiddler提 ...
- android TextView 设置部分文字背景色 和 文字颜色
通过SpannableStringBuilder来实现,它就像html里边的元素改变指定文字的文字颜色或背景色 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- os、sys和shutil模块
运行环境:python3 OS模块:os 模块提供了一个统一的操作系统的接口函数 下面的path指路径的意思 os.stat(file) #查询文件属性操作 os.sep #取代操作系统特定的路径分隔 ...
- 【POJ 3461】 Oulipo
[题目链接] 点击打开链接 [算法] KMP [代码] #include <algorithm> #include <bitset> #include <cctype&g ...
- NOIP2008 传纸条(DP及滚动数组优化)
传送门 这道题有好多好多种做法呀……先说一下最暴力的,O(n^4的做法) 我们相当于要找两条从左上到右下的路,使路上的数字和最大.所以其实路径从哪里开始走并不重要,我们就直接假设全部是从左上出发的好啦 ...
- 详述IntelliJ IDEA插件的安装及使用方法(图解)
intellij idea是一款非常优秀的软件开发工具,它拥有这强大的插件体系,可以帮助开发者完成很多重量级的功能.今天,我们来学习一下如何安装和卸载intellij idea的插件. Intelli ...
- gdb调试带参数的程序 (转载)
转自:http://www.cnblogs.com/rosesmall/archive/2012/04/10/2440514.html 一般来说GDB主要调试的是C/C++的程序.要调试C/C++的程 ...