Автор Тема: traffic shaping  (Прочетена 4077 пъти)

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
traffic shaping
« -: Feb 12, 2006, 12:25 »
Имам следния проблем - сглобих си traffic shaper, но нещо не иска да работи за съжаление '<img'>. Имам 2 мрежи, които съм разделил на 192.168.2.0 и 192.168.3.0 и гейтуей 192.168.0.1 . Разделил съм международен и БГ трафик въпреки, че скоростта ми е еднаква, за да мога да си ползвам същия скрипт и на други места, а също така не е и много оптимизиран заради 2-та while-a, но това не е проблем за сега '<img'>. Нета ми е 1Мбит на eth0 през DHCP.. Ето и скриптовете..
1:
Примерен код

#!/bin/sh

INET_IFACE="eth0"

DHCP="yes"
DHCP_SERVER=""
PPPOE_PMTU="no"

LAN_IP="192.168.0.1"
LAN_IP_RANGE="192.168.0.0/16"
LAN_IFACE="eth1"

LO_IFACE="lo"
LO_IP="127.0.0.1"

IPTABLES="/usr/sbin/iptables"
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

$IPTABLES -N bad_tcp_packets

$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets

$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

$IPTABLES -A tcp_packets -p TCP -s 192.168.2.0/24 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 192.168.2.0/24 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 192.168.0.0/16 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 192.168.2.0/24 --dport 113 -j allowed

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

$IPTABLES -A INPUT -i $INET_IFACE -d 224.0.0.0/8 -j DROP

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT INPUT packet died: "

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

if [ $PPPOE_PMTU == "yes" ]; then
 $IPTABLES -t nat -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN \
 -j TCPMSS --clamp-mss-to-pmtu
fi
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

2:
Примерен код

#!/bin/bash

#mark_peering.sh Script for marking of Peering & International upload traffic via iptables

wget -q -O bg_nets-new.txt "http://ip.ludost.net/cgi/process?country=1&country_list=bg&format_template=prefix&format_name=&format_target=&format_default="

newfile=bg_nets-new.txt

file=bg_nets.txt

#Check for existence of the files
if [[ ! -r "$newfile" || ! -r "$file" ]]
 then
  echo "Both files to be compared must exist and be readable."
  exit 1
fi
cmp $newfile $file &> /dev/null
if [ $? -ne 0 ] # Test exit status of "cmp" command.
 then
  echo "Doing changes"
  mv -f $newfile $file
  line_count=`wc $file | awk '{ print $1 }'`
  for name in `seq $line_count`
   do
    read name
    mat=`expr match "$name" '#'`
    if [ "$mat" -eq 0 ]
     then
#/etc/init.d/iptables restart
      /sbin/iptables -t mangle -I POSTROUTING 1 -d $name -j mark-out
    fi
   done
  ip=1
  while [ $ip -lt 5 ]; do
    /sbin/iptables -t mangle -A mark-out -s 192.168.2."$ip" -j MARK --set-mark 1`printf "%03d" $ip`
    /sbin/iptables -t mangle -A POSTROUTING -s 192.168.2."$ip" -j MARK --set-mark 2`printf "%03d" $ip`   
    ip=`expr $ip + 1`
  done
  ip=1
  while [ $ip -lt 20 ]; do
    /sbin/iptables -t mangle -A mark-out -s 192.168.3."$ip" -j MARK --set-mark 3`printf "%03d" $ip`
    /sbin/iptables -t mangle -A POSTROUTING -s 192.168.3."$ip" -j MARK --set-mark 4`printf "%03d" $ip`
    ip=`expr $ip + 1`
  done  
  /sbin/iptables -t mangle -A mark-out -j ACCEPT
else
 echo "Everything is the same"
 rm -f $newfile
fi
echo "All Done!"
exit 0

3:
Примерен код

#!/bin/bash

