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虚拟机 这里不再接受虚拟机怎么装了,直接查看教程

 

环境准备 更新服务器

  1. sudo apt-get update

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

  1. cd U12_linux_v5.1.5_19247.20160830/driver/rtl8812AU_linux_v5.1.5_19247. 20160830/os_dep/linux

  2. 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 ,文件内容如下:

  1. interface=wlan0   #使用的无线网卡接口名称

  2. driver=nl80211    #这里基本是固定的,是驱动接口

  3. ssid=ATC    #设置热点的名称

  4. hw_mode=g

  5. channel=10

  6. macaddr_acl=0

  7. auth_algs=3

  8. wpa=2     #从这开始都是用来设置认证的,如果去掉这些设置,热点就是没有密码的

  9. wpa_passphrase=11111111

  10. wpa_key_mgmt=WPA-PSK

  11. wpa_pairwise=TKIP CCMP

  12. 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,需要卸载重新装

  1. sudo pip list #查看已安装的包

  2. sudo pip uninstall Django #卸载Django

  3. sudo pip isntall Django==1.10.8

创建一个django工程以便使用ATC服务端app

  1. sudo django-admin startproject atcui

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

  1. # 导入include

  2. 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 克隆完成后执行添加命令

  1. cd augmented-traffic-control

  2. sudo utils/restore-profiles.sh localhost:8080

执行完成后手机刷新界面

 

posted @ 2020-08-21 10:38  hhwu  阅读(1468)  评论(0编辑  收藏  举报