facebook atc弱网环境搭建和踩坑总结

摘要:
Facebook的开源项目允许开发者控制设备和互联网之间的连接。atc在网关中运行,网关可以控制连接到网络的移动电话和设备网络。atc有一个网络界面,您可以通过它在不同的网络环境之间切换。Atc内部使用iptables和tc,因此它只支持linux平台。下面介绍了在ubuntu18.04安装和使用facebook。准备环境:1.使用vmware安装ubuntu2.准备无线网卡。建议选择无Linux驱动器的无线网卡。否则,打开热点时将提示您失败。

facebook atc介绍

Augmented Traffic Control(又名atc)是一种模拟网络状况的工具。由facebook开源,是一个允许开发人员控制设备与互联网连接的项目。atc可以模拟不同的网络条件,包括控制带宽,延迟,数据包丢失、数据包损坏、数据包重排序等几个因素都可以由atc来控制。atc运行在网关,可以控制连接到该网络的手机,设备的网络,atc有一个web界面,通过这个界面可以来切换不同的网络情况。atc内部使用了iptables和tc,因此只支持linux平台。

下面介绍facebook atc在 ubuntu 18.04(使用vmware 安装的虚拟机)系统下facebook atc 的安装和使用。

准备环境:

1、用vmware装个ubuntu
2、准备一个无线网卡,建议选择一个linux免驱的无线网卡,不然在开启热点的时候会提示失败。

ubuntu设置wifi热点功能

ubuntu需要利用hostapd和dhcp开启ap热点,首先安装hostapd和dhcp

sudo apt-get install hostapd isc-dhcp-server

然后编辑/etc/hostapd/hostapd.conf文件,内容如下图:

facebook atc弱网环境搭建和踩坑总结第1张

  • ssid 为wifi名称
  • wpa_passphrase 为wifi密码

接着启动hostapd服务

sudo hostapd /etc/hostapd/hostapd.conf 

如果没报错并搜到热点证明启动ap热点成功,如果有报错可以用以下命令解决:

sudonmcli radio wifi off
sudo rfkill unblock wlan

如果提示hostapd进程已存在,则需要先杀掉进程

sudo killall hostapd

配置dhcp

编辑文件/etc/dhcp/dhcpd.conf, 内容如下图:

facebook atc弱网环境搭建和踩坑总结第2张

  • subnet为子网范围,netmask为子网掩码
  • range为可分配的IP地址范围
  • option router 为配置的网关
  • option domain-name-servers 为配置的dns,我用的8.8.8.8,即谷歌的dns服务器

设置无线网卡接口地址

sudo ifconfig wlx00026fb9727b 192.168.179.1 netmask 255.255.255.0

启动dhcp-server服务

sudo dhcpd wlx00026fb9727b -pf /var/run/dhcp-server/dhcpd.pid

若有提示pid或leases文件错误,就按照提示就去创建文件并赋予权限

sudo touch /var/lib/dhcp/dhcpd.leases
chmod a+x /var/lib/dhcp/dhcpd.leases

若开启dhcp服务没有提示报错,则代表开启成功,此时wifi应该可以连上,但是还不可以上网。

设置IP转发

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

设置NAT转发

sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

因为设置步骤较多,可以写成2个脚本,ap-start.sh, ap-stop.sh。一切顺利的话,此时wifi应该可以连上了

配置facebook atc

首先安装python2.7和pip,和django

sudo apt-get installpython
sudo apt-get install python-pip
sudo apt-get install django

安装atc的组件

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

创建atc工程

django-admin startproject atcui
cd atcui

配置setting.py 的 INSTALLED_APPS

INSTALLED_APPS =(
...
#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',
)

配置atcui/urls.py

from django.views.generic.base importRedirectView
from django.conf.urls importinclude

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

更新数据库

python manage.py migrate

启动atc

sudo atcd --atcd-wan ens33 --atcd-lan wlx00026fb9727b

不过启动atc的时候我遇到了https://github.com/facebook/augmented-traffic-control/issues/302 这里所说的问题,加上里面说的参数就解决了

--atcd-dont-drop-packets

启动atc web

python manage.py runserver 0.0.0.0:8000

导入facebook默认的几个配置文件

utils/restore-profiles.sh localhost:8000

这时用手机连上wifi热点,访问 http://192.168.179.1:8000

此时可以看到下图

facebook atc弱网环境搭建和踩坑总结第3张

使用方法为

turn on
selectupdate shaping

然后就大功告成了,可以试着切换不同的模拟网络试试效果。

参考文章:

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

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

免责声明:文章转载自《facebook atc弱网环境搭建和踩坑总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇前端常用插件网站oracle--sqlplus格式化输出下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Django框架详细介绍---请求流程

Django请求流程图 1.客户端发送请求 2.wsgiref是Django封装的套接字,它将客户端发送过来的请求(请求头、请求体封装成request)    1)解析请求数据   2)封装响应数据  3.中间件,进项身份验证等 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddlewa...

树莓派更换阿里云源

我的树莓派使用的jessie系统: 1、打开文件 sudo nano /etc/apt/sources.list 2、编辑文件 将原来的deb.......和deb-src......两行注释掉 或者直接在这两行修改 debhttp://mirrors.aliyun.com/raspbian/raspbian/jessie main contrib non...

树莓派(Linux)添加USB外接硬盘

1、显示系统的硬盘设备以及分区 sudo fdisk -l 显示设备名,例如/dev/sda1 2、树莓派默认不支持NTFS文件系统,如果需要支持则要安装相应的软件包 sudo apt-get install ntfs-3g 安装支持NTFS文件系统的软件包 sudo reboot 重新启动后才有效 3、在树莓派上建立挂载点 sudo mkdir...

如何在ubuntu下使用windows下的程序(eg: .exe)

为了在ubutu下安装百度云管家,上网查了下如何在ubuntu 下安装.exe文件,其中遇到一些问题记录如下: 使用的命令: 开始时直接使用的sudo apt-get install wine 在运行到最后时出现软件包设置,正在设定正在设定 ttf-mscorefonts-installer的字样,想点击确定无法点击,等了很久没有反应。 以为是版本太低造成...

Snort-IPS-入侵防御系统安装及部署小记

安装环境为Ubuntu,使用源码编译方式安装并导入社区Snort规则;通过Splunk做GUI展示,联合防火墙做防御,依据Snort官网文档操作。 Ubuntu 18和20上的Snort 3.0.1用Splunk当SIEM 诺亚·迪特里希 内容介绍 安装Snort 配置网卡 安装OpenApplD 安装Snort规则集 启用内置规则 将PCAP文件传...

django shell 操作

插件:django-extensions django-extensions==1.9.8 pip3 installdjango-extensions 1.数据库shell 命令(项目目录下) python3 manage.py dbshell 执行sql语句 2.查看django orm对应的sql语句 https://www.jianshu.com/p...