• [转]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图标)

     
    图片1.png

    连接上之后,在命令行输入: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,显示命令详解则为成功
     
    图片6.png

    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是前台运行

     
    图片7.png

    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
    
     
    图片8.png

    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',
    
     
    图片5.png
     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)),
        ]
    
     
    图片4.png

    最后切换到manage.py所在目录,更新django数据库,执行以下命令:

    python manage.py migrate
    
     
    图片3.png

    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,就可以看到如下界面:

     
    IMG_1313.JPG
     
    IMG_1314.JPG

    基本使用如下:

    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环境搭建总结

     


    作者:dancingking
    链接:https://www.jianshu.com/p/fb4824fd5bbc
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Centos安装Kafka
    centos 上如何安装python3
    python+Django CRM客户关系管理系统开发(十四)--报名流程开发
    python+Django CRM客户关系管理系统开发(十三)--面包屑导航-bootstrap路径导航
    python+Django CRM客户关系管理系统开发(十二)--action功能开发
    python Django框架下,不同路径下,html页面引入静态static文件的方法
    python+Django CRM客户关系管理系统开发(十一)--删除功能开发
    多线程之 八锁。
    浅谈多线程下if和while循环不同的原因
    浅析JVM模型以及java代码运行流程
  • 原文地址:https://www.cnblogs.com/didiaoxiong/p/9078139.html
Copyright © 2020-2023  润新知