Firefox не используется. И насколько я знаю, есть плагин считающий расход (и расход только трафика через него), а не остаток
Плагин для Firefox?
Firefox не используется. И насколько я знаю, есть плагин считающий расход (и расход только трафика через него), а не остаток
Я имел в виду написать свой, который будет брать циферки со странички провайдера. Можно конечно это и на роутере реализовать, но слишком нагрузка на него большая будет.
Хочется набросать небольшой сайт для удобного просмотра статистики, но при этом кодить с 0 хочется уже не так. В поисках лёгкого php фреймворка набрёл на Yii, но даже его тестовое приложение Blog заметно притормаживает. Подскажите если компромис между удобством и скоростью?
p.s. в yii в качестве бд использовал sqlite
Все, что будет выполняться на роутере, будет тормозить всегда, ввиду отсутствия вычислительной мощности. Компромисс - генерить на роутере скриптом простой текстовый файлик с данными, а считать и рисовать в браузере яваскриптом. В качестве примера, если графики имеются в виду, можно посмотреть Timeplot, ну и тут на форуме есть кое-что похожее, графики в svg рисуют.
аха спасибо, лично рисовать я и планировал на клиенте, для этого я выбрал (svg+java script)... просто когда я так скрипты писал на нативном шаблонизаторе - они выполнялись незаметно для глаза, а когда попробовал Yii, при тех же действиях стала появлятся 3-5 секундная задержка... может есть что то ещё легче...
В моей сетке 12 компов. Стоит mikrotik, привязка MAC-IP при помоши ARP и лимит 1 мб на юзера, кроме меня. После покупки д-линка пробую исключить mikrotik из связки, лимитирование скорости Bandwidth Management по IP работает, но как сделать лимитирование по MAC?
D-link DIR-320 (1.9.2.7-d-r1000) rTorrent ...
как лучше отключить инет?
он у меня прописан на интерфейсе eth1
если даю командуCode:ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:23:54:8D:4A:E4 inet addr:192.168.0.51 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::223:54ff:fe8d:4ae4/10 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1460 errors:0 dropped:0 overruns:0 frame:0 TX packets:2207 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:337567 (329.6 KiB) TX bytes:607681 (593.4 KiB) Interrupt:5 Base address:0x2000
инет пропадаетCode:ifconfig eth1 down
основной шлюз (модем скайлинк) пингуется, вроде интерфейс рабочий, но интернета нет, браузер ничего не показывает, приходится делать reboot роутеру (WL-500W)Code:ifconfig eth1 up
как лучше включать/выключать инет, со всем остальным я уже вроде разобрался...
Вот, знающие люди помогли...
Last edited by Omega; 30-07-2013 at 22:22.
Никого не дождался с решением. Пришлось самому. Линукс увидел реально первый раз, решая эту задачу. 20 лет назад изучал C, даже не ++, так что "код" не слишком крутой, но у меня всё работает.
Три дня сидел и устанавливал всё по инструкции DURAK EDITION
Роутер ASUS WL-500W
Скриптики, которые смотрят ежеминутно статистику по интернет интерфейсу
(у меня eth1) и если общий объем превышает заданное значение (50 Мб),
останавливают маршрутизацию инета до конца часа.
С началом каждого часа маршрутизация восстанавливается.
Установка:
1. Создаем каталог
Создаем в нем файл index.htmlCode:mkdir /opt/share/www/trafik
Вносим в него код:Code:touch /opt/share/www/trafik/index.html
Предполагается, что lighttpd уже установлен и работаетCode:<html> <head> <title>TRAFIK</title> </head> <body> <h2></h2> <p> Internet is <font color="#0000ff"> <b> _UP_ </b></font></p> </body> </html>
2. Создаем каталог, если его еще нет
предполагается, что Cron уже установлен и работаетCode:mkdir /opt/etc/cron.1mins
3. Если выполнялся пункт 2, то есть cron.1mins не было, то надо внести исправления в файл crontab, расположенный /opt/etc/
4. Создаем файл trafik_set.sh в /opt/etc/cron.hourly/Code:# это моя добавка!!! 0-59 * * * * admin run-parts /opt/etc/cron.1mins # а все остальное уже было */5 * * * * admin run-parts /opt/etc/cron.5mins 01 * * * * admin run-parts /opt/etc/cron.hourly 02 4 * * * admin run-parts /opt/etc/cron.daily 22 4 * * 0 admin run-parts /opt/etc/cron.weekly 42 4 1 * * admin run-parts /opt/etc/cron.monthly
Вносим в него код:Code:touch /opt/etc/cron.hourly/trafik_set.sh
делаем его исполняемымPHP Code:
#!/bin/sh
# Эта хрень запускается каждый час в Cron
# !!!!!!!!!!!!! ВНИМАНИЕ !!!!!!!!!!!
# у меня инет идет через интерфейс eth1, если у вас по другому - меняйте
# Читаем и считаем RX+TX трафик из /proc/net/dev
trafik=`cat /proc/net/dev | grep eth1 | sed s/"eth1:"/"eth1: "/ | awk '{trf = $2 + $10; print trf}'`
echo "Трафик: $trafik"
# Заносим его во внешний файлик для хранения
echo "${trafik}" > /opt/tmp/trafik_save.txt
# Смотрим существует ли файл с флагом, может его кто потёр... Если нет - то делаем.
if [ ! -f /opt/tmp/trafik_flag.txt ];
then
echo "1" > /opt/tmp/trafik_flag.txt # флаг в 1 - инет типа вырублен
fi
# Смотрим состояние флага - если там 1 - значит Inet уже вырублен и его надо бы включить
flag=`cat /opt/tmp/trafik_flag.txt`
echo "Флаг: $flag"
if [ "$flag" = "1" ];
then
echo "0" > /opt/tmp/trafik_flag.txt # флаг в 0 - инет врублен
echo "Врубаем инет!"
# Прописываем в доступном по www файлике о том, что инет врубается
cat /opt/share/www/trafik/index.html | sed -e 's/_DOWN_/_UP_/' -e 's/ff0000/0000ff/' > /opt/share/www/trafik/index.html.tmp && mv /opt/share/www/trafik/index.html.tmp /opt/share/www/trafik/index.html
# прописываем проброс пакетов в интернет
iptables -t filter -D FORWARD -o eth1 -j DROP
iptables -t filter -D FORWARD -i eth1 -j DROP
else
echo "Ничего не делаем"
fi
5. Создаем файл trafik_chek.sh в /opt/etc/cron.1mins/Code:chmod +x /opt/etc/cron.hourly/trafik_set.sh
Вносим код:Code:touch /opt/etc/cron.cron.1mins/trafik_chek.sh
делаем его исполняемымPHP Code:
#!/bin/sh
# Эту хрень запускаем каждую минуту в Cron
# !!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!
# У МЕНЯ ИНТЕРНЕТ ИДЕТ ПО ИНТЕРФЕЙСУ eth1,
# если у вас по другому - надо поменять тупо все вхождения eth1 на то, что у вас
# Размер ограничения в байтах, после которого отрубаем
# маршрутизацию в интернет. Считаем что за минуту мы не перекачаем за предел.
TR_LIMIT=48000000
# Смотрим - существует ли файл с флагом, может его кто потер... если его нет - делаем
if [ ! -f /opt/tmp/trafik_flag.txt ];
then
echo "0" > /opt/tmp/trafik_flag.txt # устанавливаем флаг - инет идет
fi
# Смотрим состояние флага - если там 1 значит инет уже вырублен и ничего уже делать не надо
# а если там 0 значит трафик идет и надо проверять сколько накачали
flag=`cat /opt/tmp/trafik_flag.txt`
if [ "$flag" = "0" ];
then
tr_hour=`cat /opt/tmp/trafik_save.txt`
tr_now=`cat /proc/net/dev | grep eth1 | sed s/"eth1:"/"eth1: "/ | awk '{trf = $2 + $10; print trf}'`
echo "tr_hour = $tr_hour"
echo "tr_now = $tr_now"
# вычисление разности по модулю, наверное можно красивее написать, но я не программер
if [ "$tr_hour" -gt "$tr_now" ];
then
tr_load=`expr ${tr_hour} - ${tr_now}`
echo "больше"
else
tr_load=`expr ${tr_now} - ${tr_hour}`
echo "меньше"
fi
echo "TR_LIMIT = $TR_LIMIT"
if [ "$tr_load" -gt "$TR_LIMIT" ];
then
echo "Останавливаем инет"
echo "1" > /opt/tmp/trafik_flag.txt # устанавливаем флаг - инет отрублен
# записываем инфу об этом в индексный файл, который виден по www
cat /opt/share/www/trafik/index.html | sed -e 's/_UP_/_DOWN_/' -e 's/0000ff/ff0000/' > /opt/share/www/trafik/index.html.tmp && mv /opt/share/www/trafik/index.html.tmp /opt/share/www/trafik/index.html
# убираем проброс пакетов во вне, в интернет
# интернет идет через eth1, если у вас по другому - меняйте
iptables -t filter -I FORWARD -o eth1 -j DROP
iptables -t filter -I FORWARD -i eth1 -j DROP
else
echo "Ничего не делаем"
fi
echo "tr_load = $tr_load"
fi
6. У меня все работает. Состояние можно посмотреть из браузера по адресуCode:chmod +x /opt/etc/cron.1mins/trafik_chek.sh
192.168.1.1:8082/trafik
Понятно, что если у вас другой адрес роутера
и внутренний www сервер открыт по другому порту, то вносим изменения.
Понятно, что все очень тупо и примитивно. Хотел переписать код более красиво и универсально, но плюнул - оно того не стоит.
Тем не менее, эта штука работает и полностью удовлетворяет мою задачу: не дать Skylink-у сосать из меня лишние деньги, отдавая при этом интернет на несколько компов.
Всего хорошего!
Last edited by igorzh; 17-09-2009 at 19:57.
замечен глюк:
если объем данных превышает определенное значение awk возвращает число в экспоненциальной форме, вида: x.xxxe+xx
Эту форму не понимает команда expr - соответственно всё не работает. Будем чинить... временая мера - reboot роутера.
Решение проблемы: меняем файл cron.1mins/trafik_chek.sh на следующее содержание:
суть - заставляем вычислять разность по модулю интерпретатор awkPHP Code:
#!/bin/sh
# Эту хрень запускаем каждую минуту в Cron
# !!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!
# У МЕНЯ ИНТЕРНЕТ ИДЕТ ПО ИНТЕРФЕЙСУ eth1,
# если у вас по другому - надо поменять тупо все вхождения eth1 на то, что у вас
# Размер ограничения в байтах, после которого отрубаем
# маршрутизацию в интернет. Считаем что за минуту мы не перекачаем за предел.
TR_LIMIT=48000000
# Смотрим - существует ли файл с флагом, может его кто потер... если его нет - делаем
if [ ! -f /opt/tmp/trafik_flag.txt ];
then
echo "0" > /opt/tmp/trafik_flag.txt # устанавливаем флаг - инет идет
fi
# Смотрим состояние флага - если там 1 значит инет уже вырублен и ничего уже делать не надо
# а если там 0 значит трафик идет и надо проверять сколько накачали
flag=`cat /opt/tmp/trafik_flag.txt`
if [ "$flag" = "0" ];
then
tr_hour=`cat /opt/tmp/trafik_save.txt`
tr_now=`cat /proc/net/dev | grep eth1 | sed s/"eth1:"/"eth1: "/ | awk '{trf = $2 + $10; print trf}'`
echo "tr_hour = $tr_hour"
echo "tr_now = $tr_now"
# вычисление разности по модулю, наверное можно красивее написать, но я не программер
tr_load=`echo "${tr_hour} ${tr_now}" | awk '{if ( $2 > $1 ) rrr = $2 - $1; else rrr = $1 - $2; print rrr}'`
echo "1---- tr_load = $tr_load"
# ставим флаг = 1 если трафик привысил предел
fl=`echo "${tr_load} ${TR_LIMIT}" | awk '{if ($1 > $2) ff = 1; else ff = 2; print ff}'`
echo "TR_LIMIT = $TR_LIMIT"
echo "fl = $fl"
# проверяем флаг
if [ "$fl" -eq "1" ];
then
echo "Останавливаем инет"
echo "1" > /opt/tmp/trafik_flag.txt # устанавливаем флаг - инет отрублен
# записываем инфу об этом в индексный файл, который виден по www
cat /opt/share/www/trafik/index.html | sed -e 's/_UP_/_DOWN_/' -e 's/0000ff/ff0000/' > /opt/share/www/trafik/index.html.tmp && mv /opt/share/www/trafik/index.html.tmp /opt/share/www/trafik/index.html
# убираем проброс пакетов во вне, в интернет
# интернет идет через eth1, если у вас по другому - меняйте
iptables -t filter -I FORWARD -o eth1 -j DROP
iptables -t filter -I FORWARD -i eth1 -j DROP
else
echo "Ничего не делаем"
fi
echo "tr_load = $tr_load"
fi
Last edited by Omega; 30-07-2013 at 22:24.
а какой файл нужно подредактировать чтобы была привязка к маку по IP и ограничение скорости, и ещё если на компьютере вручную прописать IP - будет ли на нём работать интернет?
Здравствуйте я давно уже пользуюсь роутером ASUS WL500gp v1
прошивка от Олега 1.9.2.7-10
как можно ограничить скорость на определённых портах на определённую скорость которую я задам сам скажем 256 кб 3000 кб и тд ?
скажем так на WiFi 54 Mb 1порт 128 кб 2порт 256 кб 3 порт 3 мегабита 4 порт 100 мегабит и тд
можно ли ограничить скорость доступа в интернет не ограничивая внутрелокальную скорость ?
Спасибо
Доброго времени суток Уважаемые!
Имею dir-320 с прошивкой от Олега 1.9.2.7-10.7
Есть задача
дать доступ в инет по айпи с ограничениями:
192.168.1.250 скорость 512кбит
...251 скорость макс 128 мин 64
...252 скорость макс 128 мин 64
...253 скорость макс 128 мин 64
...254 скорость макс 64 мин 32
Остальным запретить доступ в инет.
Прошу не посылать в поиск много что облазил есть решения вроде через шейперы, и дополнительными скриптами.
Хотелось бы от Вас знающих и имеющих опыт дать ответ на быстрое решение. Заранее благодарен
(Сейчас решено с помощью Bandwidth Management, стандартно на веб морде, но стоит подменить айпи на любой не в таблице, как ему достаётся не резанный доступ, единственное что спасает от халявщиков - это мак фильтр но те кто в доступе по маку начинают потихоньку экспериментировать с подменой айпи, это и вынудило искать решение другим способом)
Если есть возможность то хотелосьбы и тудаже добавить приорететы в зависимости от загрузки канала, т.е. если канал свободен то позволить айпишнику брать больше скорость.
Ещё присутсвует проблема работы вайфая
настройки:
Channel: 10
Wireless Mode: 802.11g Only enable 54g protection
Authentication Method: WPA-Personal
Enable AfterBurner: Disabled
Data Rate(Mbps): Auto (и возможность выбора :1,2,5.5,11 - почему нет 54 может из за этого?)
Multicast Rate(Mbps): 54Mbps
скорость загрузки из локалки по wifi макс доходит до 230, на что стоит обратить внимание? может ли настройка Bandwidth Management на это влиять, и по этому надо добавить в Routing Table правило для wifi клиента?
Заранее БЛАГОДАРЕН ....
Имеется:
1. Asus WL500gp2
2. Два канала интернета
3. Две группы пользователей, одна имеет доступ в интернет, а вторая недолжна его иметь.
Задача:
1. Как всё это настроить?!
2. Как сделать жесткую привязку мак-адреса к ип-адресу? чтобы пользователь из группы которая не в интернете не смог у себя установить ип-адрес того пользователя у которого интернет есть.
3. Как установить ограничение скорости на интернет у конкретного пользователя.