iptables 限制流量
2009-05-13 01:14:45来源:未知 阅读 ()
iptables -A FORWARD -s 192.168.0.1 -j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j ACCEPT
我們內部有一個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 $2'}---->上傳
iptables -L FORWARD -nvx|grep "0.0.0.0/0 *192.168.0.1 *$"|awk {'print $2'}---->下載
然後寫個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 $1'})
InQuota=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print $2'})
OutQuota=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print $3'})
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 $1'})
InQuota=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print $2'})
OutQuota=$(cat /etc/NetUsage.conf|grep "^[^ *#]"|awk {'print $3'})
iptables -F
iptables -X
iptables -A FORWARD -s $HostRange -j ACCEPT
iptables -A FORWARD -d $HostRange -j ACCEPT
最後再編輯一個檔案/etc/NetUsage.conf
裡面的內容就像這樣
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 问一下:ipfw+natd 如何实现回流端口映射 2009-05-13
- PF做的连接数限制怎么不管用.. 2009-05-13
- 使用mod_cband管理Apache 2带宽和流量 2009-05-13
- FreeBSD 安装 iftop 来监测网络流量 2009-05-13
- FreeBSD下用bandwidthd监控网络流量 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash