1

Temat: Czasowy limit korzystania z internetu.

Jak zrobić limit korzystania z internetu dla danego numeru IP lub MAC  np. każdego dnia tylko 4 godziny można używać internetu i blokada po tym czasie.
Jest coś takiego tylko tyczy się maksymalnego dozwolonego transferu.
Ja chciałbym ustawić maksymalny wykorzystany czas.
Żeby ograniczyć czas spędzony przed internetem dla dzieciaka.

2

Odp: Czasowy limit korzystania z internetu.

iptables. moduł time. Możesz ustalić czas od do, więc chyba powinno Ci to pomóc.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Czasowy limit korzystania z internetu.

Raczej nie.
Chcę uniknąć wyznaczania w których godzinach ma korzystać.
Niech korzysta rano w południe, wieczorem ale łącznie żeby nie przekroczyło 4 godzin.
Czy tak się da?

4

Odp: Czasowy limit korzystania z internetu.

4 godziny od rozpoczęcia - tak. Jak chcesz sumarycznie to musiał byś zrobić jakieś liczniki i start/stop żebyś wykrywał że transmisja została zakończona.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Czasowy limit korzystania z internetu.

To wiem że licznik i start stop.
Ale jak to już nie wiem.

6

Odp: Czasowy limit korzystania z internetu.

Utworzyłem dwa oddzielne dostępy do wifi.

config 'wifi-device' 'radio0'
    option 'type' 'mac80211'
    option 'channel' '11'
    option 'macaddr' 'xx:xx:xx:xx:xx:xx'
    option 'hwmode' '11ng'
    option 'htmode' 'HT20'
    option 'noscan' '1'
    option 'country' 'PL'
    list 'ht_capab' 'SHORT-GI-40'
    list 'ht_capab' 'DSSS_CCK-40'

config 'wifi-iface' 'ap_g'
    option 'device' 'radio0'
    option 'mode' 'ap'
    option 'network' 'lan'
    option 'ssid' 'nazwa1'
    option 'encryption' 'psk2'
    option 'key' 'xxx'

config 'wifi-iface' 'dzieciaki'
    option 'device' 'radio0'
    option 'mode' 'ap'
    option 'network' 'lan'
    option 'ssid' 'dzieciaki'
    option 'encryption' 'psk2'
    option 'key' 'xxx'

Jakim poleceniem mogę wyłączyć 'dzieciaki' a jakim włączyć?
Chciałbym utworzyć harmonogram dostępu dla dzieciaków.

7

Odp: Czasowy limit korzystania z internetu.

uci set wireless.dzieciaki.disabled=1

i /etc/init.d/network reload lub wifi, bez commitu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: Czasowy limit korzystania z internetu.

Śliczne dziękuję ;-)

9

Odp: Czasowy limit korzystania z internetu.

Używam czegoś w tym guście realizowanego przez licznik - sprawdzanie co minutę

#!/bin/sh
DEVICES=/etc/dzieciaki_devices # a w nim poszczególne MACi dzieciaków w kolejnych liniach
LIMIT=240
TIMEFILE=/tmp/timefile # tworzony co restart, przy założeniu, że 'dzieciaki' nie restartują : )
USEDTIME=$(cat $TIMEFILE)

for device in $(cat $DEVICES); do

if [ ! -z "$(iw dev wlan0 station dump | grep $device)" ]; then
    if [ "$(iw dev wlan0 station dump | grep -e $device -e inactive | tail -1 | awk '{print $3}')" -lt 60000 ]; then
# ignorowanie nieaktywnego połączenia, żeby było 'sprawiedliwie'
# z obserwacji - dotyczy np telefonu rzuconego w kąt, który podtrzymuje dzierżawę, ale niedotykany pozostaje 'inactive'
    let USEDTIME=$USEDTIME+1
    echo $USEDTIME > $TIMEFILE
    fi    
fi
done

if [ $USEDTIME -gt $LIMIT ]; then
# wedle uznania - u mnie aktywacja przekierowania na stronę osobnej instancji httpd_gargoyle,
# albo - jak u Ciebie - deaktywacja wydzielonego interfejsu
fi 

O północy reset licznika i zdjęcie przekirowania/blokady.
Taka dziecinada dla dzieciaków smile

10 (edytowany przez lukas 2014-04-14 11:47:58)

Odp: Czasowy limit korzystania z internetu.

Rozumiem, że należy zapisać to jako plik sh i wrzucić w autostart.
Utworzyć plik /etc/dzieciaki_devices z adresami MAC i ma działać?

Ja utworzyłem drugi wifi a w pliku /usr/lib/gargoyle/scheduled_wifi.sh mam tak.
#!/bin/sh
case "$1" in
    down) logger -t wifi-schedule: crontab event to take wifi down
          uci set wireless.dzieciaki.disabled=1 && wifi
          ;;
    up)   logger -t wifi-schedule: crontab event to bring wifi up
          uci set wireless.dzieciaki.disabled=0 && wifi         
          ;;
esac
Dzięki temu wykorzystaną mam zakładkę harmonogram wifi :-)

11

