vnstat统计vps使用的流量
一. 简介
最近买了个iplc线路nat小鸡,所有流量从内网走,既快又安全,除了每个月只有10G流量,其他都很完美。
10G流量,还是计算进和出的双向10G流量,其实只能认为是5G,这点流量看个视频基本上就gg了。
嗯,所以需要屏蔽视频。不过流量充足的时候还是想可以看看的,那就剩余流量超过3G的时候允许视频,小于3G的时候不允许,就这样。
是不是有点太折腾了呢,折腾就折腾吧,尽可能的使用资源。
二.vnstat统计vps使用的流量
查了下,vnstat可以通过分析/proc文件获取vps的网络使用情况,然后通过命令按小时、天、月展示。
安装
yum -y install vnstat
启动
systemctl start vnstat
开机启动
systemctl enable vnstat
创建网卡数据库,开始统计
如果vps是kvm架构,网卡名称是eth0,执行
vnstat -u -i eth0
ovz的话,执行,
vnstat -u -i venet0
创建网卡数据库,保险点再设置下权限
chown vnstat:vnstat -R /var/lib/vnstat/
vnstat就会在后台开始统计了
检查
可以执行
vnstat -i venet0 -l
检查网卡实时流量,正常显示的话,就没问题啦
读取数据
按月查询流量情况,我这次用到的就是这个命令
vnstat -i venet0 -m
按周查询流量情况
vnstat -i venet0 -w
按天查询流量情况
vnstat -i venet0 -d
按小时查询流量情况
vnstat -i venet0 -h
帮助
vnstat --help
三.屏蔽视频
屏蔽视频通过ipatables来实现
iptables -A OUTPUT -m string --string "netflix.com" --algo bm --to 65535 -j DROP
四.完整的定时监测脚本
echo ""
echo "------ vnstat"
TOTAL_USED=$(vnstat -m | tail -1 | cut -d "|" -f 3)
TOTAL_USED=$(echo ${TOTAL_USED} | cut -d " " -f 1)
echo "TOTAL_USED: ${TOTAL_USED}"
TOTAL_LEFT=$(echo "10-${TOTAL_USED}" | bc)
echo "TOTAL_LEFT: ${TOTAL_LEFT}"
VIDEO_URL_ARRAY=("netflix.com")
if [[ $(echo "${TOTAL_LEFT} <= 3" | bc) = "1" ]]; then
# <=3
if [[ "$(iptables -nL --line-number | grep youtube)" = "" ]]; then
echo "开始 禁止访问视频..."
# 禁止访问
for VIDEO_URL in ${VIDEO_URL_ARRAY[*]}
do
iptables -A OUTPUT -m string --string "${VIDEO_URL}" --algo bm --to 65535 -j DROP
done
fi
else
# >3
if [[ "$(iptables -nL --line-number | grep youtube)" != "" ]]; then
echo "解除 禁止访问视频..."
# 解除
for VIDEO_URL in ${VIDEO_URL_ARRAY[*]}
do
iptables -D OUTPUT -m string --string "${VIDEO_URL}" --algo bm --to 65535 -j DROP
done
fi
fi
五. 总结
一个月6块钱买的小鸡,真实5G流量,1块钱1G流量用起来很爽,真是世界加钱可及,可惜我钱不够...
就这样吧,折腾着
参考: