You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Ubuntu 22.04服务器设置出站流量硬限制以避免超额收费?

如何为Ubuntu 22.04服务器设置出站流量硬限制以避免超额收费?

当然有办法!针对你的Ubuntu 22.04服务器需求,这里有两种实用方案帮你实现出站流量的硬限制——一旦达到月度限额,就直接阻断所有出站请求,彻底杜绝超额收费的风险:

方案一:用iptables quota模块实现简单硬限制

这个方案适合追求直接、快速生效的场景,核心是利用iptables的quota模块累计出站流量,超过阈值后直接拦截所有请求。

  1. 转换限额单位:先把你的月度流量限额转换成字节(1GB = 1073741824字节)。比如你的限额是100GB,对应的字节数就是 100*1073741824 = 107374182400。
  2. 添加iptables规则:执行以下命令设置流量限制:
    # 先放行未超过限额的出站流量
    sudo iptables -I OUTPUT 1 -m quota --quota 107374182400 -j ACCEPT
    # 超过限额后,直接阻断所有出站请求
    sudo iptables -A OUTPUT -j DROP
    
    解释:第一条规则会累计统计出站流量,只要没超过设定的限额就放行;一旦流量达标,后续所有出站请求都会被第二条规则直接丢弃。
  3. 持久化规则:为了避免服务器重启后规则失效,安装iptables持久化工具:
    sudo apt update && sudo apt install iptables-persistent
    sudo netfilter-persistent save
    
    注意:这个quota是一次性累计的,每月初需要手动重置规则(或者写个定时脚本自动重置),否则下个月流量统计不会清零。

方案二:结合vnstat监控+定时脚本实现自动月度限制

如果你希望每月自动重置流量统计,不用手动操作,可以用这个方案——通过vnstat监控月度流量,配合定时脚本自动触发拦截。

  1. 安装vnstat流量监控工具:
    sudo apt update && sudo apt install vnstat
    
  2. 配置vnstat监控外网网卡:先通过ip a命令确认你的外网网卡名(比如eth0或ens33),然后执行:
    sudo vnstat -u -i eth0
    
  3. 编写流量监控脚本:创建一个名为traffic-limit.sh的脚本,路径可以选/usr/local/bin/,内容如下:
    #!/bin/bash
    # 这里设置你的月度流量限额(单位:GB)
    MONTHLY_LIMIT=100
    # 外网网卡名,和上面配置的一致
    NET_INTERFACE="eth0"
    # 获取当前月度出站流量(单位:GB)
    CURRENT_TRAFFIC=$(vnstat -i $NET_INTERFACE --month | grep "tx" | awk '{print $2}')
    # 比较流量是否超过限额
    if (( $(echo "$CURRENT_TRAFFIC > $MONTHLY_LIMIT" | bc -l) )); then
        # 超过限额,阻断所有出站请求
        sudo iptables -P OUTPUT DROP
        # 记录日志到系统日志文件
        echo "$(date '+%Y-%m-%d %H:%M:%S'): 出站流量已达${CURRENT_TRAFFIC}GB,超过月度限额${MONTHLY_LIMIT}GB,已阻断所有出站请求" >> /var/log/traffic-limit.log
    else
        # 未超过限额,确保出站请求正常放行
        sudo iptables -P OUTPUT ACCEPT
    fi
    
  4. 给脚本添加执行权限:
    sudo chmod +x /usr/local/bin/traffic-limit.sh
    
  5. 设置定时任务:让系统每小时自动检查一次流量,执行sudo crontab -e打开定时任务编辑器,添加一行:
    0 * * * * /usr/local/bin/traffic-limit.sh
    
    保存退出后,系统就会每小时执行一次脚本,自动判断是否需要阻断出站流量。
    另外,vnstat会自动在每月初重置月度流量统计,不用手动干预。

额外注意事项

  • 测试规则:可以先设置一个很小的限额(比如100MB=104857600字节)测试,确保规则生效后再改为正式限额。
  • 保留必要出站:如果需要保留SSH等管理连接,可以在阻断规则前添加例外:
    sudo iptables -I OUTPUT 1 -p tcp --dport 22 -j ACCEPT
    
    这样即使流量超限,你依然可以通过SSH远程管理服务器。

备注:内容来源于stack exchange,提问作者Erel Segal-Halevi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:49:28