SASA DESIGN

Open Your mind, Open Your Source Code!

Трафик Контрол решение на Ubuntu 8.10

5 ноември, 2008 – 5:54 pm

Автор: believer

Ubuntu
Искам да споделя опита си с вас как постигнах бързо и лесно трафик контрол на Убунту 8.10

eth0 – internet
eth1 – local

Настройваме мрежовите карти в etc/network/interfaces

След това инсталираме пакетите:

# apt-get install dnsmasq ipmasq firestarter

Изтегляме си пакета Shaper, който може да се намери за Убунту 8.04 и по стари версии.

В etc/shaper си правим съответните файлове с ограниченията за download.

Активираме във firestarter функцията NAT на eth1.

Ако всичко е наред вече имаме интернет на другите машини в локалната мрежа и те имат съответните ограничения посредством Shaper и необходимите правила посредством firestarter

За ограничаване на upload използваме следният скрипт, като го правим да се зарежда със стартирането на системата:


#!/bin/sh
#
# Simple init.d shell script that can to modified to fit your favorite distro
#
# All Rates are in Kbits, so in order to gets Bytes divide by 8
# e.g. 25Kbps == 3.125KB/s
#

TC=/sbin/tc
IPT=/sbin/iptables

# Tuk zadavame skorostite

DNLD=150Kbit # DOWNLOAD Limit
DWEIGHT=15Kbit # DOWNLOAD Weight Factor ~ 1/10 of DOWNLOAD Limit
UPLD=250KBit # UPLOAD Limit
UWEIGHT=20Kbit # UPLOAD Weight Factor

tc_start() {
# $TC qdisc add dev eth1 root handle 11: cbq bandwidth 100Mbit avpkt 1000 mpu 64
# $TC class add dev eth1 parent 11:0 classid 11:1 cbq rate $DNLD weight $DWEIGHT allot 1514 prio 1 avpkt 1000 bounded
# $TC filter add dev eth1 parent 11:0 protocol ip handle 4 fw flowid 11:1

$TC qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000 mpu 64
$TC class add dev eth0 parent 10:0 classid 10:1 cbq rate $UPLD weight $UWEIGHT allot 1514 prio 1 avpkt 1000 bounded
$TC filter add dev eth0 parent 10:0 protocol ip handle 3 fw flowid 10:1
}

tc_stop() {
$TC qdisc del dev eth0 root
$TC qdisc del dev eth1 root
}

tc_restart() {
tc_stop
sleep 1
tc_start
}

tc_show() {
echo „“
echo „eth0:“
$TC qdisc show dev eth0
$TC class show dev eth0
$TC filter show dev eth0
echo „“

echo „eth1:“
$TC qdisc show dev eth1
$TC class show dev eth1
$TC filter show dev eth1
echo „“
}

# Zadavame ip-tata za ogranichenie na download

#$IPT -t mangle -A FORWARD -s ! 192.168.1.0/24 -d 192.168.1.128/29 -j MARK –set-mark 4
#$IPT -t mangle -A FORWARD -s ! 192.168.1.0/24 -d 192.168.1.6 -j MARK –set-mark 4

# Zadavame ip-tata za ogranichenie na upload

#$IPT -t mangle -A FORWARD -s 192.168.1.128/29 -j MARK –set-mark 3
#$IPT -t mangle -A FORWARD -s 192.168.1.6 -j MARK –set-mark 3
$IPT -t mangle -A FORWARD -s 192.168.1.0/24 -j MARK –set-mark 3

case „$1″ in
start)
echo -n „Starting bandwidth shaping: “
tc_start
echo „done“
;;

stop)
echo -n „Stopping bandwidth shaping: “
tc_stop
echo „done“
;;

restart)
echo -n „Restarting bandwidth shaping: “
tc_restart
echo „done“
;;

show)
tc_show
;;

*)
echo „Usage: /etc/init.d/tc.sh {start|stop|restart|show}“
;;
esac

exit 0

Напиши коментар