ATC 环境搭建
弱网络
工具简介
ATC是FaceBook开源的移动网络测试工具Augmented Traffic Control(ATC),能够方便 的让我们模拟各种网络环境进行测试。ATC-Git传送门
ATC有两个最吸引人的特点:
在手机上通过Web界面就可以随时切换不同的网络环境。 多个手机可以连接到同一个WIFI下,相互之间模拟的网络环境各不影响。 。
环境要求
Linux: 仅支持Linux.
Python 2.7: 仅支持 2.7+ 版本,python3也不支持 Django 1.10: 仅支持1.10+版本
安装linux虚拟机 这里不再接受虚拟机怎么装了,直接查看教程
环境准备 更新服务器
-
sudo apt-get update
-
sudo apt-get upgrade
python2.7安装
python 安装
1. sudo apt-get install python
看到上图提示输入 y 回车。
安装完成后输入 python -V 确认是否安装成功
显示如图说明安装成功。
pip 安装
1. sudo apt-get install python-pip python-dev build-essential 安装完成后输入 pip -V 进行验证,显示
- 升级pip
1. sudo pip install --upgrade pip
Wifi热点搭建
安装是使用的是腾达(Tenda)U12遵循IEEE 802.11ac, IEEE 802.11a IEEE 802.11n, IEEE 802.11g, IEEE 802.11b协议。需要安装驱动,支持ap。选择无线网卡的时候需要支持Linux, 支持ap, 最好是免驱。
添加usb到虚拟机 点击usb图标
勾选无线网卡
查看无线网卡信息 lsusb
安装驱动 下载驱动
1. # 下载驱动 2. wget
http://down.tenda.com.cn/uploadfile/2017/Drive/U12_linux_v5.1.5_19247.201 60830.rar
下载成功后查看
如果机器没有rar解压工具使用如下命令安装
1. sudo apt-get install rar 解压
1. rar x U12_linux_v5.1.5_19247.20160830.rar #解压 解压后查看
添加设备信息到 usb_intf.c
-
cd U12_linux_v5.1.5_19247.20160830/driver/rtl8812AU_linux_v5.1.5_19247. 20160830/os_dep/linux
-
sudo vi usb_intf.c
添加腾达U12的设备信息
1. {USB_DEVICE(0x2604, 0x0012), .driver_info = RTL8812}, /* Tenda U12 */
安装 返回到安装目录
进行安装
1. sudo sh install.sh 安装完成后插拔网卡,输入 iwconfig 显示如下信息
安装驱动参考文章
Tenda U12 Linux驱动安装 在Linux下安装Tenda U12驱动
安装hostapd和dhcpd
1. sudo apt-get install hostapd isc-dhcp-server 安装完成后进行验证,输入 hostapd
输入 dhcpd
创建hostapd.conf
在/etc/hostapd目录下新建 hostapd.conf ,文件内容如下:
-
interface=wlan0 #使用的无线网卡接口名称
-
driver=nl80211 #这里基本是固定的,是驱动接口
-
ssid=ATC #设置热点的名称
-
hw_mode=g
-
channel=10
-
macaddr_acl=0
-
auth_algs=3
-
wpa=2 #从这开始都是用来设置认证的,如果去掉这些设置,热点就是没有密码的
-
wpa_passphrase=11111111
-
wpa_key_mgmt=WPA-PSK
-
wpa_pairwise=TKIP CCMP
-
rsn_pairwise=TKIP CCMP
创建成功后,验证是否有效果
1. sudo hostapd -B /etc/hostapd/hostapd.conf #-B为在后台执行 执行成功后的显示如下
如果启动时出现如下报错信息
执行如下命令
1. sudo rfkill unblock wlan 正常情况下就可以启动hostapd了
1. sudo hostapd -B /etc/hostapd/hostapd.conf 但是如果是重新开启热点的话还是会报错
原因是hostapd进程占用了这个网卡,关闭这个进程就好了
1. sudo killall hostapd 然后启动hostapdj就可以了
1. sudo hostapd -B /etc/hostapd/hostapd.conf 一切搞定后可以使用手机搜索下WIFI,就可以看到ATC了。
创建dhcpd.conf
在/etc/dhcp/dhcpd.conf 在文件最后添加如下信息
1. 2. 3. 4. 5. 6.
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 8.8.8.8;
# 根据本机dns进行行修改
}
使用nmcli dev list iface eth0 | grep IP4查看本机dns信息
所以我的 dhcpd.conf 应该是这样的
1. subnet 192.168.0.0 netmask 255.255.255.0
2. 3. 4. 5. 6.
{
range 192.168.0.2 192.168.0.10;
option routers 192.168.0.1;
option domain-name-servers 114.114.114.114;
}
设置无线网卡 设置并启动无线网卡
1. sudo ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 输入执行完成输入 ifconfig 查看,会显示wlan0
开启IP内核转发
1. sudo bash -c "echo 1 >/proc/sys/net/ipv4/ip_forward" 设置NAT
1. sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 启动dhcp-server
1. sudo dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid 如果出现如下问题,说明 dhcpd.pid 文件不存在。
进入 /var/run/dhcp-server/ 创建 dhcpd.pid ,创建完成后在启动一次 dhcp-server
设置完后后,使用手机连接ATC,可以愉快的访问网络了。
ATC安装 安装包
1. sudo pip install atc_thrift atcd django-atc-api django-atc-demo-ui dja ngo-atc-profile-storage
如果安装过程中出现 Cannot uninstall 'six' 安装命令后加 --ignore-installed six
1. sudo pip install atc_thrift atcd django-atc-api django-atc-demo-ui dja ngo-atc-profile-storage --ignore-installed six
安装完毕后查看django版本,如果版本大于1.10,需要卸载重新装
-
sudo pip list #查看已安装的包
-
sudo pip uninstall Django #卸载Django
-
sudo pip isntall Django==1.10.8
创建一个django工程以便使用ATC服务端app
-
sudo django-admin startproject atcui
-
cd atcui
进入到atcui目录后编辑 settings.py ALLOWED_HOSTS = [] 大括号内加'*'
在INSTALLED_APPS里添加如下内容,
1.
# Django ATC API 'rest_framework', 'atc_api', # Django ATC Demo UI 'bootstrap_themes', 'django_static_jquery', 'atc_demo_ui', # Django ATC Profile Storage 'atc_profile_storage',
编辑 urls.py 文件,文件开始导入
1. from django.views.generic.base import RedirectView
-
# 导入include
-
from from django.conf.urls import url, include
在urlpatterns 添加如下内容
# Django ATC API url(r'^api/v1/', include('atc_api.urls')), # Django ATC Demo UI url(r'^atc_demo_ui/', include('atc_demo_ui.urls')), # Django ATC profile storage url(r'^api/v1/profiles/', include('atc_profile_storage.urls')), url(r'^$', RedirectView.as_view(url='/atc_demo_ui/', permanent=False)),
返回到上一级目录,跟新django数据库
1. cd..
2. sudo python manage.py migrate
配置完成然后可以运行了,这里使用网卡eth0作为公网连接,wlan0作为内网连接,启动时通 过参数指定
1. sudo atcd --atcd-wan eth0 --atcd-lan wlan0
新建一个终端运行ATC UI
1. sudo python manage.py runserver 0.0.0.0:8000
手机端输入 192.168.0.1:8000 就可以访问了。 添加配置
facebook已经在自己的工程中为我们配置了常见网络的配置,可以通过如下方式添加
1. git clone https://github.com/facebook/augmented-traffic-control.git 克隆完成后执行添加命令
-
cd augmented-traffic-control
-
sudo utils/restore-profiles.sh localhost:8080
执行完成后手机刷新界面