Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Holyboy 10:45
 » JE Jacaw 10:44
 » Soulburne 10:44
 » lavka 10:40
 » Sherif 10:40
 » Zbyl 10:38
 » Nazgul 10:36
 » Sebek 10:29
 » Marian30p 10:29
 » Menah 10:29
 » Liu CAs 10:29
 » PaKu 10:26
 » jenot 10:24
 » KHot 10:22
 » Matti 10:20
 » Kool@ 10:15
 » El Vis 10:13
 » XepeR 10:10
 » Visar 10:08
 » cVas 10:06

 Dzisiaj przeczytano
 41148 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

kierowanie ruchem w sieci w linuxie - dla zainteresowanych , josh 22/08/02 01:10
hej!
jakis czas temu mialem taki problem: na linuxie mam uruchomiony program MLDonkey, ktory (jak wiadomo) sciaga z sieci rozne rzeczy. Problem polegal na tym, ze zapychal cale pasmo biednego SDI i w trakcie 'intensywnego' sciagania - przegladanie stron WWW bylo baaaardzo wolne. tak wiec chcialem wykorzystac specjalne mechanizmy kierowania danymi na zasadzie priorytetow - tzn. ze jak komputer laduje strone WWW to MLDonkey ma w tym czasie 'wyhamowac'. Ostatecznie po wielu probach wyszlo, ze kierowanie ruchem w ten sposob nie daje rezultatow.

Chodzilo chyba o to, ze gdy MLDonkey otwieral, powiedzmy 150 polaczen to wtedy kazde jedno otwarte polaczenie przegladarki WWW nie dawalo tym 150 polaczeniom MLDonkeyowym rady...

Gdy juz bylem kompletnie zalamany - wpadl mi do glowy pomysl i juz po dwoch dniach nauki skladni BASH i pomocy dobrych ludzi z grupy dyskusyjnej udalo mi sie napisac prosty skrypt, ktory robi cos takiego:

(1)sprawdza ile jest przeslanych danych pomiedzy Internetem a komputerem za maskarada.
(2)czeka sekunde
(3)sprawdza jeszcze raz to, co w (1)
(4)jesli sie okaze, ze w ciagu tej sekundy przeszlo wiecej niz np. 0,5KB wtedy blokuje porty MLDonkeya (jesli byly otwarte)
(5)jesli jest mniej niz 0,5KB - wtedy otwiera te porty, jesli byly zamkniete.

w ten oto sposob, gdy przegladam strony WWW lub robie cos innego w sieci, to MLDonkey ma blokade. Jesli nic nie robie to MLDonkey nie ma ograniczen. Dziala to w miare sprawnie i nie obciaza znaczaco serwera.

Jesli sa chetni to moge podac na grupie ten skrypt (kilkanascie linijek) i dokladniejszy opis...

Aha - jesli nie macie pojecia o czym pisze (kilka miechow temu tez bym kompletnie nie mial pojecia o tym, co napisalem powyzej) to dodam tylko, ze to rozwiazanie dziala na Linuxie, ktory robi u mnie za serwer.
Dodam jeszcze, ze NIE MAM POJECIA jak cos takiego zrobic na Windowsie, wiec nie pytajcie o to (windowsa uzywam na moim glownym komputerze, linux tylko dostarcza Internet poprzez SDI, no i na nim dziala MLDonkey - odmiana eDonkey'a)

  1. skrypt glowny , josh 22/08/02 12:14
    echo "1" > run

    Z=`iptables -L FORWARD -v -x -n |awk '{print $2}' |tail -n1`

    while [ `cat run` = 1 ] ; do

    Z1=$Z

    sleep 1

    Z2=`iptables -L FORWARD -v -x -n |awk '{print $2}' |tail -n1`

    Z=$Z2

    Z3=$((Z2-$Z1))

    echo $Z3

    if [ $Z3 -gt 500 ] ; then

    if [ `cat state` = 0 ] ; then

    ./mlstop

    echo "mlstop"

    echo "1" > state

    fi

    else

    if [ `cat state` = 1 ] ; then

    ./mlstart

    echo "mlstart"

    echo "0" > state

    fi

    fi

    done

  2. skrypty: mlstart i mlstop , josh 22/08/02 12:15
    ./MLSTART:
    iptables -t filter -D INPUT -p tcp --destination-port 4662 -j REJECT
    iptables -t filter -D INPUT -p tcp --source-port 4662 -j REJECT
    iptables -t filter -D OUTPUT -p tcp --destination-port 4662 -j REJECT
    iptables -t filter -D OUTPUT -p tcp --source-port 4662 -j REJECT

    iptables -t filter -D INPUT -p tcp --destination-port 4661 -j REJECT
    iptables -t filter -D INPUT -p tcp --source-port 4661 -j REJECT
    iptables -t filter -D OUTPUT -p tcp --destination-port 4661 -j REJECT
    iptables -t filter -D OUTPUT -p tcp --source-port 4661 -j REJECT


    ./MLSTOP
    iptables -t filter -A INPUT -p tcp --destination-port 4662 -j REJECT
    iptables -t filter -A INPUT -p tcp --source-port 4662 -j REJECT
    iptables -t filter -A OUTPUT -p tcp --destination-port 4662 -j REJECT
    iptables -t filter -A OUTPUT -p tcp --source-port 4662 -j REJECT

    iptables -t filter -A INPUT -p tcp --destination-port 4661 -j REJECT
    iptables -t filter -A INPUT -p tcp --source-port 4661 -j REJECT
    iptables -t filter -A OUTPUT -p tcp --destination-port 4661 -j REJECT
    iptables -t filter -A OUTPUT -p tcp --source-port 4661 -j REJECT

  3. krotki opis: , josh 22/08/02 12:24
    od poczatku: skrypt zaklada plik o nazwie ./run i wpisuje w nim "1". jest to warunek do powtarzania sie petli czyli calego programu. jesli chcesz zatrzymac program musisz z np. innej konsoli wpisac do pliku ./run "0" - wtedy program sie zatrzyma.
    Nastepnie "Z=bla bla bla" to (1) wg pierwszego opisu, a "Z2=bla bla bla" to jest punkt (3). Warunek "$Z3 - gt 500" to sprawdzenie, czy roznica Z2 i Z1 jest wieksza od 0,5KB. Nastepny warunek "if `cat state` = 0" to sprawdzenie, czy aktualnie blokada jest wlaczona czy nie.
    Chodzi o to, ze gdy blokada jest uruchamiana z linijki "./mlstop" zaraz potem w pliku ./mlstop jest wpisywana wartosc 1. Chodzi o to, zeby program nie wlaczal ani nie wylaczal blokady wiele razy, skrypt mlstart i mlstop uruchomi sie tylko wtedy, kiedy jest piotrzeba, a nie co sekunde.

    Podsumowujac pliki w katalogu, jakie wystepuja:
    skrypt-glowny, nazwany przeze mnie:
    "josh-pseudo-shaper"
    potem: "mlstart" i "mlstop"
    i pliki pomocnicze:
    "state" i "run".

    1. Interesujace , Gali 22/08/02 18:20
      Powinni to umiescic na jakiejs stronie jako artykul.

      Pozdrawiam

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL