一直給自己找藉口不去動手實踐,今天難得抽了個時間,總算把環境給搭建完成了, 雖然可能目前還有點小問題,但是基本的測試時可以保證了,以後一些弱網環境的測試就可以靠你了。
介紹
首先還是得說下什麼是ATC,它的作用是什麼呢?
現在已經是APP時代了,由於手機網絡的特殊性,移動APP需要面臨更加複雜的網絡環境。在設計之初就要考慮如何應對各種網絡環境,比如很高的延遲,經常丟包,頻繁的斷線。特別是手遊,斷線重連機制設計的好壞直接影響到遊戲的體驗。所以,在開發過程中模擬各種網絡環境進行測試變得越來越重要
所以ATC實際上就是用於模擬網絡環境的,那它與其他軟件的區別在哪裏呢?
- 在手機上通過Web界面就可以隨時切換不同的網絡環境。
- 多個手機可以連接到同一個WIFI下,相互之間模擬的網絡環境各不影響。
這裏貼一張 ATC的原理圖:
ATC工具的搭建需要分爲兩個部分:wifi熱點以及Atc環境搭建
wifi 熱點的搭建
這裏用的是 水星(Mercury)MW150U 150M無線USB網卡
首先我們先讓無線USB接入到虛擬機中。
在終端查看是否已經讀到了我們的無線網卡
這裏面的 ID f201:5370 就是我們的無線網卡了。下來我們就需要創建一個wifi了,那創建wifi的話 也是需要有3個步驟的,
- DHCP服務器:用來設備連接上來後分配IP地址用的
- hostapd :用於wifi的認證
- 數據轉發 : 將終端設備發送過來的數據包轉發到另一個能夠連接到外網的網卡上
安裝 hostapd以及dhcpd
sudo apt-get install hostapd isc-dhcp-server
安裝完後我們可以驗證是否安裝成功
配置SSID以及認證的信息
這裏看了很多地方的配置都是 10信道,正常我們的wifi應該是在1,6,11信道上纔是正常無干擾的纔對的。
配置dhcp地址信息
這裏的dns的地址直接通過nmcli dev list iface eth0 | grep IP4
進行查看啓動 hostapd
sudo hostapd -B /etc/hostapd/hostapd.conf
如果上面的啓動出現失敗的話可以加一條
sudo rfkill unblock wlan
來解鎖該無線設備
設置無線網卡
sudo ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
啓動dhcp-server
sudo dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid
開啓IP轉發
sudo bash -c "echo 1 >/proc/sys/net/ipv4/ip_forward"
設置NAT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
以上就完成了wifi熱點的創建了。這個只是第一步而已。下來我們需要搭建ATC的環境了。
ATC環境搭建
最好的參考文檔就是官方的github了。
通過pip安裝ATC
pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage
創建一個django的項目,並配置的相應內容。這裏的步驟就不說了
啓動ATC
sudo atcd --atcd-wan eth0 --atcd-lan wlan0
啓動atc profile配置界面
python manage.py runserver 0.0.0.0:8000
下來我們就可以通過手機訪問對應的頁面了。
不太清楚 爲什麼這個ui比別人的難看多了,不過功能倒是都是正常的,另外我們會發現默認沒有任何的配置模板。所以我們可以導入facebook的2g 3g的網絡模板
使用樣例模板
utils/restore-profiles.sh localhost:8080
要在服務運行的情況下,且不要使用sudo 。
這樣子就做我們的弱網測試了。