大家好,我是OpenWrt高级工程师,今天教大家在软路由上配置TikTok带宽可视化,让你实时监控TikTok的流量占用情况。教程分四步:环境准备、TikTok流量识别、带宽统计配置、可视化展示,跟着操作就能搞定!
一、环境准备:软路由和OpenWrt基础配置
首先,确保你的软路由已经刷好OpenWrt系统,推荐使用22.03及以上稳定版(比如OpenWrt 22.03.5),新版本对插件兼容性更好。登录OpenWrt后台(默认地址192.168.1.1,密码你设置的),先做基础配置:
1. 更新软件包列表:进入“系统”-“软件包”,点击“更新列表”,等几分钟刷完最新包。
2. 安装基础插件:在软件包搜索框输入“luci-app-statistics”,找到后点击“安装”,这个插件是流量统计的核心,会自动带依赖collectd。再装“luci-app-nftables”(OpenWrt 21.02后默认用nftables,处理流量规则更高效),点击“安装”并等待完成。
3. 配置网络接口:确保你的软路由WAN口已连接光猫(拨号或DHCP),LAN口连接电脑或交换机,网络通畅。可以在“状态”-“概览”查看WAN口是否获取到IP,确认网络正常。
二、TikTok流量识别:用nftables标记流量
要统计TikTok带宽,得先让软路由认出哪些流量是TikTok的。TikTok的流量特征包括域名(比如tiktok.com、byteoversea.com等)和IP段(比如亚马逊AWS、谷歌云的IP)。我们用dnsmasq解析域名+ nftables标记IP的方式实现:
1. 收集TikTok相关域名:新建一个文本文件,输入以下常见TikTok域名(后续可补充):
tiktok.com
www.tiktok.com
m.tiktok.com
byteoversea.com
api2-cdn.byteoversea.com
mon-va.byteoversea.com
2. 配置dnsmasq解析域名到IP:登录OpenWrt后台,进入“网络”-“DHCP/DNS”,在“自定义DHCP选项”里添加(或者直接编辑/etc/dnsmasq.conf文件,通过SSH登录软路由执行vi /etc/dnsmasq.conf):
address=/tiktok.com/114.114.114.114
address=/byteoversea.com/114.114.114.114
(说明:这里先用公共DNS解析,实际我们会通过脚本获取这些域名的真实IP并添加到nftables集合中)
3. 创建nftables集合存储TikTok IP:通过SSH登录软路由(用Putty或Xshell,用户名root,密码你的OpenWrt密码),执行以下命令创建nftables集合(集合名tiktok_ip,用于存储TikTok的IP地址):
nft add set inet filter tiktok_ip { type ipv4_addr; flags dynamic, timeout; timeout 1d; }
(解释:创建一个名为tiktok_ip的集合,类型是IPv4地址,动态添加,超时时间1天,避免IP过期占用资源)
4. 编写脚本自动更新TikTok IP:新建脚本/usr/bin/update_tiktok_ip.sh(用vi编辑:vi /usr/bin/update_tiktok_ip.sh),输入以下内容:
!/bin/sh
获取TikTok域名并解析IP,添加到nftables集合
DOMAINS=”tiktok.com byteoversea.com api2-cdn.byteoversea.com”
for domain in $DOMAINS; do
ips=$(nslookup $domain 8.8.8.8 | grep “Address:” | tail -n +2 | awk ‘{print $2}’)
for ip in $ips; do
nft add element inet filter tiktok_ip { $ip }
done
done
保存后给脚本执行权限:chmod +x /usr/bin/update_tiktok_ip.sh
5. 设置定时任务自动更新IP:进入OpenWrt后台“系统”-“计划任务”,添加以下内容(每小时更新一次IP,避免TikTok IP变化导致识别不准):
0 /usr/bin/update_tiktok_ip.sh
点击“保存”,这样每小时会自动运行脚本更新TikTok IP到集合中。
6. 创建nftables规则标记TikTok流量:继续在SSH执行以下命令,创建规则将源或目标IP在tiktok_ip集合中的流量标记为“tiktok”(标记用于后续统计):
nft add rule inet filter FORWARD ip daddr @tiktok_ip counter meta mark set 0x1
nft add rule inet filter FORWARD ip saddr @tiktok_ip counter meta mark set 0x1
(解释:在forward链添加规则,目标IP或源IP在tiktok_ip集合中的流量,设置标记为0x1,并计数)
7. 保存nftables规则:执行命令/etc/init.d/nftables save,让规则重启后依然生效。
三、带宽统计配置:用collectd收集TikTok流量数据
现在流量已经标记好了,接下来用collectd插件收集标记流量的带宽数据。collectd是轻量级系统统计工具,luci-app-statistics已经自带,我们只需配置它收集标记的流量数据:
1. 配置collectd的iptables插件(注意:OpenWrt 22.03后collectd支持nftables,但更稳定的是用iptables兼容模式,先启用iptables兼容层):
通过SSH执行:opkg install iptables-nft 安装iptables-nft包(兼容nftables的iptables命令)。
2. 创建iptables规则统计标记流量:执行以下命令,用iptables统计标记为0x1的流量(collectd的iptables插件会读取这些计数器):
iptables -t mangle -A PREROUTING -m mark –mark 0x1 -j ACCEPT
iptables -t mangle -A POSTROUTING -m mark –mark 0x1 -j ACCEPT
保存iptables规则:/etc/init.d/iptables save
3. 配置collectd启用iptables插件:进入OpenWrt后台“服务”-“Statistics”,点击“编辑配置”,在“Plugins”部分找到“iptables”,勾选“启用”,然后在“iptables chains”中添加:
mangle:PREROUTING tiktok_in
mangle:POSTROUTING tiktok_out
(解释:告诉collectd收集mangle表的PREROUTING和POSTROUTING链中标记为tiktok的流量数据,命名tiktok_in和tiktok_out)
4. 配置数据收集间隔:在“Statistics”设置页,“General”选项卡中,“Interval”设置为60(秒),即每分钟收集一次数据,平衡准确性和性能。
5. 启用并启动collectd服务:在“Statistics”设置页,点击“保存并应用”,然后进入“系统”-“启动项”,找到“collectd”,点击“启用”并“启动”,确保服务正常运行。
四、可视化展示:用Grafana打造实时带宽监控面板
OpenWrt自带的Statistics界面比较简单,我们用Grafana+InfluxDB实现更直观的可视化,支持实时图表、历史数据查询,效果更好。
1. 安装InfluxDB和Grafana插件:OpenWrt软件包搜索“luci-app-influxdb”和“luci-app-grafana”,分别安装(注意:InfluxDB和Grafana占用资源较多,建议软路由至少1GB内存、4GB存储空间)。安装时会自动下载依赖包,耐心等待完成。
2. 配置InfluxDB数据库:进入OpenWrt后台“服务”-“InfluxDB”,点击“编辑配置”,设置以下参数:
– 启用服务:勾选“启用”
– 端口:默认8086(保持即可)
– 数据库名:输入“openwrt_stats”(用于存储collectd数据)
– 用户名和密码:设置一个强密码(比如grafana_admin:123456,后续Grafana连接用)
点击“保存并应用”,然后启动InfluxDB服务(“系统”-“启动项”中找到influxdb并启动)。
3. 配置collectd将数据存入InfluxDB:回到“服务”-“Statistics”,点击“编辑配置”,在“Plugins”部分找到“network”,勾选“启用”,设置“Server”为“127.0.0.1”(本地InfluxDB),“Port”为“8086”(InfluxDB端口),然后找到“influxdb”插件(如果collectd版本支持,需安装collectd-mod-influxdb:opkg install collectd-mod-influxdb),配置数据库信息:
– Database: openwrt_stats
– Username: grafana_admin
– Password: 123456
保存并应用collectd配置,重启collectd服务。
4. 配置Grafana并连接InfluxDB:进入OpenWrt后台“服务”-“Grafana”,勾选“启用”服务,端口默认3000,点击“保存并应用”,启动Grafana服务。浏览器访问软路由IP:3000(比如192.168.1.1:3000),默认用户名admin,密码admin,首次登录会要求修改密码,改后进入主界面。
5. 添加InfluxDB数据源:在Grafana主界面点击“Configuration”(齿轮图标)-“Data Sources”-“Add data source”,选择“InfluxDB”,配置以下参数:
– URL: http://127.0.0.1:8086(本地InfluxDB地址)
– Database: openwrt_stats
– User: grafana_admin
– Password: 123456
点击“Save & Test”,显示“Data source is working”表示连接成功。
6. 创建TikTok带宽监控仪表盘:点击“Dashboard”-“New dashboard”-“Add new panel”,进入图表编辑界面:
– 数据源选择“InfluxDB”
– FROM子句:输入“tiktok_in”或“tiktok_out”(对应之前collectd配置的iptables链)
– SELECT子句:选择“value”字段,函数“mean()”(平均值),alias改为“TikTok下载带宽”或“TikTok上传带宽”
– GROUP BY子句:选择“time(__interval)”按时间间隔分组
– 单位设置:右侧“Panel options”中,“Unit”选择“bits/sec”(比特/秒,显示带宽)
– 图表类型:默认“Time series”(时间序列图),适合展示带宽变化
点击“Apply”保存面板,再点击“Save dashboard”输入名称“TikTok带宽监控”,保存。
7. 优化仪表盘(可选):可以添加多个面板,比如分别展示下载、上传带宽,或者添加总流量统计面板(SELECT函数用sum())。还可以设置刷新间隔,点击仪表盘右上角“Refresh”选择“5s”或“10s”,实现实时更新。
五、常见问题处理
1. TikTok IP识别不准:检查update_tiktok_ip.sh脚本是否正常运行,手动执行/usr/bin/update_tiktok_ip.sh,看是否有IP添加到nftables集合(执行nft list set inet filter tiktok_ip查看)。如果nslookup解析失败,可能是DNS问题,尝试更换为8.8.8.8或223.5.5.5。
2. Grafana无法连接InfluxDB:检查InfluxDB服务是否启动(ps | grep influxdb),端口8086是否被占用,防火墙是否放行(OpenWrt“网络”-“防火墙”中添加规则允许LAN访问8086和3000端口)。
3. 带宽数据为0:检查collectd的iptables插件是否正确配置,确认nftables规则是否标记了流量(执行nft list ruleset查看规则,用手机刷TikTok,同时执行nft list ruleset | grep tiktok_ip看计数器是否增加)。
好了,到这里OpenWrt软路由的TikTok带宽可视化就配置完成了!现在你可以通过Grafana仪表盘实时查看TikTok的下载、上传带宽,还能看历史趋势,方便管理网络流量。有问题的朋友评论区留言,我会及时解答~
以上文章内容为AI辅助生成,仅供参考,需辨别文章内容信息真实有效
版权:文章来源: 文章该内容为作者观点,Firekb仅提供信息存储空间服务,不代表Firekb观点或立场。版权归原作者所有,未经允许不得转载。对于因本网站图片、内容所引起的纠纷、损失等,Firekb不承担侵权行为的连带责任。如发现本站文章存在版权问题,请联系:ysdl@esdli.com
转载请注明出处:https://www.esdli.com/7080.html
还没有评论呢,快来抢沙发~