Odp: Czasowy limit korzystania z internetu.

Jako wykonywalny, ale uruchamiany co minutę przez cron, a w tym jego momencie

if [ $USEDTIME -gt $LIMIT ]; then
# jakieś zdarzenie, które odetnie 'internety'
fi

Tak, w /etc/dzieciaki_devices kolejno MAC adresy urządzeń pociech:
XX:XX:XX:XX:XX:XX
XX:XX:XX:XX:XX:XX
XX:XX:XX:XX:XX:XX
...

12 (edytowany przez lukas 2014-04-14 20:55:35)

Odp: Czasowy limit korzystania z internetu.

Rozumiem, że jak mam tam wpisane LIMIT=240 to jak go uruchomię co 2 minuty to dostęp będzie trwał 8 godzin.

Tylko nie bardzo rozumiem jak ma przekierować ruch danego komputera który był podłączony do internetu 8 godzin.
Czy to nie jest tak, że przekieruje ruch dla wszystkich komputerów z listy /etc/dzieciaki_devices jednocześnie?

Nie bardzo wiem jak zablokować internet dla poszczególnego komputera z osobna lub jak przekierować na jakąś ślepą stronę.

13

Odp: Czasowy limit korzystania z internetu.

Idąc tym tropem - tak. Cóż, moje dzieciaki, to de facto 1szt. z potencjalnie trzema (o zgrozo!) klientami, pc/tablet/telefon.
Stąd zliczanie dla wszystkich urządzeń równocześnie, bo zdarza się, że i w dwa na raz jest 'bęnione'. Więcej dzieciaków to przykładowo przez rozwinięcie niżej przytoczonego pomysłu więcej osobnych plików z przypisanemu każdemu MAC adresami i osobne przebiegi sprawdzające dla każdego z plików, żeby nie było 'wszyscy za jednego'.

Wracając zatem do sposobu na przekierowanie na stronę, to dodatkowo:
- mam dodatkowy katalog ze 'stroną', na którą trafiają banici, np. /limbo/index.html
- w rc.local instrukcję, aby po restarcie tworzyć pusty licznik i tę drugą instancję www

echo 0 > /tmp/timefile #ewentualnie potrzebne osobne dla każdej pociechy
httpd_gargoyle -p 88 -d /limbo -PNF index.html

- w cronie sprawdzenie co minutę oraz zerowanie licznika tuż po północy ze zdjęciem ewentualnie nałożonej blokady

*/1 * * * * /sbin/dzieciaki_counter.sh
1 0 * * * cat /tmp/timefile > /tmp/timefile.old; echo 0 > /tmp/timefile; /sbin/dzieciaki_limit.sh unlock

"Ten" moment w pliku /sbin/dzieciaki_counter.sh, w którym po osiągnięciu limitu następuje przekierowanie, to wywołanie /sbin/dzieciaki_limit z argumentem lock

if [ $USEDTIME -gt $LIMIT ]; then
[ -e /tmp/dzieciaki.lock ] || /sbin/dzieciaki_limit.sh lock 
fi

aż wreszcie sam /sbin/dzieciaki_limit.sh

#!/bin/sh

case "$1" in
    lock)
        [ -e /tmp/dzieciaki.lock ] && return
        touch /tmp/dzieciaki.lock
        iptables -A PREROUTING -t nat -s IP_PRZYPISANE_DO_MAC -p tcp --dport 1:65535 -j DNAT --to 192.168.1.1:88
        ;;
    unlock)
        [ -e /tmp/dzieciaki.lock ] || return
        rm /tmp/dzieciaki.lock
        iptables -D PREROUTING -t nat -s IP_PRZYPISANE_DO_MAC -p tcp --dport 1:65535 -j DNAT --to 192.168.1.1:88
        ;;
esac

Przekierowanie jak widać dla konkretnego IP wedle konfiguracji w zakładce DHCP - statycznie przypisanych adresów IP do MAC.
Całość to zlepek fragmentów rozmaitych koncepcji zaczerpniętych głównie z tutejszego forum.

14

Odp: Czasowy limit korzystania z internetu.

Dałbyś może radę przygotować gotowca?
Ja sobie nie poradzę, nie moja dziedzina, za tępy do tego jestem.
Mam parkę a każdy z nich PC, tel, tablet i córa jeszcze dostała od babki laptopa grrryyyy.

15 (edytowany przez dopsz 2014-04-15 22:41:31)

Odp: Czasowy limit korzystania z internetu.

To w zasadzie jest gotowiec - najprościej zdublować dla każdego z osobna nazywając pliki, a w plikach adresując odpowiednio referencje (bo tak będzie najprościej wyłączyć rozdzielnie, np. usuwając sprawdzanie z crona dla jednego z nich), więc dwa zestawy na bazie poprzedniej instrukcji w ten sposób, że przykładowe 'dzieciaki' to odpowiednio 'jas' i 'malgosia', zatem:
- w rc.local

echo 0 > /tmp/timefile_jas
echo 0 > /tmp/timefile_malgosia
httpd_gargoyle -p 88 -d /limbo -PNF index.html

