from http://blog.chinaunix.net/article.php?a ... logId=3689
我們內部有一個Nat的環境使用的IP範圍是192.168.0.0/24
要監控192.168.0.1這個ip的流量
首先我們先新增兩條rule
iptables -A FORWARD -s 192.168.0.1 -j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j ACCEPT
我們使用iptables -L FORWARD -nvx看看我們剛剛建的這兩個rule
Chain FORWARD (policy ACCEPT 3109 packets, 1529728 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 192.168.0.1 0.0.0
0 0 ACCEPT all -- * * 0.0.0.0/0 192.168.0.1
^^^^^^
這個就是我們要監控的主角了
第一個rule表示不管連到哪邊只要來源是192.168.0.1的封包都會經過這條規則
同時bytes也會根據封包的資料量作累加的動作
第二個rule則是不管來源是哪裡只要目的地是192.168.0.1就列入紀錄
所以拉第一條規則就192.168.0.1這個ip的上傳資料量
第二條就是下載的資料量了
我們用個簡單的文字處理規則取出上下傳的資料量
iptables -L FORWARD -nvx|grep "192.168.0.1 *0.0.0.0/0 *$"|awk {'print '}---->上傳
iptables -L FORWARD -nvx|grep "0.0.0.0/0 *192.168.0.1 *$"|awk {'print '}---->下載
然後寫個script擺在cron裡面定期的去檢查就ok拉....當使用量破表時嘿嘿就把這兩個rule設為drop那192.168.0.1這個ip就在也出不去了
[實作]
以下是我寫的兩支script
將checkquota.sh丟到crontab裡面每隔一段時間跑一次作檢查動作
#################checkquota.sh####################
#!/bin/bash
HostRange=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print '})
InQuota=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print '})
OutQuota=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print '})
TrafficIn=`iptables -L FORWARD -nxv|grep "0.0.0.0/0 *$HostRange *$"|awk {'print
$2'}`
TrafficOut=`iptables -L FORWARD -nvx|grep "$HostRange *0.0.0.0/0 *$"|awk {'print
$2'}`
echo "In:$TrafficIn/$InQuota"
echo "Out:$TrafficOut/$OutQuota"
if [ $TrafficIn -gt $InQuota ] ; then
iptables -D FORWARD -d $HostRange -j ACCEPT
iptables -A FORWARD -d $HostRange -j DROP
fi
if [ $TrafficOut -gt $OutQuota ] ; then
iptables -D FORWARD -s $HostRange -j ACCEPT
iptables -A FORWARD -s $HostRange -j DROP
fi
###############################################
將zerocount.sh也擺到cron裡面每隔一段時間就將count歸0
###################zerocount.sh####################
#!/bin/bash
HostRange=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print '})
InQuota=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print '})
OutQuota=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print '})
iptables -F
iptables -X
iptables -A FORWARD -s $HostRange -j ACCEPT
iptables -A FORWARD -d $HostRange -j ACCEPT
最後再編輯一個檔案/etc/NetUsage.conf
裡面的內容就像這樣
ip位址 下傳限制 上傳限制
例如
192.168.0.1 1024000 2048000
表示192.168.0.1這個ip下傳限制1024000bytes 上傳2048000bytes
也可以針對某個網段作限制
192.168.0.0/24
這樣表示192.168.0.0~192.168.0.255都列入限制(注意這裡是指全部加起來的流量喔)
這個script只有簡單的針對單一範圍作設限
用 iptables 來限制流量
前往
- Software
- ↳ CodeCharge Studio
- ↳ CodeCharge
- ↳ DemoCharge
- ↳ SuperPDF
- ↳ 551einv
- ↳ E3進銷存
- 程式語言
- ↳ PHP
- ↳ CodeLobster PHP Edition
- ↳ Yii
- ↳ CodeIgniter
- ↳ Phalcon
- ↳ Symfony
- ↳ FuelPHP
- ↳ Zend Framework 2
- ↳ laravel
- ↳ WordPress
- ↳ ASP.NET/C#
- ↳ ASP/VBScript
- ↳ JSP
- ↳ Java Servlets
- ↳ ColdFusion
- ↳ Perl
- ↳ Java Script
- ↳ jQuery
- ↳ HTML + CSS
- ↳ jQuery
- ↳ nodejs
- ↳ VB6
- ↳ Git
- ↳ App Inventor 2
- ↳ bash
- ↳ C++/ VC/ OpenCV
- ↳ OpenCV
- ↳ go
- ↳ cordova
- ↳ python
- ↳ Xamarin
- ↳ Assembly
- 資料庫
- ↳ MySQL
- ↳ PostgreSQL
- ↳ ORACLE
- ↳ Access
- ↳ SQL Server
- ↳ SQLite
- ↳ MariaDB
- ↳ Mongodb
- 作業系統
- ↳ Linux
- ↳ Ubuntu
- ↳ CentOS
- ↳ Mint
- ↳ Mandriva
- ↳ Debian
- ↳ Red Hat Enterprise Linux
- ↳ Oracle Linux
- ↳ Fedora
- ↳ Kali Linux
- ↳ OpenSUSE
- ↳ Elementary OS
- ↳ Microsoft
- ↳ Server 2008 R2
- ↳ Server 2012 R2
- ↳ Server 2012
- ↳ 8
- ↳ 10
- ↳ System Center 2016
- ↳ NOVELL
- ↳ FreeBSD
- ↳ VMware
- ↳ VirtualBox
- ↳ Mac OS X
- ↳ Solaris
- ↳ iOS
- ↳ Android
- ↳ Cloud
- ↳ OpenStack
- ↳ Docker
- ↳ Proxmox VE
- ↳ CloudReady
- ↳ chrome
- 網頁伺服器
- ↳ apache
- ↳ tomcat
- ↳ nginx
- ↳ IIS
- ↳ JBoss
- ↳ weblogic
- ↳ WebHosting
- 硬體
- ↳ 硬體及週邊
- ↳ RouterOS
- ↳ LEGO NXT
- ↳ Arduino
- ↳ MSP430
- ↳ Raspberry Pi
- ↳ OpenERP
- ↳ Storage
- ↳ Server
- ↳ Brocade
- ↳ MODELS
- ↳ FortiGate
- 軟體
- ↳ sublime
- ↳ LibreNMS