Freesco, NND, CDN, EOS
http://forum.freesco.pl/

HTB
http://forum.freesco.pl/viewtopic.php?f=24&t=10051
Strona 1 z 1

Autor:  Felek [ niedziela, 27 listopada 2005, 16:00 ]
Tytuł:  HTB

Niech ktos mi powie co tutaj jest zle:

: [/] [] ()
VER=0.21-05.02.13

# --------------------------------------------
# Prorytert klas htb
# klasa         LAN(download)   WAN(upload)
# ACK               1
# ICMP         1      2
# Gry         2      3
# Userzy      3      4
# Goscie                                5
# p2p         4      6
# ruch lokalny      5
# --------------------------------------------
# Priorytety filtrow
# filtr            LAN(download)   WAN(upload)
# ACK                                   1
# ICMP                  1               2
# Gry                   2               3
# p2p                   3               4
# Userzy      5      5
# Goscie                      9
# ruch lokalny      6                   

       
#  Konfiguracja
htb_config=/etc/htb.conf
#htb_config=./htb_config
WANINT=eth0   # iterfejs do internetu
LANINT=eth1   # interfejs do Lanu
WANDOWN=800   # Download w kbit/s
WANUP=512   # Upload w kbit/s
P2PDOWN=500   # max download p2p w kbit/s
P2PUP=50    # max upload p2p w kbit/s
#LANSPD=4094   # LAN zwykly w [kbit/s]
LANSPD=9400   # LAN dla ftp w [kbit/s]
ICMPSPD=53   # Predkosc dla klasy ICMP (rate)
PRIOPORT=22   # Port priorytetowy
SERVHLDS=256    # HLDS
SERVSPD=300
SERVWWWSPD=30   # Szybkosc WWW
SERVFTP=30      # Szybkosc FTP
USERDOWNMAX=700 # Szybkosc maxymalna dla usera w dol
USERUPMAX=200   # Szybkosc maxymalna dla usera w gore
# Koniec konfiguracji


SFQ="sfq perturb 10"   # SFQ
STARTMRK=10      # Startowy MARK
h=/sbin/rchtb_tc
#h=echo
i=iptables
#i=echo

stop()
{
 $i -F -t mangle
 $i -X -t mangle
 $h qdisc del root dev $WANINT 2> /dev/null
 $h qdisc del root dev $LANINT 2> /dev/null
   
}

start()
{
 stop # dla bezpieczeństwa
 godz=`date +%H%M`   
 if [ $godz -ge  "0700" -a $godz -lt  "1700" ];then
    pora=1 # dzien
 elif [ $godz -ge  "1700" -a $godz -lt  "2300" ];then
    pora=2 # wieczor
 elif [ $godz -ge  "2300" -o $godz -lt  "0700" ];then
    pora=3 # noc
 fi
 # obliczenia
 WANDOWN=$[$WANDOWN*98/100]
 WANUP=$[$WANUP*98/100]
 LANSPD=$[$LANSPD*95/100]
 LOCAL=$[$LANSPD-$WANDOWN]
 ACKSPD=$[$WANDOWN/20]   
 CNT=1
 for ii in `cat $htb_config|grep [0123456789] | cut -d "#" -f1 |awk '{print $1}'`;do
    CNT=$[$CNT+1]
 done 
 USERDOWN=$[$WANDOWN/$CNT]
 USERUP=$[$WANUP-$ACKSPD-$ICMPSPD-$SERVSPD]
 USERUP=$[$USERUP/$CNT]
 if [ $USERDOWN \< 1 ];then
    USERDOWN=1
 fi
 if [ $USERUP \< 1 ];then
     USERUP=1
 fi
 # INTERFEJS LANINT (ruch przychodzący)
 $h qdisc add dev $LANINT root handle 1:0 htb default 3 r2q 1
 
 # Główna klasa dla LANINT
 $h class add dev $LANINT parent 1:0 classid 1:1 htb rate ${LANSPD}kbit ceil ${LANSPD}kbit
 
 # Podział na pasmo dla łącza internetowego i resztę
 $h class add dev $LANINT parent 1:1 classid 1:2 htb rate ${WANDOWN}kbit ceil ${WANDOWN}kbit
 $h class add dev $LANINT parent 1:1 classid 1:3 htb rate ${LOCAL}kbit ceil ${LOCAL}kbit prio 5
 $h qdisc add dev $LANINT parent 1:3 $SFQ

 # pasmo priorytetowe dla ICMP, TOS 0x10 (min. delay) oraz wybranego portu 22
 $h class add dev $LANINT parent 1:2 classid 1:4 htb rate 1000kbit ceil 1000kbit prio 1 quantum 1500
 $h class add dev $LANINT parent 1:2 classid 1:5 htb rate ${USERDOWNMAX}kbit ceil ${USERDOWNMAX}kbit prio 3 quantum 1500
 $h qdisc add dev $LANINT parent 1:4 sfq perturb 10
 $h qdisc add dev $LANINT parent 1:5 $SFQ
 $h filter add dev $LANINT protocol ip prio 1 parent 1:0 u32 match ip sport 22 0xffff flowid 1:4
 $h filter add dev $LANINT protocol ip prio 1 parent 1:0 u32 match ip tos 0x10 0xff flowid 1:4
 $h filter add dev $LANINT protocol ip prio 1 parent 1:0 u32 match ip protocol 1 0xff flowid 1:4

 # transfer serwer->LAN
 $h filter add dev $LANINT protocol ip prio 6 parent 1:0 handle 1 fw flowid 1:3
   
 # INTERFEJS  (ruch wychodzący)
 $h qdisc add dev $WANINT root handle 2:0 htb default 11 r2q 1
     
 # główna klasa
 $h class add dev $WANINT parent 2:0 classid 2:1 htb rate ${WANUP}kbit ceil ${WANUP}kbit

 # Server HLDS
 $h class add dev $WANINT parent 2:1 classid 2:50 htb rate ${SERVHLDS}kbit ceil ${SERVHLDS}kbit prio 3
 $h filter add dev $WANINT parent 2:0 protocol ip prio 3 handle 1 fw flowid 2:50
 $i -t mangle -A OUTPUT -p UDP -j MARK --set-mark 1

 # Pasmo dla WWW
  $h class add dev $WANINT parent 2:1 classid 2:8 htb rate ${SERVWWWSPD}kbit ceil ${SERVWWWSPD}kbit prio 4 quantum 1500
  $h filter add dev $WANINT parent 2:0 protocol ip prio 4 handle 7 fw flowid 2:8
  $i -t mangle -A OUTPUT -p TCP --dport 80 -j MARK --set-mark 7
  $i -t mangle -A OUTPUT -p TCP --sport 80 -j MARK --set-mark 7

 # Pasmo dla FTP
  $h class add dev $WANINT parent 2:1 classid 2:9 htb rate ${SERVFTP}kbit ceil ${SERVFTP}kbit prio 4 quantum 1500
  $h filter add dev $WANINT parent 2:0 protocol ip prio 4 handle 8 fw flowid 2:9
  $i -t mangle -A OUTPUT -p TCP --dport 21 -j MARK --set-mark 8
  $i -t mangle -A OUTPUT -p TCP --sport 21 -j MARK --set-mark 8

 # Userzy MAX
 $h filter add dev $LANINT parent 1:2 protocol ip prio 6 handle 9 fw flowid 1:5
 $i -t mangle -A FORWARD -o eth1 -j MARK --set-mark 9
       
 # klasa priorytetowa ACK
 $h class add dev $WANINT parent 2:1 classid 2:2 htb rate ${ACKSPD}kbit ceil ${USERUPMAX}kbit prio 1 quantum 1500
 $h qdisc add dev $WANINT parent 2:2 sfq perturb 10
 $h filter add dev $WANINT parent 2:0 protocol ip prio 1 u32 match ip protocol 6 0xff \
 match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 2:2 # ACK

 # klasa priorytetowa TOS 0x10 oraz ICMP i DNS
 $h class add dev $WANINT parent 2:1 classid 2:3 htb rate ${ICMPSPD}kbit ceil ${USERUPMAX}kbit prio 2 quantum 1500
 $h qdisc add dev $WANINT parent 2:3 $SFQ
 $h filter add dev $WANINT parent 2:0 protocol ip prio 1 u32 match ip tos 0x10 0xff flowid 2:3 # TOS
 $h filter add dev $WANINT parent 2:0 protocol ip prio 2 u32 match ip dport 22 0xffff flowid 2:3 # port 22
 $h filter add dev $WANINT parent 2:0 protocol ip prio 2 u32 match ip sport 22 0xffff flowid 2:3 # port 22
 $h filter add dev $WANINT parent 2:0 protocol ip prio 2 u32 match ip dport 53 0xffff flowid 2:3 # port 53
 $h filter add dev $WANINT parent 2:0 protocol ip prio 2 u32 match ip protocol 1 0xff flowid 2:3 # ICMP

  # Userzy
 CNT=1
 MARK=$[$STARTMRK+2]
 grep "^" $htb_config | grep -v "^#"|grep [0123456789] | while read IP USERDOWN[1] USERUP[1] USERDOWN[2] USERUP[2] USERDOWN[3] USERUP[3] REM; do
    USERDOWN0=$USERDOWN
    USERUP0=$USERUP
    if [ $USERDOWN -gt ${USERDOWN[$pora]} ]; then
   USERDOWN0=${USERDOWN[$pora]}
    fi   
    if [ $USERUP -gt ${USERUP[$pora]} ]; then
        USERUP0=${USERUP[$pora]}
    fi
    $h class add dev $LANINT parent 1:5 classid 1:$[10+$CNT] htb rate ${USERDOWN0}kbit ceil ${USERDOWN[$pora]}kbit prio 3 quantum 1500
    $h qdisc add dev $LANINT parent 1:$[10+$CNT] $SFQ
    $h filter add dev $LANINT protocol ip prio 5 parent 1:0 u32 match ip dst $IP flowid 1:$[10+$CNT]
    $i -t mangle -A PREROUTING -s $IP -j MARK --set-mark $MARK
    $h class add dev $WANINT parent 2:1 classid 2:$[10+$CNT] htb rate ${USERUP0}kbit ceil ${USERUP[$pora]}kbit prio 4 quantum 1500
    $h qdisc add dev $WANINT parent 2:$[10+$CNT] $SFQ
    $h filter add dev $WANINT parent 2:0 protocol ip prio 5 handle $MARK fw flowid 2:$[10+$CNT]
    MARK=$[$MARK+1]
    CNT=$[$CNT+1]
 done

 # Pasmo dla p2p
  $h class add dev $LANINT parent 1:5 classid 1:7 htb rate ${P2PDOWN}kbit ceil ${P2PDOWN}kbit prio 4 quantum 1500
  $h qdisc add dev $LANINT parent 1:7 $SFQ
  $h class add dev $WANINT parent 2:1 classid 2:5 htb rate ${P2PUP}kbit ceil ${P2PUP}kbit prio 6 quantum 1500
  $h qdisc add dev $WANINT parent 2:5 $SFQ
  $h filter add dev $LANINT parent 1:0 protocol ip prio 3 handle 2 fw flowid 1:7
  $h filter add dev $WANINT parent 2:0 protocol ip prio 4 handle 2 fw flowid 2:5

# -----------------------------8><------------------------------
 # Pasmo dla gier, zaplotkuj lub wykasuj jesli nie uzywasz
 $h class add dev $LANINT parent 1:5 classid 1:6 htb rate 100kbit ceil 200kbit prio 2 quantum 1500
 $h qdisc add dev $LANINT parent 1:6 $SFQ
 $h class add dev $WANINT parent 2:1 classid 2:6 htb rate 50kbit ceil 100kbit prio 3 quantum 1500
 $h qdisc add dev $WANINT parent 2:6 $SFQ   
 $i -t mangle -A PREROUTING -p tcp -m multiport --port 27015,27095 -j MARK --set-mark 3
 $h filter add dev $LANINT parent 1:0 protocol ip prio 2 handle 3 fw flowid 1:6
 $h filter add dev $WANINT parent 2:0 protocol ip prio 3 handle 3 fw flowid 2:6
# -----------------------------><8-------------------------------
   
 # reszta   
 $h filter add dev $WANINT parent 2:0 protocol ip prio 9 u32 match ip dst 0/0 flowid 2:4
}


To dla w lanuchu OUTPUT w mangle jest dla serwera cs`a i tu zaczyna sie caly bol. Jak jest tylko jakis ruch ze strony sieci do internetu, wtedy lacze osiaga wlasnie maksymalnie ok 200-250 Kbits i nic wiecej i na serwerze sa lagi. Niech ktos to przesledzi , moze zobaczy jakis blad.

Autor:  Felek [ czwartek, 8 grudnia 2005, 18:48 ]
Tytuł: 

Naprawde nikomu sie nie chce w to spojrzec i powiedziec, jest ok, albo TUTAJ jest zle ?

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/