# htb_eth0.sh Script for upload traffic shaping divided to International & Peering classes
/sbin/insmod sch_htb 2>/dev/null
/sbin/insmod cls_fw 2>/dev/null
/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc add dev eth0 root handle 1: htb default 30
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit burst 20k
/sbin/tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit burst 20k
/sbin/tc class add dev eth0 parent 1:1 classid 1:20 htb rate 1kbit burst 20k
/sbin/tc class add dev eth0 parent 1:1 classid 1:30 htb rate 512kbit burst 10k
ip=1
while [ $ip -lt 5 ]; do
 /sbin/tc class add dev eth0 parent 1:10 classid 1:1`printf "%03d" $ip` htb rate 128kbit ceil 1mbit burst 15k
 /sbin/tc class add dev eth0 parent 1:20 classid 1:2`printf "%03d" $ip` htb rate 128kbit ceil 1mbit burst 15k
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 1 handle 1`printf "%03d" $ip` fw flowid 1:1`printf "%03d" $ip`
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 1 handle 2`printf "%03d" $ip` fw flowid 1:2`printf "%03d" $ip`
 ip=`expr $ip + 1`
done
ip=1
while [ $ip -lt 20 ]; do
 /sbin/tc class add dev eth0 parent 1:10 classid 1:3`printf "%03d" $ip` htb rate 32kbit ceil 64kbit burst 15k
 /sbin/tc class add dev eth0 parent 1:20 classid 1:4`printf "%03d" $ip` htb rate 32kbit ceil 64kbit burst 15k
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 2 handle 1`printf "%03d" $ip` fw flowid 1:3`printf "%03d" $ip`
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 2 handle 2`printf "%03d" $ip` fw flowid 1:4`printf "%03d" $ip`
 ip=`expr $ip + 1`
done


Благодаря предварително!
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
traffic shaping
« Отговор #1 -: Feb 12, 2006, 13:39 »
Току що видях , че май съм пообъркал2-ря while (copy/paste до нищо хубаво не води)

Примерен код

while [ $ip -lt 20 ]; do
 /sbin/tc class add dev eth0 parent 1:10 classid 1:3`printf "%03d" $ip` htb rate 32kbit ceil 64kbit burst 15k
 /sbin/tc class add dev eth0 parent 1:20 classid 1:4`printf "%03d" $ip` htb rate 32kbit ceil 64kbit burst 15k
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 2 handle 3`printf "%03d" $ip` fw flowid 1:3`printf "%03d" $ip`
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 2 handle 4`printf "%03d" $ip` fw flowid 1:4`printf "%03d" $ip`
 ip=`expr $ip + 1`
done


Дали това е бил проблема предстой да се види ... '<img'>
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
traffic shaping
« Отговор #2 -: Feb 12, 2006, 14:07 »
Не е бил само това проблема '<img'> ..
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

alex_c

  • Напреднали
  • *****
  • Публикации: 122
    • Профил
traffic shaping
« Отговор #3 -: Feb 12, 2006, 15:57 »
Здравей!
Радвам се, че ползваш моя код, но наистина само с копи/пейст не става.
Обърни внимание на реда,с който задаваш класа 1:20:
/sbin/tc class add dev eth0 parent 1:1 classid 1:20 htb rate 1kbit burst 20k

така класа ти е 1 килобит, а ти закачаш към него няколко други подкласа с големина 32-64 килобита.
Определено няма да работи така, както очакваш.
Освен това, какво значи "не работи" - не ограничава достатъчно, ограничава твърде много или нещо друго.

Best wishes!
Alex
Активен

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
traffic shaping
« Отговор #4 -: Feb 12, 2006, 16:49 »
Пак не работи (не ограничава трафика на 192.168.3.0). Тегли си с колкото може... Всъщност преди поправката не трябваше ли да има проблеми само с международния тряфик (1:20 май беше за него)?
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

alex_c

  • Напреднали
  • *****
  • Публикации: 122
    • Профил
traffic shaping
« Отговор #5 -: Feb 13, 2006, 15:33 »
ами изпълни командата:
iptables -t mangle -L -vn
и виж какво има във веригата mark-out - там трябва да се маркират пакетите за БГ пространството. Ако няма нищо в тази верига, значи просто изходящия трафик не се маркира и всичко влиза в default класа. Още повече, че скрипта, който си дал, е за периодично обновяване на БГ пространството. За първоначално стартиране скриптът трябва да е малко по-различен - не трябва да се проверява дали файлът с БГ мрежите е променен. Ето един примерен такъв:


