很多ubunto 都有流量限制,使用流量。如每天使用200M ,超过了就要提示信息

原理,在本机 开一个 http 服务, 显示错误信息,哪流量使用完以后,使用 iptables 将 流量转发到 本机的 http 上,

这样用户浏览器上就会显示出来提示信息。

用 python 2.7 。如果你是 python3.x 需要修改一下 print

py_http.py

#!/usr/bin/python
#author : ningci dev
import socket
import signal
import errno
from time import sleep def HttpResponse(header,context):
response = "%s %d\n\n%s\n\n" % (header,len(context),context)
return response HOST = "127.0.0.1"
PORT = 8000 httpheader = '''\
HTTP/1.1 200 OK
Context-Type: text/html
Server: Python-Server version 1.0
Context-Length: ''' sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((HOST, PORT))
sock.listen(2) while 1:
clientfd,addr = sock.accept()
print "connect by ",addr
data = clientfd.recv(1024)
print data
clientfd.send(HttpResponse(httpheader,'net works is down !'))
clientfd.close() print 'Done'

可以配置到 rc.d 的自启动中。

或者 python py_http.py & 这样测试。

打开浏览器,访问进行测试。

测试成功了。

接下来就是配置 iptables 了。

主要是使用 python 调用 vnstat 流量统计 ,当达到设定的值后,添加 iptables 转发rule。

转发rule

# 将 对于 80、443 端口的访问 重定向到 8000 端口 </P><P>
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to  127.0.0.1:8000
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 127.0.0.1:8000

启内核IP转发
sudo vi /etc/sysctl.conf

取消掉 net.ipv4.ip_forward=1 这一行的注释
然后执行
sudo sysctl -p

最新文章

  1. 给钛度产品的一些建议(Note)
  2. C#_基础:排序算法
  3. LInux_System_Call_INT_80h
  4. 【转】Timer还是Handler
  5. JAVA反射技术的使用
  6. codeforces 27E . Number With The Given Amount Of Divisors 搜索+数论
  7. 线性代数-矩阵-【5】矩阵化简 C和C++实现
  8. 06 Activity 4中启动模式
  9. Ubuntu中的出现:主文件夹的内容跑在桌面显示解决方案。同时 vim编辑器的操作
  10. ubuntu16.04 解决boot空间不足
  11. 使用Intellij搭建Servlet开发环境
  12. nginx 根据端口不同实现负载均衡
  13. git修改提交的用户名
  14. grafana + influxdb + telegraf
  15. openvpn 负载均衡方案
  16. Ubuntu 安装 Caffe
  17. iOS:Masonry约束经验(19-03-21更)
  18. javascript 创建对象的几种方式
  19. 汇编指令与Intrinsics指令的对应关系汇总
  20. [bzoj] 2694 Lcm || 莫比乌斯反演

热门文章

  1. Java多线程基础详解
  2. particlesJS is not defined
  3. scarce|component|
  4. FastJson的学习之JSON互相转Map集合,List集合,JavaBean
  5. dTree动态生成树(后台处理,简化前台操作)
  6. 解决android 无法打开 DDMS 中的data目录
  7. 使用Navicat for Oracle工具连接oracle出错:ORA-12737
  8. JavaScript 语言精粹笔记3
  9. Allenmind's Blog
  10. Sublime Text3 旧版本下载以及破解激活方式