【限速】limit_download.sh
使用iptables 做簡單的限速政策。
<code>#!/bin/bash</code>
<code>#</code>
<code># limit port 80 download speed.</code>
<code>ACTION=$1</code>
<code>n_port=80</code>
<code># n_limit * 15/100 KB, 100Mbit/s = 10MB/s = 10 * 1000 KB/s</code>
<code>n_limit=$2</code>
<code>[ ! -z $n_limit ] || n_limit=3000</code>
<code>n_limit_burst=$3</code>
<code>[ ! -z $n_limit_burst ] || n_limit_burst=3000</code>
<code>function</code> <code>add(){</code>
<code> </code><code>iptables -A OUTPUT -p tcp -m tcp --sport $n_port -m limit --limit $n_limit</code><code>/sec</code> <code>--limit-burst $n_limit_burst -j ACCEPT </code>
<code> </code><code>iptables -A OUTPUT -p tcp -m tcp --sport $n_port -j DROP </code>
<code> </code><code>service iptables save</code>
<code>}</code>
<code>function</code> <code>del(){</code>
<code> </code><code>iptables -D OUTPUT -p tcp -m tcp --sport $n_port -m limit --limit $n_limit</code><code>/sec</code> <code>--limit-burst $n_limit_burst -j ACCEPT </code>
<code> </code><code>iptables -D OUTPUT -p tcp -m tcp --sport $n_port -j DROP </code>
<code>function</code> <code>cls() {</code>
<code> </code><code>iptables -F OUTPUT </code>
<code>function</code> <code>stat() {</code>
<code> </code><code>iptables -L -n |</code><code>sed</code> <code>-n </code><code>'/OUTPUT/,$p'</code>
<code>case</code> <code>${ACTION} </code><code>in</code>
<code> </code><code>add)</code>
<code> </code><code>add</code>
<code> </code><code>stat</code>
<code> </code><code>;;</code>
<code> </code><code>del)</code>
<code> </code><code>del</code>
<code> </code><code>clear</code><code>)</code>
<code> </code><code>cls</code>
<code> </code><code>new)</code>
<code> </code><code>status)</code>
<code> </code><code>*)</code>
<code> </code><code>cat</code> <code><<_START</code>
<code>Usage: </code>
<code> </code><code>$0 [add|del|new|</code><code>clear</code><code>|status] limit limit_burst </code>
<code> </code><code>[default setting: limit=$n_limit, limit_burst=$n_limit_burst]</code>
<code>eg:</code>
<code> </code><code>$0 add add a rule to OUTPUT Chain. [default]</code>
<code> </code><code>$0 del delete a rule from OUTPUT Chain. [default]</code>
<code> </code><code>$0 new </code><code>clear</code><code>->add.</code>
<code> </code><code>$0 </code><code>clear</code> <code>delete all rules </code><code>in</code> <code>OUTPUT Chain.</code>
<code> </code><code>$0 status show iptables OUTPUT Chain.</code>
<code> </code><code>$0 add 2500 3000 add a rule to OUTPUT Chain.</code>
<code>_START</code>
<code>esac</code>
本文轉自 pcnk 51CTO部落格,原文連結:http://blog.51cto.com/nosmoking/1594650,如需轉載請自行聯系原作者