#!/bin/bash
#mark_peering.sh - mark outgoing BG Peering traffic

file=/etc/default/bg_nets.txt
line_count=`cat $file|wc -l`

if [ $line_count -gt 100 ]; then
        /sbin/iptables -t mangle -N mark-out 2>/dev/null
        /sbin/iptables -t mangle -F mark-out
        /sbin/iptables -t mangle -F POSTROUTING


        for name in `seq $line_count`
        do
                read name
                mat=`echo "$name"|grep ^[0-9]`
                if [ -n "$mat" ]
                then
                        /sbin/iptables -t mangle -A POSTROUTING -d $name -j mark-out
                fi
        done < "$file"

        sbin/iptables -t mangle -A mark-out -s xx.xx.xx.xx -j MARK --set-mark 71
        /sbin/iptables -t mangle -A POSTROUTING -s xx.xx.xx.xx -j MARK --set-mark 72

        /sbin/iptables -t mangle -A mark-out -j ACCEPT

else
        echo "Truncated file $file"
fi

пробвай с този, дано да има ефект

Best wishes!
Alex
Активен

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
traffic shaping
« Отговор #6 -: Feb 14, 2006, 12:12 »
1 от проблемите явно е бил в mark_peering script-a. Не бях обърнал внимание, но като се стигне до "read name" където трябва да прочете ИП от файла то забива (четох, че read е за четене на вход от клавиатурата, но не съм много навътре в шел скриптовете, така че ти си знаеш  '<img'> ). Седнах и си го написах на perl и сега направо хвърчи, но има друг проблем с htb_eth0.sh!! Постоянно ми дава

Примерен код

RTNETLINK answers: File exists
We have an error talking to the kernel


Сега е време за ровене в нета, за да се отстрани и това и вече живо се надявам всичко да тръгне като хората  '<img'> .

Ако те интересува ето го пренаписания и малко опростен скрипт на perl:

Примерен код

#!/usr/bin/perl

use Shell;

$comm = wget(' -q -O bg_nets.txt "http://ip.ludost.net/cgi/process?country=1&country_list=bg&format_template=prefix&format_name=&format_target=&format_default="');
print "$comm";
  open(file, "bg_nets.txt");
  while (<file>) {
   chomp($_);
    if (index($_,"#") == -1)
   {
    print "Building rules for $_ \n";   
   $comm = iptables (" -t mangle -I POSTROUTING 1 -d $_ -j mark-out");
    print "$comm";  
    }   
  }
  $ip=1;
  while ($ip <= 5 )
  {
    $comm = iptables(" -t mangle -A mark-out -s 192.168.2.$ip -j MARK --set-mark 1");
   print "$comm";
    $comm = iptables(" -t mangle -A POSTROUTING -s 192.168.2.$ip -j MARK --set-mark 2");
   print "$comm";
    $ip++;
  }
  $ip=1;
  while ($ip <= 20 )
  {
    $comm = iptables(" -t mangle -A mark-out -s 192.168.3.$ip -j MARK --set-mark 3");
   print "$comm";
    $comm = iptables(" -t mangle -A POSTROUTING -s 192.168.3.$ip -j MARK --set-mark 4");
   print "$comm";
    $ip++;
  }  
  $comm = iptables(' -t mangle -A mark-out -j ACCEPT');
  print "$comm";

close(file);

print "All done!\n";  


Много ти благодаря за помощта, която ми оказваш!
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
traffic shaping
« Отговор #7 -: Feb 14, 2006, 12:56 »
Вече грешки няма, но за сметка на това няма и резултат '<img'>. Разпределя трафика по равно в 192.168.2.0 (за около 2-3 мин изравнява трафика, което е малко бавно, но за сега не е главния проблем това). От мрежата 192.168.3.0 първо не я ограничава и второ: дори и не изравнява трафика между нея и 192.168.2.0 като хората '<img'>. Ето последните промени по скриптовете:

dhcp.firewall
Примерен код

#!/bin/sh

INET_IFACE="eth0"

DHCP="yes"
DHCP_SERVER=""

PPPOE_PMTU="no"

