Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Ja rowniez mam przerobiony skrypt BiExi :) Userow zaciagam z pliku, ktory jest generowany. Do tego mam dwie pod sieci i jedno wyjscie. Blokowanie P2P. Wiem, ze ma on pewnie wiele nie dorobek ale dziala.
A co powiecie zebysmy napisai tai skrypt od poczatu, tzn. zbudujemy klocki i pozniej je polaczymy. Np. ktos poda definicje glownych kolejek itp, zaciaganie z plikow userow badz podawanie calej sieci np. 192.168.0.0/16 itp?
Pozdrawiam,
Offline
hehe a ja pendriva znelezc niemoge jak wruce z pracy to jeszce poszukam a jak nie to skopiuje prototyp z serwera :P
pzdr aki
Offline
hehe a ja niemoge znalezc swojego dzisiaj wieczorem podepne dysk od serwerka i zrzuce sobie ten skrypt :P to podesle , a co do perla to ja niepomoge , przynajmniej narazie :P ale to nastepne czego chce sie pouczyc :P
Offline
niom na basha trza cyknac cieplym moczem :P
powiem tak w perl'u pisze sie szybko i przyjemnie :P
dla ambitnych zostaje jeszcze C :P
A tak swoja droga jestem ciekawa opini co w takim skrybcie dla malej osiedlowej sieci by sie przydalo jakie funkcje wedlug was poza NAT'em iQOS'em jestem ciekawa waszych opini na ten temat
Offline
perl to makabra...
python ponad wszystko ;)
Offline
BiExi napisał(-a):
A tak swoja droga jestem ciekawa opini co w takim skrybcie dla malej osiedlowej sieci by sie przydalo jakie funkcje wedlug was poza NAT'em iQOS'em jestem ciekawa waszych opini na ten temat
Warto pomyśleć o skalowalności (20->200->2000) userów.
Offline
zlyZwierz napisał(-a):
Tak tak , pytonk i flukboks - wiemy przy czym sie robisz wilgotny ;)
i zimny browarek, zapomniałeś o zimnym browarku ;)
Offline
Czy to bedzie Perl czy Python to chyba nie ma znaczenia. Wazne sa regulki ktore beda ustawiane dla danej sieci oraz modularnosc skryptu.
Offline
ja miałem taki skrypt, znaleziony gdzieś na necie
#!/bin/bash INTERNET=eth0 SIEC=eth1 # Tutaj ustalamy dynamiczny gwarantowany oraz max DOWNLOAD i UPLOAD w kbit dla kazdego ip wymienionego powyzej # GD=80 # gwarantowany download #MD=256 # maxymalny downloadu GU=80 # gwarantowany upload #MU=256 # maxymalny upload ##komp1 D2=160 U2=100 ##komp2 D3=280 U3=256 ##komp3 D4=180 U4=180 ##komp4 D5=500 U5=500 ##komp5 D7=160 U7=80 # Tutaj ustalamy przepustowosc karty sieciowej(K) oraz max download(M) w kbit od strony karty do sieci wew # K=90000 M=90000 # Podaj przepustowosc lacza (D)-Download (U)-Upload w kbit # D=512 U=512 ### Ponizej podaj network sieci bez ostatniej cyferki np: ### LAN=192.168.0 ### Ponizej podaj IP karty wewnetrznej dla sieci np: ### HOST1=192.168.0.1 ### Teraz adresy IP ktore HTB ma wlaczyc do podzialu ### HOST2=${LAN}.2 HOST3=${LAN}.3 HOST4=${LAN}.4 HOST5=${LAN}.5 HOST6=${LAN}.6 HOST7=${LAN}.7 #### Dostepne komendy htb start|stop|status #### ####################################################################### #################### KOLEJKI W KTORYCH NIE ZALECAM ZMIAN ############## ####################################################################### if [ "$1" == "stop" ] then echo "HTB zostalo zatrzymane" tc qdisc del root dev $SIEC 2>/dev/null tc qdisc del root dev $INTERNET 2>/dev/null iptables -t mangle -D POSTROUTING -o $INTERNET -j HTB-OUT 2>/dev/null iptables -t mangle -F HTB-OUT 2>/dev/null iptables -t mangle -X HTB-OUT 2>/dev/null exit fi if [ "$1" == "start" ] then echo "HTB zostalo wlaczone" tc qdisc del root dev $SIEC 2>/dev/null tc qdisc del root dev $INTERNET 2>/dev/null iptables -t mangle -D POSTROUTING -o $INTERNET -j HTB-OUT 2>/dev/null iptables -t mangle -F HTB-OUT 2>/dev/null iptables -t mangle -X HTB-OUT 2>/dev/null ################################ DOWNLOAD ############################################ tc qdisc add dev $SIEC root handle 1:0 htb tc class add dev $SIEC parent 1:0 classid 1:1 htb rate ${K}kbit ceil ${K}kbit tc class add dev $SIEC parent 1:1 classid 1:2 htb rate ${D}kbit ceil ${D}kbit quantum 1500 tc class add dev $SIEC parent 1:1 classid 1:3 htb rate ${K}kbit ceil ${K}kbit quantum 1500 # tutaj ustalamy porty ktore maja miec wyzszy lub nizszy priorytet tc filter add dev $SIEC protocol ip parent 1:0 prio 1 u32 match ip sport 139 0xffff flowid 1:2 tc filter add dev $SIEC protocol ip parent 1:0 prio 1 u32 match ip sport 135 0xffff flowid 1:2 tc filter add dev $SIEC protocol ip parent 1:0 prio 1 u32 match ip sport 110 0xffff flowid 1:2 tc filter add dev $SIEC protocol ip parent 1:0 prio 1 u32 match ip sport 25 0xffff flowid 1:2 tc filter add dev $SIEC protocol ip parent 1:0 prio 1 u32 match ip sport 23 0xffff flowid 1:2 tc filter add dev $SIEC protocol ip parent 1:0 prio 1 u32 match ip sport 10234 0xffff flowid 1:2 #tc filter add dev $INTERNET protocol ip parent 1:0 prio 1 u32 match ip sport 10234 0xffff flowid 1:2 tc class add dev $SIEC parent 1:3 classid 1:101 htb rate 800kbit ceil ${M}kbit quantum 1500 tc class add dev $SIEC parent 1:2 classid 1:102 htb rate ${GD}kbit ceil ${D2}kbit quantum 1500 tc class add dev $SIEC parent 1:2 classid 1:103 htb rate ${GD}kbit ceil ${D3}kbit quantum 1500 tc class add dev $SIEC parent 1:2 classid 1:104 htb rate ${GD}kbit ceil ${D4}kbit quantum 1500 tc class add dev $SIEC parent 1:2 classid 1:105 htb rate ${GD}kbit ceil ${D5}kbit quantum 1500 #tc class add dev $SIEC parent 1:2 classid 1:106 htb rate ${GD}kbit ceil ${MD}kbit quantum 1500 tc class add dev $SIEC parent 1:2 classid 1:107 htb rate ${GD}kbit ceil ${D7}kbit quantum 1500 tc filter add dev $SIEC protocol ip preference 1 parent 1:0 u32 match ip src $HOST1 flowid 1:101 tc filter add dev $SIEC protocol ip preference 2 parent 1:0 u32 match ip dst $HOST2 flowid 1:102 tc filter add dev $SIEC protocol ip preference 2 parent 1:0 u32 match ip dst $HOST3 flowid 1:103 tc filter add dev $SIEC protocol ip preference 2 parent 1:0 u32 match ip dst $HOST4 flowid 1:104 tc filter add dev $SIEC protocol ip preference 2 parent 1:0 u32 match ip dst $HOST5 flowid 1:105 #tc filter add dev $SIEC protocol ip preference 2 parent 1:0 u32 match ip dst $HOST6 flowid 1:106 tc filter add dev $SIEC protocol ip preference 2 parent 1:0 u32 match ip dst $HOST7 flowid 1:107 tc qdisc add dev $SIEC parent 1:101 handle 301:0 sfq perturb 10 tc qdisc add dev $SIEC parent 1:102 handle 302:0 sfq perturb 10 tc qdisc add dev $SIEC parent 1:103 handle 303:0 sfq perturb 10 tc qdisc add dev $SIEC parent 1:104 handle 304:0 sfq perturb 10 tc qdisc add dev $SIEC parent 1:105 handle 305:0 sfq perturb 10 #tc qdisc add dev $SIEC parent 1:106 handle 306:0 sfq perturb 10 tc qdisc add dev $SIEC parent 1:107 handle 307:0 sfq perturb 10 ##################################### UPLOAD ######################################### tc qdisc add dev $INTERNET root handle 1:0 htb tc class add dev $INTERNET parent 1:0 classid 1:1 htb rate ${U}kbit ceil ${U}kbit quantum 576 tc class add dev $INTERNET parent 1:1 classid 1:102 htb rate ${GU}kbit ceil ${U2}kbit quantum 576 tc class add dev $INTERNET parent 1:1 classid 1:103 htb rate ${GU}kbit ceil ${U3}kbit quantum 576 tc class add dev $INTERNET parent 1:1 classid 1:104 htb rate ${GU}kbit ceil ${U4}kbit quantum 576 tc class add dev $INTERNET parent 1:1 classid 1:105 htb rate ${GU}kbit ceil ${U5}kbit quantum 576 #tc class add dev $INTERNET parent 1:1 classid 1:106 htb rate ${GU}kbit ceil ${MU}kbit quantum 576 tc class add dev $INTERNET parent 1:1 classid 1:107 htb rate ${GU}kbit ceil ${U7}kbit quantum 576 tc qdisc add dev $INTERNET parent 1:102 handle 302:0 sfq perturb 10 tc qdisc add dev $INTERNET parent 1:103 handle 303:0 sfq perturb 10 tc qdisc add dev $INTERNET parent 1:104 handle 304:0 sfq perturb 10 tc qdisc add dev $INTERNET parent 1:105 handle 305:0 sfq perturb 10 #tc qdisc add dev $INTERNET parent 1:106 handle 306:0 sfq perturb 10 tc qdisc add dev $INTERNET parent 1:107 handle 307:0 sfq perturb 10 tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 2 fw flowid 1:102 tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 3 fw flowid 1:103 tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 4 fw flowid 1:104 tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 5 fw flowid 1:105 #tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 6 fw flowid 1:106 tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 7 fw flowid 1:107 iptables -t mangle -N HTB-OUT iptables -t mangle -I POSTROUTING -o $INTERNET -j HTB-OUT iptables -t mangle -A HTB-OUT -s $HOST2 -j MARK --set-mark 2 iptables -t mangle -A HTB-OUT -s $HOST3 -j MARK --set-mark 3 iptables -t mangle -A HTB-OUT -s $HOST4 -j MARK --set-mark 4 iptables -t mangle -A HTB-OUT -s $HOST5 -j MARK --set-mark 5 #iptables -t mangle -A HTB-OUT -s $HOST6 -j MARK --set-mark 6 iptables -t mangle -A HTB-OUT -s $HOST7 -j MARK --set-mark 7 exit fi if [ "$1" == "status" ] then echo "$SIEC: " tc -s qdisc show dev $SIEC echo "$INTERNET: " tc -s qdisc show dev $INTERNET exit fi echo "$0 start|stop|status"
Offline
zlyZwierz <- zalerzy o jakiego rodzaju odbiorcy myslisz ja myslalam o malych sieciach osiedlowych na kilka - kilkadziesiat kompow bo wieksze firmy maja bardziej profilowane pod ich kontem oprogramowanie....
Offline
BiExi napisał(-a):
zlyZwierz <- zalerzy o jakiego rodzaju odbiorcy myslisz ja myslalam o malych sieciach osiedlowych na kilka - kilkadziesiat kompow bo wieksze firmy maja bardziej profilowane pod ich kontem oprogramowanie....
W cale tak nie jest :) Nie kazda duza firma ma rozw. zakupione dla siebie ... znam wiele rozw., ale duzo adminow woli samemu napisac reguly ktore tna pasmo, badz generuja reguly firewalla ...
Offline
BiExi , ale popatrz ile ludzi obudziło sie z ręką w nocniku , bo szajsszejper , czy skrypty z inet, czy fikus przestały sie skalować. Z racji posiadania gotowca te osoby nawet nie myslały o napisaniu czegoś własnego, a teraz mają problem.
Moim zdaniem jak już coś robić , to robić dobrze.
Offline
Dlatego chodzi o stworzenie wspolnie takiego skryptu :) i pokazanie ze spolecznosc DUG-a potrafi :) Wiadomo Admini sobie sami napisza takowy skrypt i za to kupe kasy zgarna, a zwykli uzytkownicy poporstu nie potrafia tego ... wiec beda od nas go zaciagac i moze do tego cos sami poprawia :) i sie naucza ...
Offline
Podzielam tok myślenia Kamyka. Moja ulubiona (najszybsza) metoda nauki, to analiza czegoś gotowego. Potem wprowadzam poprawki pod siebie. Napisanie przezemnie czegoś takiego od podstaw narazie graniczy z cudem tuska :]
Offline
Co do tego wtracenia to wiem cos bede konstruowac ale jak zakoncze projekty wszystkie :P koniec wrzesnia mysle rozpoczac jakies prace nad tym :]
w glowie mam juz mniejwecej plan jak ma to wygladac :P
Offline
może coś troche bliżej, przybliż swoje intencje, komuś może coś wpadnie do głowy i podsunie ci coś lepszego
Offline
Witam
Próbuje zorbicz upierdalacza pod swoją sieć i jakoś mi nie idzie. Może ktoś poprawi mi skrypt i wskaze gdzie mam błąd.
Łacze dsl 4/0,5mbita
eth0 - wan
eth1 - lan z ip 192.168.65.1
Lan po wifi dlatego nie daje 100mbitów.
PLIK KOLEJKA
#!/usr/bin/perl
#
# Kolejkowanie ver 0.000000000001 beta
# create by BiExi
#
# $debugowanie = 0;
$cid = 5;
$handl = 320;
$zrodlo = 600;
open (PLIK_SHIT, "/etc/upierdalacz/upierdalacz.list")or die "open $alert_file: $!\n";
{
sleep 1;
if (seek(PLIK_SHIT,0,1))
{
print "--------------------------------------------- \n";
print " KOLEJKOWANIE ETH0 \n";
print "--------------------------------------------- \n";
# - — ---[ ruch przychodzacy ]--- — -
system "tc qdisc del dev eth1 root handle 1:0 htb";
system "tc qdisc add dev eth1 root handle 1:0 htb";
system "tc class add dev eth1 parent 1:0 classid 1:1 htb rate 20mbit ceil 21mbit quantum 8448";
system "tc class add dev eth1 parent 1:1 classid 1:2 htb rate 4000kbit ceil 4096kbit quantum 522";
system "tc class add dev eth1 parent 1:1 classid 1:3 htb rate 19mbit ceil 19mbit quantum 8448";
system "tc filter add dev eth1 protocol ip preference 1 parent 1:0 u32 match ip src 192.168.65.1 flowid 1:3";
system "tc qdisc add dev eth1 parent 1:3 handle 299:0 sfq perturb 10";
# - — ---[ ruch wychodzacy ]--- — -
system "tc qdisc del dev eth0 root handle 1:0 htb";
system "tc qdisc add dev eth0 root handle 1:0 htb";
system "tc class add dev eth0 parent 1:0 classid 1:1 htb rate 20mbit ceil 21mbit quantum 768";
system "tc class add dev eth0 parent 1:1 classid 1:2 htb rate 500kbit ceil 512kbit quantum 43";
system "tc qdisc add dev eth0 parent 1:2 handle 2:0 sfq perturb 10";
system "tc filter add dev eth0 protocol ip preference 1 parent 1:0 handle 2000 fw flowid 1:2";
system "iptables -t mangle -N UPIERDALACZ_ETH0";
system "iptables -t mangle -D POSTROUTING -o eth0 -j UPIERDALACZ_ETH0";
system "iptables -t mangle -I POSTROUTING -o eth0 -j UPIERDALACZ_ETH0";
while (<PLIK_SHIT>)
{
chop;
next if (/^\s*$/); # wyjazd z pustymi liniami
next if (/^#/); # wyjazd z #
if (/(\d+\.\d+\.\d+\.\d+) \; (\d+) \; (\d+) \; (\d+) \; (\d+) \; (\S+)/)
{
print "| Kolejka na eth1 RUCH PRZYCHODZACY dla IP:$1 rate: $2kbit cail: $3kbit\n";
system "tc class add dev eth1 parent 1:2 classid 1:$cid htb rate $2kbit ceil $3kbit quantum 3 burst 3k";
system "tc filter add dev eth1 protocol ip preference 2 parent 1:0 u32 match ip dst $1 flowid 1:$cid";
system "tc qdisc add dev eth1 parent 1:$cid handle $handl:0 sfq perturb 10";
print "| Kolejka na eth0 RUCH WYCHODZACY dla IP:$1 rate: $4kbit cail: $5kbit\n";
system "tc class add dev eth0 parent 1:2 classid 1:$cid htb rate $4kbit ceil $5kbit quantum 3 burst 3k";
system "tc qdisc add dev eth0 parent 1:$cid handle $handl:0 sfq perturb 10";
system "tc filter add dev eth0 protocol ip preference 2 parent 1:0 handle $zrodlo fw flowid 1:$cid";
system "iptables -t mangle -D UPIERDALACZ_ETH0 -p tcp -s $1 -j MARK --set-mark $zrodlo >>/dev/null";
system "iptables -t mangle -A UPIERDALACZ_ETH0 -p tcp -s $1 -j MARK --set-mark $zrodlo";
$cid = $cid + 1;
$handl = $handl + 1;
$zrodlo = $zrodlo + 1;
}
} # end while
} # end if seek
} # end for
close PLIK_SHIT;
system "iptables -t mangle -A UPIERDALACZ_ETH0 -m mark --mark 0 -j MARK --set-mark 2000";
_____________________________________________________________________________________________________
PLIK upierdalacz.list
# Configuration uperdalacz.list for eth1
# :::::::::::::::::::::::::::::::::::::::::::::::::
# | IP | GW | MAX | Opis
# :::::::::::::::::::::::::::::::::::::::::::::::::
192.168.65.2 ; 32 ; 150 ; 6 ; user1
192.168.65.3 ; 32 ; 150 ; 6 ; user2
192.168.65.4 ; 32 ; 150 ; 6 ; user3
192.168.65.5 ; 32 ; 150 ; 6 ; user4
192.168.65.6 ; 32 ; 150 ; 6 ; user5
192.168.65.7 ; 32 ; 150 ; 6 ; user6
192.168.65.8 ; 32 ; 150 ; 6 ; user7
192.168.65.9 ; 32 ; 150 ; 6 ; user8
192.168.65.10 ; 32 ; 150 ; 6 ; user9
itd...
Oczywiście nic nie przycina wszystko szaleje.
Po odpaleniu dostaje komunikat.
[root@dotnet upierdalacz]# ./kolejka
---------------------------------------------
KOLEJKOWANIE ETH0
---------------------------------------------
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
iptables: Chain already exists
[root@dotnet upierdalacz]# ./kolejka restart
---------------------------------------------
KOLEJKOWANIE ETH0
---------------------------------------------
iptables: Chain already exists
Poradzcie coś prosze!
Offline
Temat umarł?
Offline
Do trzymania danych zamiast plikow lepiej uzyc bazy danych. Nie musi to byc nic duzego jak mysql, wystarczy sqlite.
Userzy w bazie to duza wygoda, i latwiej zrobic np. panel do zarzadzania przez www.
Offline