将树莓派设置成具有发射AP热点的能力
手动配置AP的步骤比较繁琐,可以使用rPi3-ap-setup.sh脚本进行自动化配置,执行以下命令,打码的两个参数分别对应热点密码和热点名称。
完成以上操作后,正常情况下就可以搜索到热点 ,但热点可能无法连接,或者提示密码错误,那么可以执行以下命令:
此时设置热点AP已完成,但连接后无法上网,所以还需要配置热点AP使用有线网卡的网络,如下图命令所示:
以上的规则需要设置为重启时自动配置,可以执行:
此时AP配置完成,可以通过连接树莓派的热点来上网了!
安装ATC
这里开始几乎可以说是一步一个坑……
以上AP设置完成后,可以开始部署ATC,步骤参考官方文档Augmented Traffic Control https://github.com/facebook/augmented-traffic-control
下面主要说说遇到的各种坑和解决方案:
一、树莓派下载Django库——报错为TypeError: unsupported operand types for -=: 'Retry' and 'int'的问题
在尝试了各种方式后终于找到了原因:
树莓派自带的Linux系统附带了一个来自前寒武纪的pip版本,如果你不想花费数小时来调试与pip相关的问题,那么就必须升级它。
使用如下命令(记得要加sudo):
二、还会出现下图的这个问题
cd到atcui目录文件下找到settings.py文件并打开。
sudo nano settings.py 找到ALLOWED_HOSTS = [''] 在这里请求的host添加* 改为如下: ALLOWED_HOSTS = ['*'],如下图:
三、安装ATC依赖库出错
直接执行官网文档中的安装命令可能会出错:
如果安装过程中有报错,可以一个一个的安装:
四、atc is not running:ATC和最新版django-rest-framework不兼容
重新安装djangorestframework:
sudo pip install djangorestframework==3.4
五、atc not running:atcd启动时没有设置正确的网卡
执行完sudo python manage.py runserver 0.0.0.0:8000后打开http://localhost:8000页面上提示atc not running
可以看到eth0是网线,wlan0是AP无线热点,所以这里使用—atcd-wan和—atcd-lan来指定:
sudo atcd --atcd-wan eth0 --atcd-lan wlan0
执行成功会显示:
DEBUG:AtcdVService:All tasks started
DEBUG:AtcdVService:VService Active. Awaiting graceful shutdown.
然后新再开启一个终端窗口执行:
sudo python manage.py runserver 0.0.0.0:8000
最后打开地址即可:
http://localhost:8000/
最终效果(具体配置参考APP网络性能测试白皮书 这篇文章中的说明):