LAN_IP="192.168.0.1"
LAN_IP_RANGE="192.168.0.0/16"
LAN_IFACE="eth1"

LO_IFACE="lo"
LO_IP="127.0.0.1"

IPTABLES="/usr/sbin/iptables"

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t mangle -F mark-out
$IPTABLES -t mangle -F POSTROUTING

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

$IPTABLES -N bad_tcp_packets

$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets

$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

$IPTABLES -A tcp_packets -p TCP -s 192.168.2.0/24 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 192.168.2.0/24 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 192.168.0.0/16 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 192.168.2.0/24 --dport 2401 -j allowed

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

$IPTABLES -A INPUT -i $INET_IFACE -d 224.0.0.0/8 -j DROP

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT INPUT packet died: "

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

if [ $PPPOE_PMTU == "yes" ]; then
 $IPTABLES -t nat -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN \
 -j TCPMSS --clamp-mss-to-pmtu
fi
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

$IPTABLES -t mangle -N mark-out


mark-peering.pl
Примерен код

#!/usr/bin/perl

use Shell;

  $comm = wget(' -q -O bg_nets.txt "http://ip.ludost.net/cgi/process?country=1&country_list=bg&format_template=prefix&format_name=&format_target=&format_default="');
  print "$comm";
  open(file, "bg_nets.txt");
  print "Building rules for $_ \n";   
  while (<file>) {
   chomp($_);
    if (index($_,"#") == -1)
   {
#    print "Building rules for $_ \n";   
   $comm = iptables (" -t mangle -I POSTROUTING 1 -d $_ -j mark-out");
    print "$comm";  
    }   
  }
  $ip=1;
  while ($ip <= 5 )
  {
    $comm = iptables(" -t mangle -A mark-out -s 192.168.2.$ip -j MARK --set-mark 1");
   print "$comm";
    $comm = iptables(" -t mangle -A POSTROUTING -s 192.168.2.$ip -j MARK --set-mark 2");
   print "$comm";
    $ip++;
  }
  $ip=1;
  while ($ip <= 20 )
  {
    $comm = iptables(" -t mangle -A mark-out -s 192.168.3.$ip -j MARK --set-mark 3");
   print "$comm";
    $comm = iptables(" -t mangle -A POSTROUTING -s 192.168.3.$ip -j MARK --set-mark 4");
   print "$comm";
    $ip++;
  }  
  $comm = iptables(' -t mangle -A mark-out -j ACCEPT');
  print "$comm";
  close(file);
  print "All done!\n";  


htb_eth0
Примерен код

#!/bin/bash

# htb_eth0.sh Script for upload traffic shaping divided to International & Peering classes

/sbin/insmod sch_htb 2>/dev/null
/sbin/insmod cls_fw 2>/dev/null
/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc add dev eth0 root handle 1: htb default 30
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit burst 20k
/sbin/tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit burst 20k
/sbin/tc class add dev eth0 parent 1:1 classid 1:20 htb rate 1mbit burst 20k
/sbin/tc class add dev eth0 parent 1:1 classid 1:30 htb rate 512kbit burst 10k

 /sbin/tc class add dev eth0 parent 1:10 classid 1:100 htb rate 256kbit ceil 1mbit burst 15k
 /sbin/tc class add dev eth0 parent 1:20 classid 1:200 htb rate 256kbit ceil 1mbit burst 15k
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 10 handle 100 fw flowid 1:100
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 10 handle 200 fw flowid 1:200

 /sbin/tc class add dev eth0 parent 1:10 classid 1:300 htb rate 64kbit ceil 128kbit burst 15k
 /sbin/tc class add dev eth0 parent 1:20 classid 1:400 htb rate 64kbit ceil 128kbit burst 15k
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 20 handle 300 fw flowid 1:300
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 20 handle 400 fw flowid 1:400
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
traffic shaping
« Отговор #8 -: Feb 14, 2006, 14:06 »
Видях си 1 грешчица в перл скрипта:

$comm = iptables(" -t mangle -A mark-out -s 192.168.2.$ip -j MARK --set-mark 100");
$comm = iptables(" -t mangle -A mark-out -s 192.168.2.$ip -j MARK --set-mark 200");
$comm = iptables(" -t mangle -A mark-out -s 192.168.3.$ip -j MARK --set-mark 300");
$comm = iptables(" -t mangle -A mark-out -s 192.168.3.$ip -j MARK --set-mark 400");

Промених и htb_eth0, но абсолютно нищо не стана '<img'>((
Примерен код

#!/bin/bash

# htb_eth0.sh Script for upload traffic shaping divided to International & Peering classes

/sbin/insmod sch_htb 2>/dev/null
/sbin/insmod cls_fw 2>/dev/null

/sbin/ip link set dev eth0 qlen 30

/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc add dev eth0 root handle 1: htb default 30
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit burst 20k
/sbin/tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit burst 20k
/sbin/tc class add dev eth0 parent 1:1 classid 1:20 htb rate 1mbit burst 20k
/sbin/tc class add dev eth0 parent 1:1 classid 1:30 htb rate 512kbit burst 5k
   
 /sbin/tc class add dev eth0 parent 1:10 classid 1:100 htb rate 256kbit ceil 1mbit burst 15k
 /sbin/tc class add dev eth0 parent 1:20 classid 1:200 htb rate 256kbit ceil 1mbit burst 15k
 /sbin/tc qdisc add dev eth0 parent 1:100 handle 100: sfq perturb 10
 /sbin/tc qdisc add dev eth0 parent 1:200 handle 200: sfq perturb 10
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 10 handle 100 fw flowid 1:100
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 10 handle 200 fw flowid 1:200

 /sbin/tc class add dev eth0 parent 1:10 classid 1:300 htb rate 64kbit ceil 128kbit burst 10k
 /sbin/tc class add dev eth0 parent 1:20 classid 1:400 htb rate 64kbit ceil 128kbit burst 10k
 /sbin/tc qdisc add dev eth0 parent 1:300 handle 300: sfq perturb 10
 /sbin/tc qdisc add dev eth0 parent 1:400 handle 400: sfq perturb 10  
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 20 handle 300 fw flowid 1:300
 /sbin/tc filter add dev eth0 protocol ip parent 1: prio 20 handle 400 fw flowid 1:400
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
traffic shaping
« Отговор #9 -: Feb 15, 2006, 10:15 »
Някой може ли да ме насочи поне малко къде греша?  '<img'>
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

Hel1Fire

  • Напреднали
  • *****
  • Публикации: 153
    • Профил
traffic shaping
« Отговор #10 -: Feb 16, 2006, 17:56 »
Тъй като всичко ми се вижда правилно в скриптовете (а очевидно не е) се поразбъзиках малко и ето какво ми върна iptables -t mangle -L mark-out :

MARK       all  --  unknown              anywhere            MARK set 0x64
....
MARK       all  --  unknown              anywhere            MARK set 0x12c
....

Това unknown  за source ме притеснява и имам съмнения, че за това не маркира като хората и съответно не работят скриптовете.. Това, което е станало нормално ли е или вместо unknown трябва да ми е все пак конкретно IP??
Активен

Животът не се мери с броя вдишвания, които правим, а с моментите, които спират дъха ни!!!!

Slackware 10.1, kernel 2.6.11.4, AMD Duron 1.6 Ghz, 256 DDR Ram; GeForce 440 MX 64 Mb 128 bit; 80 Gb Western Digital 7200; Sound: Via вграден.

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
pptp vpn, traffic shaping & accaunting
Хардуерни и софтуерни проблеми
Guru 22 8343 Последна публикация Jul 31, 2003, 12:49
от
Traffic shaping
Хардуерни и софтуерни проблеми
Yavor 1 2516 Последна публикация Dec 04, 2006, 01:16
от VladSun
Traffic shaping qos match
Настройка на програми
Explisit 6 3690 Последна публикация Apr 27, 2007, 14:35
от daxen
Isp-serv за traffic shaping
Хардуерни и софтуерни проблеми
tmcdos 3 3099 Последна публикация Nov 29, 2007, 14:41
от VladSun
Помощ за ipcop и traffic shaping по ip
Настройка на програми
Mellow 2 3065 Последна публикация Feb 26, 2008, 00:47
от Mellow