精准模拟各种弱网场景!树莓派+ATC打造便携弱网网关。cpolar 内网穿透实验室第781个成功挑战

软件名称:Augmented Traffic Control(ATC,增强型流量控制)+ cpolar 内网穿透

操作系统支持

ATC 仅支持 Linux 系统(适配树莓派全系列);

cpolar 支持 Windows、macOS、Linux、树莓派、安卓等全平台

软件介绍

ATC 是 Facebook 开源的弱网模拟神器,能像 "网络调音师" 一样,精准调控带宽、延迟、丢包率、数据包乱序等参数,复现 2G/3G/4G、地铁 / 电梯等真实弱网场景,还自带 Web 界面,不用在被测设备装任何客户端,操作像刷短视频一样简单。

cpolar 是轻量级内网穿透工具,能把树莓派上的 ATC 面板从 "局域网专属" 变成 "公网可访问",不管你在公司、家里还是咖啡馆,只要有网就能操控弱网环境。

出色的功能

ATC 的出色功能

ATC 最绝的就是 "精准且无脑" 的弱网模拟能力:

  • 参数粒度细到 "变态":带宽能精确到 Kbps,延迟能调到毫秒级,丢包率 0-100% 自定义,甚至能模拟数据包乱序、损坏 ------ 相当于把 "地铁里的网络""山区的 4G 信号""电梯里的断网瞬间" 直接搬进你的测试环境。
  • 无客户端束缚:被测手机 / 电脑只要连树莓派的热点,不用装任何插件,打开 Web 页面就能控,测试人员不用再跟开发扯皮 "是不是客户端装错了"。
  • 模板复用:内置 2G/3G/5G 等预设模板,一键切换,不用每次都手动调参数,节省 80% 的配置时间。
cpolar的出色功能

cpolar 的核心就是 "打破局域网的墙":

  • 一键映射公网:不用懂路由器端口转发、不用要公网 IP,一条命令就能把树莓派的 ATC Web 界面映射到公网,生成可直接访问的网址。
  • 固定公网地址:支持保留二级子域名,不用每次重启都换地址,团队共享时不用反复发新链接。
  • 全平台适配:不管树莓派是 Linux 系统,还是你办公用的 Windows 电脑,都能装,跨设备用起来毫无门槛。

实用场景

场景 1:移动端 App 弱网测试(开发者 / QA)
  • 痛点:测试 "支付页面在弱网下卡顿" 时,要么去地铁里实测(费时间),要么用手机热点手动限速(参数不准),改完代码后还要再跑一趟地铁验证,一天下来啥也没干光跑路。
  • 爽点:用树莓派 + ATC 搭个便携弱网网关,办公室里就能模拟地铁的 10% 丢包 + 300ms 延迟,改一行代码就能立刻验证效果,一天能测 10 个版本,下班准时走不加班。
场景 2:IoT 设备远程弱网调试(嵌入式工程师)
  • 痛点:公司的 IoT 网关部署在实验室局域网,工程师在家远程办公时,想测试设备在低带宽下的通信稳定性,只能让同事在实验室手动操作,沟通成本高还容易出错。
  • 爽点:给树莓派的 ATC 配 cpolar 内网穿透,在家打开公网链接就能调整实验室设备的网络参数,比如模拟山区低带宽场景,自己在家就能完成调试,不用麻烦同事,也不用等上班。
场景 3:团队共享弱网测试环境(测试负责人)
  • 痛点:团队每人搭一套弱网测试环境,不仅成本高(买多台服务器),还容易出现 "你测的是 5% 丢包,我测的是 8% 丢包",测试结果不一致,扯皮不断。
  • 爽点:全团队共用一台树莓派 + ATC,通过 cpolar 的公网地址访问,所有人用的都是同一个弱网参数,产品经理、测试、开发都能实时看效果,测试标准统一,沟通效率翻倍。

cpolar内网穿透技术带来的便利

