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

執行完成后手機刷新界面

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM