其他测试框架 用路由器搭建 facebook ATC

blueshark · 2017年09月26日 · 最后由 阿三 回复于 2020年06月17日 · 1426 次阅读
本帖已被设为精华帖!

一、ATC 简单介绍

Augmented Traffic Control(ATC)是 facebook 的开源移动网络测试工具,可以用来控制手机所连接的 wifi 的网络速率等参数,从来模拟移动弱网环境。

只要搜索 facebook ATC 就可以找到很多关于 ATC 环境搭建的文章,比如说FaceBook ATC 弱网测试工具环境搭建,我总结了一下,主要分以下几个步骤:

  1. 安装 hostap。hostap 的主要作用是将无线网卡作为一个分享的热点。
  2. 安装 isc-dhcp-server。这是一个 dhcp 服务器,连上热点的手机通过 dhcp 服务器获取 ip,进而才能通过网关上网。
  3. 设置 NAT 转发。简单来说就是把一个可以上网的网卡流量转发到分享热点的网络。
  4. 安装 ATC。这是控制网速的主要部件,具体原理我了解的也不是很深。
  5. 安装 python web 服务器。这是供用户设置网速的界面,我想 ATC 用 python web 原因可能是 python 操作系统的东西更擅长些,虽然 python 在 web 方面没有什么优势。

二、抛弃无线网卡,用无线路由器分享无线网络

我看到网上很多 ATC 教程把用无线网卡分享热点这部分写的非常详细,而且问题非常多,主要如下:

  1. hostap 搭建成功率比较低。这是因为无线网上在 linux 上的驱动问题,与操作系统的无线网卡的品牌有关。
  2. 热点不稳定。主要表现在长时间运行或者连接的设备数量比较多的时候就会出现断线等问题。
  3. 热点传输的距离有限。无线网卡的功率比较小,传输的距离很短。

实际上,如果深入了解一下 ATC 的原理和一些路由知识就会明白,用无线网卡分享热点的目的就是提供一个可以接入的无线网(其实就是一个独立的局域网),而路由器完全是为了这个用途而生,我们完全可以用路由器代替无线网卡,搭建一个稳定可靠的 ATC 环境。

搭建步骤如下:

1、首先确认你的路由器可以把 DHCP 功能关掉。普通路由器其实具备路由器交换机两种功能,只要把 DHCP 服务器关掉就可以当作交换机用。下面以 TP-LINK 路由器为例说明如果关掉 DHCP。如下图所示,打开 tplink 路由器的设备界面,在右边栏中展示 DHCP 服务器节点,可以看到有启用和不启用两个选项,选中不启用,点击保存就可以关闭路由器的 DHCP 服务器功能。

为了避免和网关重复,应该在 LAN 设置中把 IP 地址改成一个非网关的地址,不要在使用 192.168.1.1 这种的,比如说改成 192.168.1.254,管理的时候要输设置的 LAN IP。

2、需要你的电脑具有两个网卡。如果没有,可以买一个最便宜的 USB 有线网卡。确保其中一个网卡可以正常上网(一般是电脑自带网卡)。

3、将要分享网络的网卡连接到路由器的 LAN 口,注意,是 LAN 口而不是 WAN 口!路由器后面有标示的。

4、用 ifconfig 命令找到 USB 网卡的名称,把这个网卡配置成固定的 IP 当作网关,例如可以配置成 192.168.1.1。然后再配置 dhcp 服务器(isc-dhcp-server),配置完成以后就可以用手机连接无线或者用电脑连接其他的 LAN 口看看能不能获取到 192.168.1.x 网段的 ip,如果能获取到,差不多就完成了。

5、把 USB 网卡当成网上其他教程中的无线网卡,进行其他配置。

二、用无线路由器的优点

  1. 信号强,可以覆盖相当大的空间。
  2. 非常稳定。无线路由器是专业的热点,肯定稳定。
  3. 如果你愿意,可以再拿一个无线路由器插在前一个路由器的 LAN 口作为交换机进行扩展。
共收到 13 条回复 时间 点赞

👍
学习一下,之前用的无线网卡

思寒_seveniruby 将本帖设为了精华贴 09月27日 14:44

去年也是一样的方案搭建了一套。USB 网卡受环境限制较多。

蒋刚毅 回复

USB 网卡也受环境限制?

匿名 #8 · 2017年10月10日

问个问题,如果只是需要限制网速的话,很多路由器都自带这个功能,不止对 mac 地址,还可以对指定 ip 限速,为什么不直接用呢?

路由器自带的模拟环境过于简单 只能限制单一的网速
而网络环境包含网速、延迟、丢包等多种复杂情况组合
(其实我没用过这个工具,从我自己理解和使用谷歌自带的 network conditions 总结的)

2、需要你的电脑具有两个网卡。如果没有,可以买一个最便宜的 USB 有线网卡。确保其中一个网卡可以正常上网(一般是电脑自带网卡) 这个什么意思 难道两个网卡一个可以是坏的

楼主你好! 看到文章中的 "将要分享网络的网卡连接到路由器的 LAN 口",有些不明白。 这里是说电脑需要有两块网卡,而且都是有线网卡吗? 还有能详细说下路由器和电脑之间的网络配置吗?

access 回复

意思是说一个网卡上外网,另外一个网卡用来分享网络

楼主你好,请问用这样搭建的时候还要配置 hostapd.conf 吗?如果要的话那里面的 interface 是不是要和 isc-dhcp-server 里的一样,都改成网卡名字?你文章里说 “把这个网卡配置成固定的 IP 当作网关” 是指在 dhcp.conf 里将 option routers 设为网卡的地址吗?你说 “把 USB 网卡当成网上其他教程中的无线网卡,进行其他配置” 是指这些配置吗?

simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44
simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08

ATC 可以搭建在 Mac mini(自带无线网卡)+docker 吗

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册