原本 ATC 只能在局域网内用 ------ 比如你在公司能调,回家就歇菜,团队成员不在一个办公室就没法共享,这就像买了辆超跑却只能在小区里开,太憋屈了!而 cpolar 就像给 ATC 装了 "全球通行证",把所有局域网的限制都干碎了:

  1. 远程办公自由:不管你是在家、咖啡馆还是出差,只要有手机 / 电脑,打开 cpolar 生成的公网链接,就能操控树莓派的 ATC 面板,调整弱网参数,再也不用 "必须到公司才能测试"。比如周末在家发现 App 在弱网下的 bug,不用等周一到岗,直接远程调 ATC 复现,改完立刻验证,效率拉满。

  2. 团队协作无边界:不用再让同事 "帮忙点一下按钮""拍个照看看参数",把 cpolar 的公网地址分享给团队,产品经理能自己调弱网参数看效果,测试能远程复现问题,开发能远程调试,哪怕跨城市、跨省份,都像坐在同一个办公室一样。

  3. 便携性拉满:树莓派本身就巴掌大,带个充电宝就能续航,把它放包里带到客户现场,用 cpolar 映射公网后,哪怕客户现场没有局域网,你也能远程操控 ATC,给客户演示 "他们的 App 在地铁场景下的表现",专业度直接拉满。

  4. 零网络配置门槛:不用懂路由器设置、不用申请公网 IP、不用搞复杂的端口映射,cpolar 一键就能生成公网地址,哪怕是技术小白,跟着教程 5 分钟就能搞定,省下的时间全用来做核心测试。

  5. 成本几乎为零:cpolar 有免费版,满足日常远程访问需求;付费版也便宜,对比动辄上万的商用弱网测试工具,树莓派 + ATC+cpolar 的组合,成本不到一杯奶茶钱,中小团队也能轻松承担。

总结

ATC 就像给网络装了 "精准遥控器",能把各种真实世界的弱网场景 "复刻" 到测试环境里,解决了传统弱网测试 "不准、麻烦、成本高" 的问题;而 cpolar 则是这台遥控器的 "全球信号放大器",打破了局域网的限制,让 ATC 从 "办公室专属" 变成 "随时随地能用"。

这套组合拳,不仅让开发者 / 测试人员不用再跑地铁、蹲电梯实测弱网,还能让团队共享统一的测试环境,远程办公也不耽误调试,用极低的成本实现了专业级的弱网测试能力。不管是个人开发者调试 App,还是中小团队做批量测试,都是性价比天花板级别的选择。

性价比的天花板在下面呦👇

本文将介绍如何在树莓派上部署并配置 Facebook ATC,将其转变为一个便携式弱网模拟网关,并通过实际测试验证其对局域网内设备的网络限制效果。无论你是前端开发者、QA 工程师,还是嵌入式或 IoT 项目实践者,这套方案都能为你提供一种简单高效的弱网测试手段。

1.介绍Augmented Traffic Control

Augmented Traffic Control(增强型流量控制,简称ATC) 是由Facebook开源的一款网络条件模拟工具,旨在帮助开发者和测试人员在可控环境中复现真实世界的复杂网络状况。

核心功能:精准模拟多样网络环境

ATC能够灵活模拟从高速宽带到极端劣化网络的各种场景,包括常见的移动网络(如 2G、3G、4G、5G)以及高延迟、低带宽或高丢包的受损链路。通过精细调控以下关键网络参数,实现高度逼真的流量仿真:

  • 带宽限制:控制上下行传输速率,模拟网速受限场景;
  • 延迟(Latency):人为引入传输延迟,测试应用实时性表现;
  • 丢包率(Packet Loss):模拟数据包在传输过程中丢失的情况;
  • 数据包损坏(Packet Corruption):注入错误比特,验证协议容错能力;
  • 数据包乱序(Packet Reordering):打乱数据包到达顺序,检验应用对乱序的处理机制。

灵活易用:无需客户端,Web即控

ATC提供直观的Web管理界面,用户可直接在浏览器中动态调整网络策略,实时启用或取消流量整形(Traffic Shaping),无需在被测设备上安装任何代理或客户端软件,极大简化了测试流程。

模块化架构:高可扩展性

ATC采用模块化设计,核心组件包括:

  • atcd:底层流量控制守护进程;
  • django-atc-api:提供 RESTful 接口;
  • django-atc-demo-ui:官方演示 Web 界面;
  • django-atc-profile-storage:支持网络配置模板的存储与复用。

这种解耦架构便于开发者根据实际需求进行功能扩展、集成或定制化开发。

2.开启无线热点

2.1更新系统

确保你的树莓派操作系统是最新的:

shell 复制代码
sudo apt update

2.2安装所需软件包

安装hostapd和dnsmasq:

shell 复制代码
sudo apt install hostapd dnsmasq -y

2.3停止禁用服务

停止并禁用hostapd和dnsmasq:

shell 复制代码
sudo systemctl stop hostapd
shell 复制代码
sudo systemctl stop dnsmasq
shell 复制代码
sudo systemctl disable hostapd
shell 复制代码
sudo systemctl disable dnsmasq

2.4配置wlan0的静态 IP 地址

编辑网络配置文件/etc/dhcpcd.conf:

shell 复制代码
sudo nano /etc/dhcpcd.conf

添加以下内容(假设无线网卡接口是 wlan0,使用ifconfig查找自己的网卡):

shell 复制代码
interface wlan0
static ip_address=192.168.110.1/24
nohook wpa_supplicant

