服务器流量监控与限制脚本指南

服务器流量监控与限制脚本指南

概述

本指南详细介绍一个自动化脚本,用于实时监控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文件,便于后续查看和分析。

核心特性

  • 智能重置逻辑:正确处理月末边界情况
  • 多维度监控:支持四种不同的流量检测策略
  • 网络接口自动检测:简化部署流程
  • 全面的日志记录:便于问题排查和审计
  • 安全的例外处理:确保管理通道畅通

该解决方案为服务器管理员提供了可靠的流量管控工具,有效平衡业务需求与资源保护。