服务器流量监控与限制脚本指南
概述
本指南详细介绍一个自动化脚本,用于实时监控Linux服务器网络流量。当流量超过预设阈值时,脚本会自动限制除SSH(端口22)外的所有网络访问,并于每月指定日期重置流量统计,有效防止流量被恶意刷取。
脚本功能
- 实时流量监测:持续监控网络接口的进出流量
- 智能阈值控制:当流量超过设定限制时自动启用防护
- SSH连接保持:确保管理端口(22)始终可访问
- 按月重置机制:每月固定日期清零流量统计
- 灵活配置选项:支持多种流量检测模式
依赖环境
脚本运行需要以下软件包支持:
| 软件包 |
功能描述 |
| iptables |
Linux内核防火墙配置工具 |
| bc |
高精度计算器 |
| vnstat |
网络流量监控工具 |
环境安装
1 2
| sudo apt-get update sudo apt-get install -y iptables bc vnstat
|
脚本参数详解
脚本接受四个可配置参数:
| 参数 |
说明 |
默认值 |
示例 |
| LIMIT_GB |
每月流量阈值(GB) |
1024 |
19 |
| reset_day |
每月重置日期 |
1 |
1 |
| CHECK_TYPE |
流量检测类型 |
4 |
3 |
| INTERFACE |
网络接口名称 |
自动检测 |
eth0 |
CHECK_TYPE 详解
- 1:仅监控上传流量
- 2:仅监控下载流量
- 3:监控上传和下载流量中的较大值
- 4:监控上传和下载流量总和
使用方法
1. 脚本权限设置
1
| chmod +x traffic_monitor.sh
|
2. 执行脚本
1
| bash traffic_monitor.sh 19 1 3 eth0
|
3. 运行示例输出
1 2 3 4 5 6 7 8
| 流量限制:19456 MiB 流量将在每月的第 1 天重置 还有 1 天流量将会重置 正在监控的网络接口:eth0 当前月份:Oct '24 当前上传流量为:29.39 MiB,下载流量为:7.90 MiB。 作为比较的流量是:上传流量。 流量在设定的限制内,所有流量都被允许。
|
自动化部署
通过crontab设置定时任务,实现每5分钟自动执行一次监控:
1
| (crontab -l ; echo "*/5 * * * * /root/traffic_monitor.sh 19 1 3 eth0 > /root/traffic-log.txt") | crontab -
|
此配置将脚本输出重定向至/root/traffic-log.txt文件,便于后续查看和分析。
核心特性
- 智能重置逻辑:正确处理月末边界情况
- 多维度监控:支持四种不同的流量检测策略
- 网络接口自动检测:简化部署流程
- 全面的日志记录:便于问题排查和审计
- 安全的例外处理:确保管理通道畅通
该解决方案为服务器管理员提供了可靠的流量管控工具,有效平衡业务需求与资源保护。