2.5配置dnsmasq

备份原有的dnsmasq配置文件(以防配置错误导致服务启动失败):

shell 复制代码
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf1

创建一个新的 dnsmasq 配置文件:

shell 复制代码
sudo nano /etc/dnsmasq.conf

添加以下内容:

shell 复制代码
interface=wlan0
dhcp-range=192.168.110.2,192.168.110.100,255.255.255.0,24h

2.6配置hostapd

创建并编辑hostapd配置文件:

shell 复制代码
sudo nano /etc/hostapd/hostapd.conf

添加以下内容:

shell 复制代码
interface=wlan0
driver=nl80211
ssid=haha //自己修改热点名
hw_mode=g
channel=7
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=2
wpa_passphrase=12hdwek //自己修改密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

2.7修改hostapd默认配置

编辑hostapd默认配置文件:

shell 复制代码
sudo nano /etc/default/hostapd

找到并修改以下行,指向你的配置文件:

shell 复制代码
DAEMON_CONF="/etc/hostapd/hostapd.conf"

2.8启用ip转发

编辑 /etc/sysctl.conf,启用IP转发:

shell 复制代码
sudo nano /etc/sysctl.conf

添加以下行:

shell 复制代码
net.ipv4.ip_forward=1

使更改生效:

shell 复制代码
sudo sysctl -p

2.9设置NAT

使用iptables配置 NAT:

shell 复制代码
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

保存 iptables 规则:

shell 复制代码
sudo mkdir -p /etc/iptables
shell 复制代码
sudo sh -c "iptables-save > /etc/iptables/rules.v4"

2.10启动并启用服务

启动并启用hostapd和dnsmasq服务:

shell 复制代码
sudo systemctl unmask hostapd
sudo systemctl unmask dnsmasq
sudo systemctl start hostapd
sudo systemctl start dnsmasq
sudo systemctl enable hostapd
sudo systemctl enable dnsmasq

检查服务状态:

shell 复制代码
sudo systemctl status hostapd
sudo systemctl status dnsmasq

2.11验证是否成功

输入命令,查看wlan0是否出现IP,出现即为成功配置:

shell 复制代码
ifconfig

手机和电脑也出现了热点信息,连接即可(网速是很快的哦~如果很慢就是配置过程出错啦)

3.配置ATC

3.1安装python2.7和virtualenv,创建atc虚拟环境

安装python2.7和virtualenv:

shell 复制代码
sudo apt install virtualenv python2.7 -y

使用Python 2.7解释器创建一个名为 atc 的独立 Python 虚拟环境:

shell 复制代码
virtualenv -p /usr/bin/python2.7 atc
shell 复制代码
cd atc/bin

创建atc虚拟环境:

shell 复制代码
source activate

3.2安装atc

切换到atc目录下:

shell 复制代码
cd ~/atc

安装atc:

shell 复制代码
pip2 install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage

用于创建一个新的 Django 项目,项目名称为 atcui:

shell 复制代码
django-admin startproject atcui

3.3配置django

配置settings.py,在 INSTALLED_APPS 中添加 ATC 的应用:

shell 复制代码
sudo nano atcui/atcui/settings.py

添加如下:

shell 复制代码
ALLOWED_HOSTS = ['*']   //'*'表示允许所有地址
INSTALLED_APPS = (
    ...
    'rest_framework',
    'atc_api',
    'bootstrap_themes',
    'django_static_jquery',
    'atc_demo_ui',
    'atc_profile_storage',
)

配置 django 路由:

shell 复制代码
sudo nano atcui/atcui/urls.py

添加如下:

shell 复制代码
from django.views.generic.base import RedirectView
from django.conf.urls import include
urlpatterns = [
    ...
    url(r'^api/v1/', include('atc_api.urls')),
    url(r'^atc_demo_ui/', include('atc_demo_ui.urls')),
    url(r'^api/v1/profiles/',include('atc_profile_storage.urls')),
    url(r'^$', RedirectView.as_view(url='/atc_demo_ui/', permanent=False)),
]

更新django的数据库:

shell 复制代码
bin/python atcui/manage.py migrate

3.4运行 ATC

启动 ATC 的核心流量控制服务atcd:

shell 复制代码
nohup sudo bin/atcd --atcd-wan eth0 --atcd-lan wlan0 --atcd-dont-drop-packets &

启动ATC的Web管理界面:

shell 复制代码
nohup bin/python atcui/manage.py runserver 0.0.0.0:8000 &

4.添加 facebook 的默认网络配置

克隆Augmented Traffic Control(ATC)项目的源代码到本地:

shell 复制代码
git clone https://github.com/facebookarchive/augmented-traffic-control.git

