FaceBook ATC 弱網(wǎng)測試工具環(huán)境搭建

工具簡介

ATC是FaceBook開源的移動網(wǎng)絡(luò)測試工具Augmented Traffic Control(ATC),能夠方便的讓我們模擬各種網(wǎng)絡(luò)環(huán)境進行測試。

ATC有兩個最吸引人的特點:

  • 在手機上通過Web界面就可以隨時切換不同的網(wǎng)絡(luò)環(huán)境。
  • 多個手機可以連接到同一個WIFI下,相互之間模擬的網(wǎng)絡(luò)環(huán)境各不影響。

搭建步驟

一、基礎(chǔ)準(zhǔn)備

1. 硬件準(zhǔn)備

我這里用的是水星(Mercury)MW150U 150M無線USB網(wǎng)卡(別問為什么,要是你用別的網(wǎng)卡可以支持ap模式且有驅(qū)動也是可以的,我之前用Ralink和360wifi因為驅(qū)動和網(wǎng)卡本身不支持ap模式踩的坑非常多),還有,如果有樹莓派玩一玩就更好了

2. 系統(tǒng)

ubuntu 14.04 LTS 桌面版

二、配置ubuntu下wifi

1. 檢查無線網(wǎng)卡連接情況

我的ubuntu是安裝vmware下,所以要先點擊右鍵連接到虛擬機上(右下角的USB圖標(biāo))

圖片1.png

連接上之后,在命令行輸入:lsusb
如果顯示f201:5370就是我們的無線網(wǎng)卡的信息,說明我們識別出我們的usb無線網(wǎng)卡

2. 安裝hostapd 和 dhcp

簡單的概念解釋下:

  • hostapd
    通過Hostapd可以將無線網(wǎng)卡切換為AP/Master模式,通過修改配置文件,可以建立一個開放式的(不加密)的,WEP,WPA或WPA2的無線網(wǎng)絡(luò)
  • dhcp
    簡單的說ip管理
  • 安裝
    apt-get install hostapd isc-dhcp-server
  • 驗證是否安裝成功
    分別敲入hostapd和dhcpd,顯示命令詳解則為成功
圖片6.png

3. 配置hostapd

創(chuàng)建并編輯配置文件 ,在terminal中輸入命令:

root@lufukeng:/#vi /etc/hostapd/hostapd.conf

配置內(nèi)容如下:

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名字和密碼,其他都可以一樣,然后記得注釋的反斜杠和內(nèi)容要刪掉

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

查詢結(jié)果,DNS:192.168.200.2

6.配置dhcpd

root@lufukeng:/#vi /etc/dhcp/dhcpd.conf

輸入以下內(nèi)容:

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.設(shè)置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轉(zhuǎn)發(fā)

root@lufukeng:/#bash -c "echo 1 >/proc/sys/net/ipv4/ip_forward"

10.設(shè)置NAT

root@lufukeng:/#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

到這里,如果手機連接wifi,并正常上網(wǎng)則說明成功。

三、下載并配置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. 創(chuàng)建一個django工程以便使用ATC服務(wù)端app

root@lufukeng:/#django-admin startproject atcui

此時會在當(dāng)前路徑生成actui項目

3.修改ATC配置

切換到項目路徑下,編輯配置文件

cd atcui/atcui
vi settings.py

在INSTALLED_APPS里添加如下內(nèi)容:

'rest_framework',
'atc_api',
'bootstrap_themes',
'django_static_jquery',
'atc_demo_ui',
'atc_profile_storage',
圖片5.png
 vi urls.py

將urlpatterns 內(nèi)容改為一下內(nèi)容:

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數(shù)據(jù)庫,執(zhí)行以下命令:

python manage.py migrate
圖片3.png

4.設(shè)置網(wǎng)卡

配置完成然后可以運行了,這里使用網(wǎng)卡eth0作為公網(wǎng)連接,wlan0作為內(nèi)網(wǎng)連接,啟動時通過參數(shù)指定,執(zhí)行以下命令:

atcd --atcd-wan eth0 --atcd-lan wlan0

5.運行ATC UI

執(zhí)行啟動命令:

python manage.py runserver 0.0.0.0:8000

這時通過手機瀏覽器訪問192.168.0.1:8000,會顯示沒有配置過任何profile的網(wǎng)頁,下面提供Facebook已經(jīng)配置好的文件配置。

6.使用facebook已經(jīng)配置好的網(wǎng)絡(luò)配置文件

獲取方式如下:

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  //更新,選擇網(wǎng)絡(luò)之后,點擊更新
turn off  //關(guān)閉

7.啟動腳本

為了方便,把以上操作步驟寫在shell腳本中,每次開機之后,只要執(zhí)行腳本就可以啟動項目和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.最后附上一份網(wǎng)絡(luò)參數(shù)配置

Name (網(wǎng)絡(luò)名稱) 延遲(latency) 網(wǎng)絡(luò)帶寬(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

可以根據(jù)自己的需要進行配置
至此,搭建結(jié)束,童鞋們可以根據(jù)自己的需要進行使用了。

參考文獻

Facebook網(wǎng)絡(luò)模擬測試工具ATC使用
Facebook/atc環(huán)境搭建總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容