Nejsem sice autor, ale tady neco je. Neco to dela, i kdyz ani sam velky autor (ja) negarantuje uplne presnou funkcnost, ale treba mi to nekdo pomuze vyladit. Je to pro firmu o dvou pobockach, na firewallu bezi samba server (nepodstatna data, hlavni server je samozrejme zvlast).
---
#!/bin/sh
#
# chkconfig: - 11 89
# description: Single -- purpose settings of tc to firewall
DEV=eth0
start () {
echo -n "Starting QoS tc.init: "
# Vytvorit hlavni disciplinu:
tc qdisc add dev $DEV root handle 1: htb default 2
# Internetovy provoz:
tc class add dev $DEV parent 1: classid 1:1 htb rate 128kbit ceil 128kbit
# Intranetovy traffic:
tc class add dev $DEV parent 1: classid 1:2 htb rate 100Mbit ceil 100Mbit
# Pro prodejce:
tc class add dev $DEV parent 1:1 classid 1:10 htb rate 64kbit ceil 120kbit
# Druha pobocka:
tc class add dev $DEV parent 1:1 classid 1:11 htb rate 48kbit ceil 128kbit
# Zbytek:
tc class add dev $DEV parent 1:1 classid 1:12 htb rate 16kbit ceil 96kbit
# Vyberu a oznacim provoz
# !!! Pozor, vicekrat oznaceny packet si pamatuje posledni cislo !!!
iptables -t mangle -N internet
# Cely internet
iptables -t mangle -A internet -s ! 192.168.1.0/24 -j MARK --set-mark 3
# Terminal services tunelovane pres ssh
iptables -t mangle -A internet -p tcp -d 192.168.1.0/24 -s 192.168.1.20 --sport 3389 -j MARK --set-mark 2
# WWW tunelovane pres ssh
iptables -t mangle -A internet -p tcp -d 192.168.1.0/24 -s 192.168.1.20 --sport www -j MARK --set-mark 2
# 2 prodejci:
iptables -t mangle -A internet -s ! 192.168.1.0/24 -d 192.168.1.108 -j MARK --set-mark 1
iptables -t mangle -A internet -s ! 192.168.1.0/24 -d 192.168.1.101 -j MARK --set-mark 1
# Toto nevim, co znamena :)
iptables -t mangle -A POSTROUTING -o eth0 -j internet
# No a tady si nastavim, ktere ze to toky maji kam tect:
tc filter add dev $DEV parent 1:0 protocol ip prio 1 handle 1 fw classid 1:10
tc filter add dev $DEV parent 1:0 protocol ip prio 1 handle 2 fw classid 1:11
tc filter add dev $DEV parent 1:0 protocol ip prio 3 handle 3 fw classid 1:12
echo Ok.
}
stop () {
echo -n "Stopping QoS tc: "
# Smazat vse:
tc filter del dev $DEV prio 3
tc filter del dev $DEV prio 1
tc qdisc del dev $DEV root
iptables -t mangle -F
iptables -t mangle -X internet
echo Ok.
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: tc.init {start|stop}"
RETVAL=1
esac
exit $RETVAL
---
Treba to nekomu pomuze a treba mi to nekdo opravi. :)