文章参考:

    http://blog.csdn.net/itfootball/article/details/46763731

    http://www.cnblogs.com/coderzh/p/AugmentedTrafficControl.html


硬件准备:水星(Mercury)MW150U 150M无线USB网卡(别问为什么,要是你用别的可以支持ap模式且有驱动也是可以的,我之前用Ralink和360wifi配置得要死)

系统版本:ubuntu 14.04 LTS 桌面版(新系统设置root密码:sudo passwd)


分两部分:配置ubuntu下wifi和配置ATC项目


一、配置ubuntu下wifi


1.查看无线网卡是否连接: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

    vi /etc/hostapd/hostapd.conf

    hostapd.conf#####################################


    interface=wlan0

    driver=nl80211

    ssid=autotest  //wifi名字

    channel=10

    hw_mode=g

    macaaddr_acl=0

    auth_algs=3

    wpa=2

    wpa_passphrase=12345678 //密码

    wpa_key_mgmt=WPA-PSK

    wpa_pairwise=TKIP CCMP

    rsn_pariwise=TKIP CCMP

    ####################################################


4.运行hostapd(可以直接跳到第5步,第四步是踩的坑)

    执行:hostapd -B /etc/hostapd/hostapd.conf 

    报错:nl80211: Could not configure driver mode 

          nl80211 driver initialization faile

    解决办法:nmcli nm wifi off

              rfkill unblock wlan


5.运行hostapd

    执行:nmcli nm wifi off

          rfkill unblock wlan

          killall hostapd

          hostapd -B /etc/hostapd/hostapd.conf(-B后台运行)

          或者

          hostapd -d /etc/hostapd/hostapd.conf(-d直接运行)


6.查询DNS,第7步用

    执行:nmcli dev list iface eth0 | grep IP4

    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



7.配置dhcpd

    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,前面不用改

    }

    ######################################################

8.设置wlan0

    ifconfig wlan0 192.168.0.1 netmask 255.255.255.0


9.启动dhcp-server

    touch /var/run/dhcp-server/dhcpd.pid

    chmod 777 /var/run/dhcp-server/dhcpd.pid

    dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid


10.IP转发

    bash -c "echo 1 >/proc/sys/net/ipv4/ip_forward"


11.设置NAT

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


到这里,如果手机连接wifi,并正常上网则说明成功。


二、下载配置ATC


1.安装pip

    终端输入:sudo apt-get install python-pip

    通过pip安装ATC需要的django组件:

    pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage


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

    django-admin startproject atcui

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)),

    ]


    cd atcui  //切换到manage.py所在目录

    更新django数据库:python manage.py migrate


4.配置完成然后可以运行了,这里使用网卡eth0作为公网连接,wlan0作为内网连接,启动时通过参数指定

    sudo 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


7.ATC使用

    turn on   //打开

    select   //选择

    update Shaping  //更新,选择网络之后,点击更新

    turn off  //关闭



最后附上一份网络参数配置(仅供参考):

    网络带宽(bandwidth)

    延迟(latency)

    丢包率(packet loss)

    错包率(corrupted packets)

    乱序率(packets ordering)



    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