- w cronie

*/1 * * * * /sbin/jas_counter.sh; /sbin/malgosia_counter.sh
1 0 * * * cat /tmp/jas_timefile > /tmp/jas_timefile.old; echo 0 > /tmp/jas_timefile; /sbin/jas_limit.sh unlock; cat /tmp/malgosia_timefile > /tmp/malgosia_timefile.old; echo 0 > /tmp/malgosia_timefile; /sbin/malgosia_limit.sh unlock

- osobne /etc/jas_devices i /etc/malgosia_devices
itd....

Nie ma - to, tamto - nie moja dziedzina : ) Nie można się dać Jasiowi i Małgosi prześcignąć, bo gotowe zaraz same obczaić jak tu sarkofagom założyć limity.

16

Odp: Czasowy limit korzystania z internetu.

"sarkofagom założyć limity." Coś w tym jest ;-)

17 (edytowany przez lukas 2014-04-16 17:35:16)

Odp: Czasowy limit korzystania z internetu.

No jakoś przebrnąłem przez to wszystko i działa, pomysł znakomity.
Powinna być zakładka od takich rzeczy montowana fabrycznie :-) jest to dziś bardziej potrzebne niż harmonogram wifi.

Ale mam dwa problemy.

Pierwszy z nich to czy muszę wpisać w pliku /sbin/dzieciaki_limit.sh IP_PRZYPISANE_DO_MAC adres IP ? po co jak w pliku /etc/dzieciaki_devices jest już adres MAC. Jeżeli pozostawię wpisy "IP_PRZYPISANE_DO_MAC" to wyskakuje błąd:

/sbin/dzieciaki_counter.sh
iptables v1.4.6: host/network `IP_PRZYPISANE_DO_MAC' not found
Try `iptables -h' or 'iptables --help' for more information.
///////////////////////////////////////////a jeżeli wpisze IP danego MAC to poprawnie wszystko działa.


Drugi problem to taki, że blokuje tylko strony www przekierowując ruch na /limbo/index.html ale cala reszta działa i dzieciaki graja w najlepsze. Jak zablokować cały ruch dla danego adresu MAC?

18

Odp: Czasowy limit korzystania z internetu.

Tak na pierwszy rzut oka to regułki w /sbin/dzieciaki_limit.sh dotyczą tcp.

Wiekszość gier chodzi w udp.

Ja np blokuje wszystkie porty na udp i tcp powyzej 1000 i w ten sposób blokuje lola i wot. Grac sie nie da. A www, skype itp chodzi.

MF

19

Odp: Czasowy limit korzystania z internetu.

to jak zmienić ta regułkę blokując udp i tcp?

20

Odp: Czasowy limit korzystania z internetu.

IP_PRZYPISANE_DO_MAC to ma być ip konkretnie, a nie zostawiłeś tą nazwę...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

21 (edytowany przez lukas 2014-04-16 21:16:11)

Odp: Czasowy limit korzystania z internetu.

a jeżeli zablokuję komputer np.
iptables -I FORWARD 1 -p tcp -s 192.168.1.100 -j REJECT

to jaką komenda go odblokować?
i jaki sens ma lista /etc/dzieciaki_devices skoro blokuje jeden komputer z podanym IP?

22

Odp: Czasowy limit korzystania z internetu.

Lista jest do identyfikacji urządzeń i ich czasu korzystania z wifi, że Jaś skonsumował swój czas częściowo telefonem, komputerem i tabletem, albo tylko komputerem, więc blokować należałoby osobną regułką każdy z osobna - trzy regułki dla trzech IP.

23

Odp: Czasowy limit korzystania z internetu.

Dokumentacja iptables mówi ze jak dasz

-p ! icmp
zamiast
-p tcp
to zostanie wycięte wszystko poza icmp czyli udp i tcp.

Można też osobną regułkę dla -p tcp i osobną dla -p udp.
Trzeba potestować.

MF

24

Odp: Czasowy limit korzystania z internetu.

Dzięki za pomoc, wszystko pięknie śmiga. Porobiłem male ulepszenia.

Prosilbym o jeszcze jedną podpowiedź.

Chciałem sobie zrobić przyciski, i tak:

<form action="<? echo 480 > /zapora/dziecko_tmp ?>" method="post"><input class="default_button" type="submit" value="nazwa klawisza">

Zawartość pliku /zapora/dziecko_tmp zmienia sie już po odświeżeniu strony na 480.
Za chiny nie potrafię zrobić by zmieniała się zawartość po naciśnięciu buttona.
Wiem że problem jest tu <form action="<? echo 480 > /zapora/dziecko_tmp ?>" ale jak to poprawnie zapisać? Chciałbym uniknąć robienia dodatkowych plików wykonujących polecenie *.sh.

25

Odp: Czasowy limit korzystania z internetu.

Panowie czy ten wspaniały wynalazek działa na najnowszej wersji gargoyle tj 1.10.0.2 ?
Zrobiłem wg instrukcji, ale coś nie za bardzo chce ruszyć..
Plik /tmp/timefile ciągle ma wartość 0...