运行当前目录下的restore-profiles.sh脚本,并传入参数192.168.110.1:8000,用于将预定义的网络配置文件恢复到指定 ATC Web API 地址:

shell 复制代码
cd ~/atc/augmented-traffic-control/utils
shell 复制代码
./restore-profiles.sh 192.168.110.1:8000

5.打开ATC网页

使用的设备(手机电脑均可)连接前面设置好的热点"haha",然后打开网页:192.168.110.1:8000

可以看到成功打开:

输入想要造成弱网的设备Address和Token,就可以操控对应设备啦!(不设置就是操控本机)

还有很多对应的参数可以设置:

我想要验证的是丢包率,所以给这个参数设置为"10",丢包率即为10%

点击Update Shaping即可。

在实际开发与测试工作中,弱网环境的复现往往受限于物理位置和网络条件。通过将Facebook ATC 部署在树莓派上作为局域网弱网网关,并配合 Cpolar内网穿透,我们能轻松突破这些限制:

  • 当你在家或咖啡馆远程办公时,只需用手机连接树莓派创建的Wi-Fi热点,再通过Cpolar生成的公网链接打开ATC控制面板,即可实时模拟2G、高延迟或丢包场景,调试App在弱网下的加载逻辑、超时处理或降级策略;
  • 团队协作时,无需每人搭建一套环境,所有人共用同一台ATC设备,产品经理、测试、前端均可通过同一个Cpolar链接访问并切换网络预设,确保测试条件一致;
  • 向远程同事演示问题也变得极其简单------只需分享Cpolar链接,对方就能亲眼看到"为什么用户在地铁里打不开页面",甚至亲手调整参数复现问题,大幅提升沟通效率。

这种"ATC + Cpolar"组合,以极低的成本实现了专业级的远程弱网测试能力,真正让网络质量可控、可测、可共享。

接下来跟我一起部署cpolar吧!

6.安装cpolar实现随时随地搭建弱网环境

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

官网在此:https://www.cpolar.com

使用一键脚本安装命令:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

shell 复制代码
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

7.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理------创建隧道:

  • 隧道名称:可自定义,本例使用了:atc,注意不要与已有的隧道名称重复

  • 协议:http

  • 本地地址:8000

  • 域名类型:随机域名

  • 地区:选择China Top

    点击创建:

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

8.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china top,然后设置一个二级子域名名称,我这里演示使用的是atcc,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理------隧道列表,找到所要配置的隧道atc,点击右侧的编辑

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问本地部署的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

这样,我们就可以在有需要时立刻打造弱网环境啦!

总结

本文详细介绍了如何在树莓派上利用开源的ATC工具,构建一个低成本、便携式的弱网模拟环境。成功实现了对连接设备的网络条件精准控制------包括带宽限制、延迟注入、丢包、乱序等典型弱网场景。

进一步结合Cpolar 内网穿透工具,还将Web控制面板暴露至公网,支持远程访问与协作,极大提升了测试灵活性。

该方案不仅适用于个人开发者在家或外出时调试移动端应用的弱网表现,也便于团队共享统一的测试环境,快速复现和验证网络相关问题。尽管ATC项目已归档,但其轻量、直观、无需客户端的特性,使其在树莓派等边缘设备上仍具有极高的实用价值,是构建真实网络体验验证体系的有效手段。

感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

相关推荐
Freak嵌入式2 天前
小作坊 GitHub 协作闭环:fork-sync-dev-pr-merge 实战指南
python·github·远程工作·代码规范·micropython·协作
半页码书3 天前
2026年哪个AI改简历最好用
人工智能·chatgpt·面试·求职招聘·职场发展·远程工作
竹之却7 天前
【Minecraft】我的世界 Windows 开服,内网穿透教程
frp·内网穿透·我的世界·minecraft·樱花穿透·sakurafrp·我的世界开服
绝世唐门三哥8 天前
MacOS下内网穿透工具cpolar使用教程(Mac 版)
macos·内网穿透
白玉cfc8 天前
git协作开发
git·团队开发·远程工作
竹之却8 天前
【Linux】内网穿透原理
linux·服务器·网络·frp·内网穿透·p2p·xtcp
MIXLLRED10 天前
树莓派4B(Ubuntu 22.04 Jammy arm64)上从源码编译安装 librealsense
ubuntu·树莓派·librealsense
你疯了抱抱我11 天前
【自用】moonlight+sunshine,公网直连内网,低延迟远程串流。
远程工作·远程控制·云服务·串流
ChaseDreamRunner11 天前
Cloudflare + 浏览器远程桌面(Zero Trust)
远程工作·持续部署
竹之却12 天前
如何使用 SakuraFrp 做内网穿透
运维·服务器·网络·frp·内网穿透·sakurafrp