前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >facebook atc弱网环境搭建和踩

facebook atc弱网环境搭建和踩

作者头像
py3study
发布2020-01-19 16:01:09
3.1K0
发布2020-01-19 16:01:09
举报
文章被收录于专栏:python3python3

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

代码语言:javascript
复制
sudo apt-get install hostapd isc-dhcp-server

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

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

接着启动hostapd服务

代码语言:javascript
复制
sudo hostapd /etc/hostapd/hostapd.conf 

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

代码语言:javascript
复制
sudo nmcli radio wifi off
sudo rfkill unblock wlan

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

代码语言:javascript
复制
sudo killall hostapd

配置dhcp

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

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

设置无线网卡接口地址

代码语言:javascript
复制
sudo ifconfig wlx00026fb9727b 192.168.179.1 netmask 255.255.255.0

启动dhcp-server服务

代码语言:javascript
复制
sudo dhcpd wlx00026fb9727b -pf /var/run/dhcp-server/dhcpd.pid

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

代码语言:javascript
复制
sudo touch /var/lib/dhcp/dhcpd.leases
chmod a+x /var/lib/dhcp/dhcpd.leases

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

设置IP转发

代码语言:javascript
复制
sudo bash -c "echo 1 >/proc/sys/net/ipv4/ip_forward"

设置NAT转发

代码语言:javascript
复制
sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

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

配置facebook atc 

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

代码语言:javascript
复制
sudo apt-get install python
sudo apt-get install python-pip
sudo apt-get install django

安装atc的组件

代码语言:javascript
复制
pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage

创建atc工程

代码语言:javascript
复制
django-admin startproject atcui
cd atcui

配置setting.py 的 INSTALLED_APPS

代码语言:javascript
复制
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

代码语言:javascript
复制
from django.views.generic.base import RedirectView
from django.conf.urls import 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)),
]

更新数据库

代码语言:javascript
复制
python manage.py migrate

启动atc

代码语言:javascript
复制
sudo atcd --atcd-wan ens33 --atcd-lan wlx00026fb9727b

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

代码语言:javascript
复制
--atcd-dont-drop-packets

启动atc web

代码语言:javascript
复制
python manage.py runserver 0.0.0.0:8000

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

代码语言:javascript
复制
utils/restore-profiles.sh localhost:8000

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

此时可以看到下图

使用方法为

代码语言:javascript
复制
turn on
select
update shaping

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

 参考文章:

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ubuntu设置wifi热点功能
    • 配置dhcp
      • 配置facebook atc 
      相关产品与服务
      TAPD 敏捷项目管理
      TAPD(Tencent Agile Product Development)是源自于腾讯的敏捷研发协作平台,提供贯穿敏捷研发生命周期的一站式服务。覆盖从产品概念形成、产品规划、需求分析、项目规划和跟踪、质量测试到构建发布、用户反馈跟踪的产品研发全生命周期,提供了灵活的可定制化应用和强大的集成能力,帮助研发团队有效地管理需求、资源、进度和质量,规范和改进产品研发过程,提高研发效率和产品质量。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档