TrafficShark是基于 Facebook/atc 改造后的弱网模拟和抓包工具,可以快速进行弱网配置生成和对指定设备设置,同时还能实时抓包,查看设备上的传输详细信息。
TrafficShark项目是开源的,目标是希望大家能基于TrafficShark根据各自业务场景做定制,下一篇会介绍项目设计。
整体设备关系如下图,在树莓派通过lan0端口连接外网,wan0端口建立AP,并且在lan0和wan0之间建立包转发规则。测试设备通过连接AP接入网络,PC设备可以通过局域网直接访问树莓派的8080端口,打开TrafficShark控制面板进行控制。
TrafficShark主界面由2部分组成:
- Machine Settings - 测试设备管理和配置
- Network Profiles - 弱网配置管理
网络配置管理可以创建、编辑、删除相关配置,目前网络配置能力与 Facebook/atc 的一致,可以设置Bandwidth、Latency、Loss、Corruption、Reorder等,保存后即可在主页看到相应配置。
对已被使用的网络配置进行编辑、删除,则会弹出相应提示,确认后会立即生效到各个使用设备上。
设备管理页面会自动扫描并列出当前已经连入AP的设备MAC和IP,之前有扫描过的但是当前没有在线的设备会显灰,如果超过2天都没有出现,则直接删除。
设备控制功能:
- Profile - 可以为设备选择已保存的网络配置
- Turn On - 把当前设备的网络配置启用,立即对设备的网络环境进行限制
- Update - 把当前设备的网络配置选择保存下来,如果已经Turn On则立马生效到设备网络环境中
- Capture - 打开该设备的抓包管理页面(Capture Panel)
抓包管理页面主要提供以下功能:
- 设置抓包过滤器(filter)
- 开启抓包
- General页 - 实时显示设备上下行流量
- Detail页 - 实时显示设备抓到的包
- 导出pcap文件
输入自定义filter后(如不输入则抓当前设备所有包),点击 Start Capture,则可以看到当前设备实时流量情况:
切换到Detail页面,则可以看到详细的包信息:
每行包数据分别是时间(到毫秒)、源IP、目标IP、包大小、包层类型,点击每个item,还能展开查看每个包的每层包数据:
点击Export pcap,能立即把当前抓包情况通过pcap文件下载,下载后的文件可通过wireshark等其它抓包分析工具打开:
- 硬件
- 树莓派3代(板载WiFi),这是我购买的店铺(不是卖广告)
- 连到外网的路由器(随意,我用的是cisco),树莓派与路由器通过网线连接
- Macbook Pro 2012款
- 测试手机若干
- 软件
- 树莓派3代系统 - Linux raspberrypi 4.4.50-v7+
- OS X 10.11.6
下面开始在Mac中ssh到树莓派上进行环境配置。
参考文章: USING YOUR NEW RASPBERRY PI 3 AS A WIFI ACCESS POINT WITH HOSTAPD
在使用apt-get之前,先更新一下源,推荐使用aliyun的,可以上网找相关文章
sudo apt-get install dnsmasq hostapd
sudo vim /etc/dhcpcd.conf
末尾添加:
denyinterfaces wlan0
sudo vim /etc/network/interfaces
对wlan0接口重新编辑:
allow-hotplug wlan0
iface wlan0 inet static
address 172.24.1.1
netmask 255.255.255.0
network 172.24.1.0
broadcast 172.24.1.255
sudo vim /etc/hostapd/hostapd.conf
添加如下内容:
interface=wlan0
driver=nl80211
ssid=Pi3-AP
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=raspberry
rsn_pairwise=CCMP
sudo vim /etc/dnsmasq.conf
添加如下内容:
interface=wlan0
listen-address=172.24.1.1
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=172.24.1.50,172.24.1.150,12h
sudo vim /etc/rc.local
在exit 0之前添加如下内容:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo reboot
重启,让配置生效
sudo hostapd /etc/hostapd/hostapd.conf
启动AP,成功后可看到:
- 安装git
- 安装python
- 安装pip
参考命令: sudo apt-get install git python python-pip
TrafficSharkService是TrafficShark的后台管理进程服务
pi@raspberrypi:~ $ git clone [email protected]:traffic-shark/traffic-shark-service.git
pi@raspberrypi:~/traffic-shark-service $ sudo ./install.sh
pi@raspberrypi:~/traffic-shark-service $ sudo ./run.sh
运行成功后应如下:
TrafficSharkConsole是TrafficShark的前台控制面板
pi@raspberrypi:~ $ git clone [email protected]:traffic-shark/traffic-shark-console.git
pi@raspberrypi:~/traffic-shark-console $ sudo ./install.sh
pi@raspberrypi:~/traffic-shark-console $ sudo ./run.sh
运成功后应如下:
在PC中直接通过浏览器访问{树莓派ip}:8080地址即可看到: