Portál AbcLinuxu, 2. května 2025 07:19

zjednoduseni HTB :)

29.9.2006 14:22 | Přečteno: 4593× | poslední úprava: 2.10.2006 15:32

Uz se mi nelibilo jak muj script na omezeni rychlosti ma cca 10tis. radku, stale roste a v podstate je neprehledny. Tak nejak jsem tomu chvili venoval a neco dal dohromady. Treba se to bude i nekomu hodit, nebo jeste lepe ?! - z duvodu ze nejsem programator by mne zajimalo, co by se dalo na tom jeste vylepsit :-) . Sklada se to cele ze dvou scriptu. Prvni:

##DOWNLOAD root+vsichni
iptables -t mangle -F
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 9999
tc class add dev eth0 parent 1: classid 1:1 htb rate 512kbps ceil 512kbps prio 1
#UPLOAD
tc qdisc del dev eth1 root
tc qdisc add dev eth1 root handle 1: htb default 9999
tc class add dev eth1 parent 1: classid 1:1 htb rate 512kbps ceil 512kbps prio 1
#funkce qos jak pro download tak pro upload
qos() {
        iptables -A FORWARD -s $3 -j ACCEPT
        iptables -A FORWARD -d $3 -j ACCEPT
        tc class add dev eth0 parent 1:1 classid 1:$1 htb rate 4kbps ceil $2 prio 4
        tc qdisc add dev eth0 parent 1:$1 sfq perturb 5
        tc filter add dev eth0 parent 1: protocol ip prio 4 handle $1 fw classid 1:$1
        iptables -t mangle -A FORWARD -d $3 -j MARK --set-mark $1
        tc class add dev eth1 parent 1:1 classid 1:$1 htb rate 4kbps ceil $2 prio 4
        tc qdisc add dev eth1 parent 1:$1 sfq perturb 5
        tc filter add dev eth1 parent 1: protocol ip prio 4 handle $1 fw classid 1:$1
        iptables -t mangle -A FORWARD -s $3 -j MARK --set-mark $1
}
# implementace  funkce qos (mark download ip upload)
line=` wc -l users.txt | awk '{print $1}'`
x=1
while [ "$x" -le $line ]; do
        a=`sed -n $x\p users.txt | awk '{print $1}'`
        if [ $a = \# ]; then
        false
        else
        base=`sed -n $x\p users.txt | awk '{print $3" "$2" "$4}'`
        data="$(expr $x + 1000) $base"
        qos $data
        echo $data
        fi
        x=$(expr $x + 1)
done

a druhy, kam se zapisuje users.txt:

user1   192.168.1.2     512kbit 256kbit
user2  192.168.1.3     512kbit 256kbit
user3  192.168.1.4     512kbit 256kbit
user4  192.168.1.5     512kbit 256kbit
user5  192.168.1.6     512kbit 256kbit
user6  192.168.1.7     512kbit 256kbit
user7  192.168.1.8     512kbit 256kbit
user8  192.168.1.9     512kbit 256kbit
user9  192.168.1.10    512kbit 256kbit

Tak, sice mi to chvili trvalo, ale mame zde podporu k DHCP servru :-) Vytvorim treti script s nazvem dhcpd.sh s timto ci obdobnym obsahem:

#!/bin/sh
dhcpd_conf () {
echo "\
host $1    {
    hardware ethernet $3;
    fixed-address $2;
}"
}
echo "\
ddns-update-style none;
option domain-name \"vejnet.petrvald\";
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option ntp-servers 192.168.1.1;
default-lease-time 3600;
max-lease-time 86400;
shared-network net_eth1 {
subnet 192.168.1.0 netmask 255.255.255.0 {" > /etc/dhcpd.conf
line=` wc -l users.txt | awk '{print $1}'`
x=1
while [ "$x" -le $line ]; do
        a=`sed -n $x\p $PWD/users.txt | awk '{print $1}'`
        b=`sed -n $x\p $PWD/users.txt | awk '{print $5}'`
         if [ $a = \# ]; then
           false
         elif [ $b = none ]; then
           false
         else
           base=`sed -n $x\p $PWD/users.txt | awk '{print $1" "$2" "$5}'`
           dhcpd_conf $base >> /etc/dhcpd.conf
           echo $base
         fi
 x=$(expr $x + 1)
done
echo "}" >>/etc/dhcpd.conf
echo "\
subnet 10.0.0.0 netmask 255.255.255.0 {
        range 10.0.0.10 10.0.0.100;
        }
}" >> /etc/dhcpd.conf

kill `cat /var/run/dhcpd.pid`
sleep 1
dhcpd

No a do users.txt pak jen pridam 5.sloupec s MAC adresou :-). Hmm a nejak obdobne jeste udelat navaznost na DNS server a finalne web rozhrani :-) ...

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

29.9.2006 14:46 lefti | skóre: 18 | blog: OneAndOnlyTrueBlog
Rozbalit Rozbalit vše Re: zjednoduseni HTB :)
Odpovědět | Sbalit | Link | Blokovat | Admin
Ten users.txt vypada hezky
29.9.2006 14:57 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
Rozbalit Rozbalit vše Re: zjednoduseni HTB :)
Odpovědět | Sbalit | Link | Blokovat | Admin
kdyz me napadnou vylepseni tak to tu budu editovat, ale pro me ucely je to prozatim dostacujici... i kdyz me jeste napada, ale nevim jak nato ... propijit users.txt primo s DNSkou, to znamena ze by nebylo treba ani v pisovat dns zaznamy do *.named + *.rev a jeste lepe pridat tam 5. sloupec s MAC adresou a opet donutit DHCPD server aby jsi sahnul do toho textaku :-) ... to by bylo supr.. mylsenku uz mam hmmm jen ji realizovat :D .
jen se učím jak se to naučit .... ...
29.9.2006 22:24 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: zjednoduseni HTB :)
Odpovědět | Sbalit | Link | Blokovat | Admin
Fajnove, mozna to nejak zneuziju.

Ja preeruju reseni mit vse v databazi a dle potreby z toho vytahovat potrebna data. Takze mi to vyrabi konfiguraci pro DNS, /etc/hosts atd. A mohlo by i pro tohle. Pripadne doprgat mysql prikazy primo dovnitr.

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
2.10.2006 19:55 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
Rozbalit Rozbalit vše Re: zjednoduseni HTB :)
Odpovědět | Sbalit | Link | Blokovat | Admin
aaa finisuji i s DNSKou :-) , kdyz nic a padne mi server tak aspom vim kde si to tu najdu :-D .
jen se učím jak se to naučit .... ...

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.