配置ubunto 流量使用限制

Posted 宁次

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置ubunto 流量使用限制相关的知识,希望对你有一定的参考价值。

很多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

以上是关于配置ubunto 流量使用限制的主要内容,如果未能解决你的问题,请参考以下文章

如何在ubunto中安装docker

Nginx流控

Nginx 配置对流量连接和请求的限制

如何通过 localhost 使用多播限制流量

ubuntu卸载软件教程ubunto怎么卸载软件?

我可以在不构建 Ubunto 内核的情况下为 Ubuntu 构建内核驱动程序吗?