PDA

Bekijk de volledige versie : Статистика и ограничение доступа по ip и mac



KinoMan
08-01-2010, 12:45
Новый скрипт (февраль 2011)
Старую версию перенес сюда. (http://wl500g.info/showpost.php?p=187818&postcount=12)

Для работы этого скрипта необходимы установленные и настроенные пакеты lighttpd, php и cron.

Для чего этот скрипт:
Этот скрипт предназначен только для подсчета трафика. Также в нем существует возможность автоматически отключать интернет пользователям, которые превысили лимит трафика за месяц.

Настройка подсчета трафика

1.Создаем директории и необходимые файлы


touch /usr/local/sbin/lst/ip_piring.lst
touch /usr/local/sbin/makestat
touch /usr/local/sbin/makefilter
chmod +x /usr/local/sbin/makestat
chmod +x /usr/local/sbin/makefilter


распаковываем содержимое statistic.zip в DocumentRoot lighttpd (/opt/share/www/)

2.Создаем таблицу пользователей

touch /usr/local/etc/ethers
в этот файл (/usr/local/etc/ethers) вписываем MAC и IP адреса пользователей для которых хотим открыть доступ к интернету и считать статистику
Пример:

00:00:1c:1c:1a:00 192.168.1.2
00:00:11:11:11:00 192.168.1.11
00:00:1a:1a:1a:00 192.168.1.15После последнего пользователя необходимо ставить перевод строки.

3.Создаем файл с пиринговыми сетями провайдера
У моего провайдера есть пиринговые зоны для которых я хочу отдельно считать статистику
В файл /usr/local/sbin/lst/ip_piring.lst пишем пиринговые зоны провайдера.
Мой файл выглядит так (провайдер Домолинк-Тамбов):

78.132.128.0/17
213.135.128.0/19
193.203.60.0/22
93.186.96.0/20
193.33.62.0/23
91.202.20.0/22
193.34.12.0/22
82.179.144.0/20
195.19.96.0/19
178.75.64.0/18

4.Редактируем crontab
Добавляем строчку

4-59/5 * * * * root cd /opt/share/www/statistic/ && /opt/bin/php ./billing.php > /dev/null 2>&1
Будьте внимательны: если у вас имя пользователя отличается от root и DocumentRoot отличается от /opt/share/www/, то пропишите свои значения.

5.Редактируем файл /usr/local/sbin/post-firewall
Добавляем в него

#!/bin/sh
/usr/local/sbin/makefilter
- ограничение доступа в интернет по mac и ip.
Фильтр работает независимо от того подключен или не подключен у вас жесткий диск/флешка.

6.Редактируем файл /usr/local/sbin/makefilter
код скрипта в прикрепленном файле

7.Добавляем цепочки для подсчетата трафика:
В файл /usr/local/sbin/post-boot добавим строчки:

#!/bin/sh
/usr/local/sbin/makestat

8.Редактируем файл /usr/local/sbin/makestat
код скрипта в прикрепленном файле

Сделаем файлы исполняемыми

chmod +x /usr/local/sbin/post-firewall
chmod +x /usr/local/sbin/post-boot

flashfs save && flashfs commit && flashfs enable

Можно запустить подсчет трафика не перезагружая роутер запустив:

/usr/local/sbin/makefilter
/usr/local/sbin/makestat

Дополнительно
Если у вас не безлимитный трафик и необходимо отключать интернет пользователям при достижении определенного лимита внешнего трафика, делаем следующие:

Разархивируйте limit.php (из архива limit.zip) в каталог со статистикой (/opt/share/www/statistic/).
В каталоге billing (/opt/share/www/statistic/billing) создайте файл limit
с таким форматом
1)ip-адрес пользователя; 2)лимит входящего трафика; 3)лимит исходящего трафика; 4)суммарный лимит трафика.
все лимиты задаются в мегабайтах
например:

192.168.100.97 1750 275 2010
Все лимиты задаются целыми числами.
пользователю дано 1750МБ входящего, 275МБ исходящего трафик и 2010МБ суммарного трафика (входящий+исходящий). При достижении пользователем хотя бы одного из ограничений он будет отключен.
В этот файл можно не вписывать всех пользователей, если мы не хотим задавать для них лимит.

+ Необходимо настроить кроны:
В кронтаб добавить:

*/5 * * * * root cd /opt/share/www/statistic/ && /opt/bin/php ./limit.php > /dev/null 2>&1
1 0 1 * * root /user/local/sbin/makefilter

Будьте внимательны: если у вас имя пользователя отличается от root и DocumentRoot отличается от /opt/share/www/, то пропишите свои значения.
Первого числа каждого месяца все пользователи, заблокированные по лимиту трафика, будут разблокированы.


Дополнительно у меня работает nshaper http://wl500g.info/showpost.php?p=161206&postcount=138
сам скрипт у меня находится здесь /user/local/sbin/nshaper чтоб работать независимо от подключенной флешки/жесткого диска
В настройках nshaper необходимо прописать путь к уже созданным файлам


# zone IP files search path
ZONE_PATH="/usr/local/sbin/lst/ip_%ZONE%.lst"

В /usr/local/sbin/post-firewall добавить строчку

/usr/local/sbin/nshaper start

для сохранения настроек выполнить

flashfs save && flashfs commit && flashfs enable && reboot


Немного о работе скрипта:
Статистику смотрим http://192.168.1.1:8081/statistic/ или там где у вас находится роутер и настроен lighttpd.
Скрипт считает весь трафик проходящий через роутер к пользователям прописанным в /usr/local/etc/ethers и внешний трафик самого роутера.
World - внешний трафик (Интернет).
City - пиринговый трафик (заданный в файле ip_piring.lst).

DELTA - трафик за последние 5 минут.

Содержимое страниц обновляется раз в 5 минут.

Подсчет статистики за новый месяц будет начнется "с чистого листа". Статистику за прошлые месяцы работы скрипта можно будет посмотреть по адресу http://192.168.1.1:8081/statistic/2010-08.html - август 2010 года (аналогично другие месяцы).

rromcic
08-01-2010, 16:58
К этому добавить бы ограничение скорости по IP download/upload :p

KinoMan
08-01-2010, 17:18
К этому добавить бы ограничение скорости по IP download/upload :p

А зачем жестко резать скорость?
Ведь есть nshaper.

Если вам очень надо повысить приоритет для конкретного ip, то посмотрите тут http://wl500g.info/showthread.php?p=175534#post175534

rromcic
08-01-2010, 21:44
А зачем жестко резать скорость?
Ведь есть nshaper.

Если вам очень надо повысить приоритет для конкретного ip, то посмотрите тут http://wl500g.info/showthread.php?p=175534#post175534

Мне просто нужно каждому юзеру поставить 2048/128 кб, с download работает даже через веб настройки а upload пока никак.

lsd_wiz
18-01-2010, 20:39
Неплохо),
Мот кто напишет статистику для tc на shell-e?


tc -s class ls dev imq1
class htb 1:11 parent 1:1 leaf 11: prio 1 rate 320Kbit ceil 1900Kbit burst 1499b cburst 4031b
Sent 155843415 bytes 131248 pkts (dropped 0, overlimits 0)
rate 137794bps 114pps
lended: 26123 borrowed: 105125 giants: 0
tokens: -57391 ctokens: 19449

class htb 1:1 root rate 2000Kbit ceil 2000Kbit burst 15Kb cburst 4159b
Sent 176398358 bytes 150395 pkts (dropped 0, overlimits 0)
rate 176660bps 149pps
lended: 110878 borrowed: 0 giants: 0
tokens: 94915 ctokens: 13567

class htb 1:13 parent 1:1 leaf 13: prio 5 rate 320Kbit ceil 1900Kbit burst 1499b cburst 4031b
Sent 10200866 bytes 7304 pkts (dropped 0, overlimits 0)
rate 11652bps 8pps
lended: 5563 borrowed: 1741 giants: 0
tokens: -20903 ctokens: 19279

class htb 1:12 parent 1:1 leaf 12: prio 1 rate 6Kbit ceil 6Kbit burst 1499b cburst 1606b
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
lended: 0 borrowed: 0 giants: 0
tokens: 3631591 ctokens: 3890643

class htb 1:15 parent 1:1 leaf 15: prio 5 rate 320Kbit ceil 1900Kbit burst 1499b cburst 4031b
Sent 10353988 bytes 11842 pkts (dropped 0, overlimits 0)
rate 23987bps 23pps
lended: 7831 borrowed: 4011 giants: 0
tokens: -14343 ctokens: 22696

class htb 1:14 parent 1:1 leaf 14: prio 0 rate 320Kbit ceil 1900Kbit burst 1499b cburst 4031b
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
lended: 0 borrowed: 0 giants: 0
tokens: 68092 ctokens: 30824

чтоб из этого такаяжа краста получилась. а то мои мысли заши в тупик.
вот то что есть:


cat stat
#!/bin/sh
TC="tc -s class ls dev"
$TC imq1 | awk '
BEGIN{user=0;rate=0}
{
#if(user != 0){rate=0;user=0}
if($1 == "class"){
if($3 == "1:1"){user="common"}
if($3 == "1:11"){user="user1"}
if($3 == "1:12"){user="user2"}
if($3 == "1:13"){user="user3"}
if($3 == "1:14"){user="user4"}
if($3 == "1:15"){user="user5"}
}
if($1 == "rate"){rate=$2}
if(rate != 0){
print(user,rate)
user=0
rate=0
}
}
END{}' | sort

GUID
09-02-2010, 04:52
Не сочтите за придирку, но мне кажется, что вместо:


awk '{system("iptables -A STAT_IP -s "$2" -j RETURN")
system("iptables -A STAT_IP -d "$2" -j RETURN"); }' < /etc/ethers

Вы хотели написать:


awk '{system("iptables -A STAT_IP -s "$2" -j RETURN")
system("iptables -A STAT_IP -d "$2" -j RETURN"); }' < /usr/local/etc/ethers



Подскажите как с эти бороться ???
Я детально не разбирался и списал это на то, что запускал скрипт end, когда еще не все было настроено. Поэтому тупо грохнул (вместе со статистикой!) файлы:
/opt/share/www/statistic/index.html
/opt/Billing/users/*
/opt/Billing/total
и перезагрузил.... вот.

akm2008
10-02-2010, 23:31
Я детально не разбирался и списал это на то, что запускал скрипт end, когда еще не все было настроено. Поэтому тупо грохнул (вместе со статистикой!) файлы:
/opt/share/www/statistic/index.html
/opt/Billing/users/*
/opt/Billing/total
и перезагрузил.... вот.

хм.... сейчас сел чтоб подправить и чудо новые сутки пошли без проблем )))

KinoMan
11-02-2010, 19:45
Строки с нулями появляются при перезагрузке роутера видимо в тот момент когда срабатывает скрипт. За 2 месяца у меня такое было 1 раз.
Как исправить:
зайти в /opt/Billing/users/
найти файл с датой, где появились нули
открыть его и отредактировать, удалив первые несколько строчек с нулями.


Не сочтите за придирку, но мне кажется, что вместо:

Вы хотели написать:


awk '{system("iptables -A STAT_IP -s "$2" -j RETURN")
system("iptables -A STAT_IP -d "$2" -j RETURN"); }' < /usr/local/etc/ethers


Исправил. но это не существенно.

KinoMan
05-03-2010, 11:40
Старый скрипт
(ноябрь 2010)


Для работы этого скрипта необходимы установленные и настроенные пакеты lighttpd, php, cron и gawk.

Для чего этот скрипт:
Этот скрипт предназначен только для подсчета трафика. Также в нем существует возможность автоматически отключать интернет пользователям, которые превысили лимит трафика за месяц.

Настройка подсчета трафика

1.Создаем директории и необходимые файлы

mkdir /opt/etc/billing
mkdir /opt/etc/billing/city
mkdir /opt/etc/billing/world
mkdir /opt/etc/billing/router
mkdir /opt/share/www/statistic
touch /opt/etc/cron.5mins/billing
chmod +x /opt/etc/cron.5mins/billing
touch /opt/etc/billing/limit
touch /usr/local/sbin/lst/ip_piring.lst
touch /usr/local/sbin/makestat
touch /usr/local/sbin/makefilter
chmod +x /usr/local/sbin/makestat
chmod +x /usr/local/sbin/makefilter


2.Создаем таблицу пользователей

touch /usr/local/etc/ethers
в этот файл (/usr/local/etc/ethers) вписываем MAC и IP адреса пользователей для которых хотим открыть доступ к интернету и считать статистику
Пример:

00:00:1c:1c:1a:00 192.168.1.2
00:00:11:11:11:00 192.168.1.11
00:00:1a:1a:1a:00 192.168.1.15После последнего пользователя необходимо ставить перевод строки.

3.Создаем файл с пиринговыми сетями провайдера
У моего провайдера есть пиринговые зоны для которых я хочу отдельно считать статистику
В файл /usr/local/sbin/lst/ip_piring.lst пишем пиринговые зоны провайдера.
Мой файл выглядит так (провайдер Домолинк-Тамбов):

78.132.128.0/17
213.135.128.0/19
193.203.60.0/22
93.186.96.0/20
193.33.62.0/23
91.202.20.0/22
193.34.12.0/22
82.179.144.0/20
195.19.96.0/19
4.Для того чтобы задать лимиты трафика пользователям необходимо:
отредактировать файл /opt/etc/billing/limit
формат файла таков
1)ip-адрес пользователя; 2)лимит входящего трафика; 3)лимит исходящего трафика; 4)суммарный лимит трафика.
все лимиты задаются в мегабайтах
например:

192.168.1.2 10 1.0e+20 500 После последнего пользователя необходимо ставить перевод строки.

пользователю дано 10МБ входящего, практически не ограниченный исходящий трафик и 500МБ суммарного трафика (входящий+исходящий). При достижении пользователем хотя бы одного из ограничений он будет отключен.
В этот файл можно не вписывать всех пользователей, если мы не хотим задавать для них лимит. У меня например этот файл пустой.

5.Редактируем файл /opt/etc/cron.5mins/billing
код скрипта в прикрепленном файле

6.Редактируем файл /opt/share/www/statistic/index.php
код скрипта в прикрепленном файле

7.Редактируем файл /usr/local/sbin/post-firewall
Добавляем в него

#!/bin/sh
/usr/local/sbin/makefilter
- ограничение доступа в интернет по mac и ip.
Фильтр работает независимо от того подключен или не подключен у вас жесткий диск/флешка.

8.Редактируем файл /usr/local/sbin/makefilter
код скрипта в прикрепленном файле

9.Добавляем цепочки для подсчетата трафика:
В файл /usr/local/sbin/post-boot добавим строчки:

#!/bin/sh
/usr/local/sbin/makestat

10.Редактируем файл /usr/local/sbin/makestat
код скрипта в прикрепленном файле

Сделаем файлы исполняемыми

chmod +x /usr/local/sbin/post-firewall
chmod +x /usr/local/sbin/post-boot

flashfs save && flashfs commit && flashfs enable && reboot

Дополнительно у меня работает nshaper http://wl500g.info/showpost.php?p=161206&postcount=138
сам скрипт у меня находится здесь /user/local/sbin/nshaper чтоб работать независимо от подключенной флешки/жесткого диска
В настройках nshaper необходимо прописать путь к уже созданным файлам


# zone IP files search path
ZONE_PATH="/usr/local/sbin/lst/ip_%ZONE%.lst"

В /usr/local/sbin/post-firewall добавить строчку

/usr/local/sbin/nshaper start

для сохранения настроек выполнить

flashfs save && flashfs commit && flashfs enable && reboot

Немного о работе скрипта:
Статистику смотрим http://192.168.1.1:8081/statistic/ или там где у вас находится роутер и настроен lighttpd.
Скрипт считает весь трафик проходящий через роутер к пользователям и внешний трафик самого роутера.
World - внешний трафик (Интернет).
City - пиринговый трафик (заданный в файле ip_piring.lst).

DELTA - трафик за последние 5 минут.
Если были заданы лимиты для пользователей, то для этих пользователей будет отображаться графа с остатком (BALANCE).
Порядок отображения пользователей в браузере точно такой же, как вы задали в файле ethers. Для поля BALANCE порядок пользователей такой же, как в файле limit.

Содержимое страниц обновляется раз в 5 минут.

Подсчет статистики за новый месяц будет начнется "с чистого листа". Все пользователи, заблокированные по лимиту трафика, будут восстановлены. Статистику за прошлые месяцы работы скрипта можно будет посмотреть по адресу http://192.168.1.1:8081/statistic/2010-08.html - август 2010 года (аналогично другие месяцы).

gingerino
12-04-2010, 14:52
установил статистику и nshaper. В iptables вижу, что подсчёт ведётся. Шейпер режет. Но вот на сайте статистика не обновляется. Куда копать?


iptables -nxvL | grep STAT -A 15
408398 192348821 STAT_IP all -- * * 0.0.0.0/0 0.0.0.0/0
199999 37466458 MAC_IP all -- * !br0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
6859 361636 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02 TCPMSS clamp to PMTU
387259 190737467 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- !br0 ppp0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- !br0 vlan1 0.0.0.0/0 0.0.0.0/0
0 0 SECURITY all -- !br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate DNAT

--
Chain STAT_IP (1 references)
pkts bytes target prot opt in out source destination
21319 4332932 RETURN all -- * * 192.168.0.39 0.0.0.0/0
22721 10732361 RETURN all -- * * 0.0.0.0/0 192.168.0.39
11519 1245372 RETURN all -- * * 192.168.0.3 0.0.0.0/0
12509 15281613 RETURN all -- * * 0.0.0.0/0 192.168.0.3
11739 667399 RETURN all -- * * 192.168.0.5 0.0.0.0/0
13060 14931916 RETURN all -- * * 0.0.0.0/0 192.168.0.5
6072 1872269 RETURN all -- * * 192.168.0.21 0.0.0.0/0
5251 3716919 RETURN all -- * * 0.0.0.0/0 192.168.0.21
8649 3163000 RETURN all -- * * 192.168.0.200 0.0.0.0/0
6509 3408964 RETURN all -- * * 0.0.0.0/0 192.168.0.200
0 0 RETURN all -- * * 192.168.0.202 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 192.168.0.202
432 22736 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0



в то же время файл total представляет собой

cat /opt/Billing/total
192.168.0.39 0
192.168.0.3 0
192.168.0.5 0
192.168.0.21 0
192.168.0.200 0
192.168.0.202 0

KinoMan
12-04-2010, 15:23
gingerino
крон установлен? проверьте, работает ли он.
еще для скрипта статистики необходим пакет gawk: ipkg install gawk

gingerino
12-04-2010, 16:06
gawk стоит:
ipkg list_installed | grep gawk
gawk - 3.1.7-1 - Gnu AWK interpreter

да похоже что cron не запускает задачи...
сейчас проверил права на файл end - 755
буду курить крон....

В файле /opt/etc/cron.5mins/end прописан параметр USRS="/opt/Billing/users/*" но такого файла "*" в указанном каталоге не лежит...

крон вроде работает, так как rrd крутится и график трафика обновляет...

KinoMan
12-04-2010, 16:27
В файле /opt/etc/cron.5mins/end прописан параметр USRS="/opt/Billing/users/*" но такого файла "*" в указанном каталоге не лежит...
и не должно

выполните команду
/opt/etc/cron.5mins/end
если статистика обновилась, то крон просто не запускает этот скрипт

gingerino
12-04-2010, 16:44
выполните команду
/opt/etc/cron.5mins/end
если статистика обновилась, то крон просто не запускает этот скрипт
статистика так и не обновилась даже после запуска... :mad:

KinoMan
12-04-2010, 16:46
статистика так и не обновилась даже после запуска... :mad:

ну и? какие ошибки выдал скрипт?

gingerino
12-04-2010, 16:53
никаких ошибок не выдал!

Тем не менее содержимое странички изменяется. Появилось строчка со вчерашней датой. Под ней - всё тот же список интерфейсов с нулями в столбцах...
http://keep4u.ru/imgs/b/2010/04/13/94/948b911521a16568ce636b248715b090.png (http://keep4u.ru)

Вот статистика дельты совсем ничего не показывает...
http://keep4u.ru/imgs/b/2010/04/13/f2/f2fab63dc89018d4cb884f0d4eb2f915.png (http://keep4u.ru)

Sheps
13-04-2010, 15:47
gingerino а в /opt/Billing/users/ файлы вида 2010-04-13 создаются?

gingerino
13-04-2010, 16:27
gingerino а в /opt/Billing/users/ файлы вида 2010-04-13 создаются?
Создаются. Но пустые.
[root@relka root]$ du /opt/Billing/users/*
0 /opt/Billing/users/2010-04-11
0 /opt/Billing/users/2010-04-12
0 /opt/Billing/users/2010-04-13
0 /opt/Billing/users/2010-04-14

serji
13-04-2010, 17:16
gingerino а в /opt/Billing/users/ файлы вида 2010-04-13 создаются?

но понулям



2010-04-13 [----] 0 L:[ 1+ 0 1/ 5] *(0 / 73b) 0049 0x031
192.168.1.5 0..
192.168.1.98 0..
192.168.1.99 0..
192.168.1.100 0..


и еще вопрос: вместо IP можно имя писать?

а Сам скрипт счетчика
vi /opt/Billing/cnt
надо вносить?

KinoMan
13-04-2010, 20:19
а Сам скрипт счетчика
vi /opt/Billing/cnt
надо вносить?

Вся настройка статистики целиком и полностью в первом посте. Ни какие другие скрипты не нужны - скрипт один /opt/etc/cron.5mins/end



и еще вопрос: вместо IP можно имя писать?


можете, например, заменить эту строчку


printf("<tr><td><font color=blue>%s</font></td><td><font color=green>%.2f</font></td><td><font color=red>%.2f</font></td><td><font color=blue>%.2f</font></td></tr>\n",$1,$2/1024/1024,$3/1024/1024,$4/1024/1024)

на это


{
if(($1) == "192.168.1.11"){$1="Вася"}
if(($1) == "192.168.1.15"){$1="Петя"}
if(($1) == "192.168.1.2"){$1="Маша"}

printf("<tr><td><font color=blue>%s</font></td><td><font color=green>%.2f</font></td><td><font color=red>%.2f</font></td><td><font color=blue>%.2f</font></td></tr>\n",$1,$2/1024/1024,$3/1024/1024,$4/1024/1024);
}

serji
14-04-2010, 04:33
т.е. перед каждым принтом дописать?

{
if(($1) == "192.168.1.250"){$1="KrOlya"}
if(($1) == "192.168.1.252"){$1="Taty"}
if(($1) == "192.168.1.206"){$1="dell-SERA"}
printf (...);
}


снес всё.
установил с "Установка программ для чайника" за 15 мин. без vnstata и пр.
создал папки, файл end, добавил правило в post-firewall.
в начале всёравно в статистике нули. и каждый запуск end добавляет строчки с 0 (нулями) по количеству пользователей.
но после нескольких перезагрузок все нормализовалось, трафик считается.... СПС!

gingerino
14-04-2010, 11:11
Что же мне делать? Ума не приложу.... Вижу, что статистика через iptables считается.. Но на страничку не попадает :mad:

Может быть дело в ip-piring ? Дело в том что этот файл у меня пустой... Стоп! Простите, я позабыл его создать вовсе!... :)

KinoMan
14-04-2010, 14:10
Что же мне делать? Ума не приложу....
тоже не приложу.... )))
может вы сохранили скрипт end с переносами строк в формате windows...
попробуйте скачать из первого поста прикрепленный файл и за лить его на роутер.

gingerino
14-04-2010, 16:09
тоже не приложу.... )))
может вы сохранили скрипт end с переносами строк в формате windows...
попробуйте скачать из первого поста прикрепленный файл и за лить его на роутер.

Пробовал по разному. Сначала залил wget'ом на свой фтпишник, потом через putty тем же wget'ом на роутер... Потом пробовал копировать из консоли через cat... всё одно. да и винды нету... Через неделю только попробую переставить. Пока наблюдаю картину из консоли... Спасибо.

Sheps
21-04-2010, 21:54
Похоже нули появляются после добавления пользователей в ethers и если в iptables еще нет для них правил..
В логи попадёт запись типа "192.168.X.X 0" (0 дает сложение in out)
Которая при следующем запуске скрипта увеличит счётчик пользователей на лишнюю единицу, ведь if(NF == 2) - истинно
Для исправления глюка добавил пару нулей

print(userip[j]" "ipin[userip[j]]+0" "ipout[userip[j]]+0" "ipin[userip[j]]+ipout[userip[j]]" "dipin[userip[j]]" "dipout[userip[j]]);
Или можно объявить массивы численными?

gingerino
28-04-2010, 13:02
Итак, всё на самом деле работало и работает. Дело было в том, что файл ethers я оформлял не должным образом, а типа вот этого:

mac-address1 ip-address1 #user1
mac-address2 ipaddress2 #user2
после исправления и перезагрузки роутера всё стало по своим местам.
Статистика считает правильно.
Теперь другая трабла. С вай-фай клиентами. Не могу выйти в инет, даже прописав мак адрес и настроив dhcp даже только для одного клиента...

KinoMan
15-05-2010, 23:36
Теперь другая трабла. С вай-фай клиентами. Не могу выйти в инет, даже прописав мак адрес и настроив dhcp даже только для одного клиента...
маки всех компьютеров, включая, тех которые подключены по wifi надо писать так же в /usr/local/etc/ethers

если вам не нужна блокиравка по макам, то можете убрать из post-firewall это

iptables -N MAC_IP
iptables -I FORWARD 1 -o ! br0 -j MAC_IP
awk '{system("iptables -A MAC_IP -s "$2" -m mac --mac-source "$1" -j RETURN")}' < /etc/ethers
iptables -A MAC_IP -j DROP

partner
14-06-2010, 13:15
KinoMan подскажите, пожалуйста, может быть Ваш скрипт можно подправить чтобы жестко резать скорость пользователям? Стоит nshaper, но нужно фиксированно разделить канал, а уже внутри его шейпить трафик.

KinoMan
04-07-2010, 14:32
KinoMan подскажите, пожалуйста, может быть Ваш скрипт можно подправить чтобы жестко резать скорость пользователям? Стоит nshaper, но нужно фиксированно разделить канал, а уже внутри его шейпить трафик.

этот скрипт только для подсчета трафика, скоростью он ни как не управляет

ale_xb
02-09-2010, 11:46
Автору спасибо большое за полезный скрипт!
В продолжение темы - один вопрос и одно предложение:
1.Как бы сделать, чтобы сброс текущей статистики производился не 1-го числа каждого нового месяца, а в некий произвольный день X? К сожалению, моих мизерных знаний в программировании на shell не хватает для решения этой, на первый взгляд, простой задачи. Следует помнить, что если X определен, например, на 31-е число, то сброс статистики для разных месяцев должен происходить либо именно 31-го числа, либо в последний имеющийся день месяца (30, 29 или 28-го числа - в зависимости от месяца и (не)високосного года).
Такой способ работы скрипта требуется, чтобы синхронизировать подсчет статистики с биллингом провайдера, у которого текущий расчетный период начинается именно в день X (день первого подключения к провайдеру).
2.Касательно пропуска подсчета трафика для пиринговых сетей. Как правило, для того, чтобы для них трафик шел по локальной сети провайдера, а не через интернет на роутере уже прописаны соответствующие маршруты в post-boot. В этом случае провайдер не учитывает такой трафик в своем биллинге для вашего эккаунта и скорость доступа к пиринговым ресурсам обычно заметно выше. Предлагаю либо сразу и использовать эти маршруты в работе скрипта end, либо просто вытаскивать их из post-boot в ip_piring.lst автоматически.

KinoMan
02-09-2010, 16:55
1.
Замените кусок скрипта end

read OLDDATE <$DATEFILE
if [ "$DATE" \> "$OLDDATE" ]
на

MDATE=`date +%d-%H-%M`
XDATE="02-19-40"
if [ "$XDATE" == "$MDATE" ]

"02-19-40" - 2 число каждого месяца в 19:40
в XDATE впишите свое значение по минутам кратное 5(если крон запускает скрипт ежеминутно то не обязательно кратное 5).
2.
У всех разные ситуации. У меня, например, в сети провайдера вообще нет как таковой локальной сети. И нет маршрутов кроме default. Весь трафик гуляет через pppoe, включая тот трафик который провайдер не тарифицирует.

aNGEl0
05-09-2010, 10:28
Здравствуйте!
То ли лыжи не едут, то ли..
В новой версии скрипта нашел такой баг(фичу?):
В самой нижней строке TOTAL отображается сумма значений из таблицы TOTAL и сумма значений из ежедневных таблиц, т.е., по сути - удвоенное значение.
И еще вопрос:
Возникла необходимость сброса лимитов не раз в месяц, а ежедневно. Попытался реализовать это так:
вместо

DATE=`date +%Y-%m`
DATEFILE="/opt/Billing/date"
LIMIT="/opt/Billing/limit"

if [ ! -e $DATEFILE ]
then
echo $DATE > $DATEFILE
fi

read OLDDATE <$DATEFILE
if [ "$DATE" \> "$OLDDATE" ]
then
php $WEBDIRECTORY"index.php" > $OLDDATE".html"
rm $USRS
rm $TOTAL
echo $DATE > $DATEFILE
iptables -F MAC_IP
awk '{system("iptables -A MAC_IP -s "$2" -m mac --mac-source "$1" -j RETURN")}' < /etc/ethers
iptables -A MAC_IP -j DROP
fi

добавил:

DATE=`date +%Y-%m`
DATEFILE="/opt/Billing/date"
LIMIT="/opt/Billing/limit"

MYDATE=`date +%Y-%m-%d`
MYDATEFILE="/opt/Billing/mydate"

if [ ! -e $DATEFILE ]
then
echo $DATE > $DATEFILE
fi

read OLDDATE <$DATEFILE
OLDDATE := DATEFILE
if [ "$DATE" \> "$OLDDATE" ]
then
php $WEBDIRECTORY"index.php" > $OLDDATE".html"
rm $USRS
rm $TOTAL
echo $DATE > $DATEFILE
# iptables -F MAC_IP
# awk '{system("iptables -A MAC_IP -s "$2" -m mac --mac-source "$1" -j RETURN")}' < /etc/ethers
# iptables -A MAC_IP -j DROP
fi

#MyDayLimit
if [ ! -e $MYDATEFILE ]
then
echo $MYDATE > $MYDATEFILE
fi

read OLDMYDATE <$MYDATEFILE
if [ "$MYDATE" \> "$OLDMYDATE" ]
then
echo $MYDATE > $MYDATEFILE
iptables -F MAC_IP
awk '{system("iptables -A MAC_IP -s "$2" -m mac --mac-source "$1" -j RETURN")}' < /etc/ethers
iptables -A MAC_IP -j DROP
fi
#EndMyDayLimit
Но с приходом новых суток остаток баланса остается прежним. Надо лезть в php? Или можно реализовать как-то попроще?
Спасибо за уделенное внимание ))

kpifmm
05-09-2010, 11:56
Версия скрипта от 3 сентября 2010г.
Старую версию перенес сюда. (http://wl500g.info/showpost.php?p=187818&postcount=12) Скрипты немного отличаются, поэтому, если у вас была настроена старая версия, то надо удалить все файлы из каталога /opt/Billing/users (при этом статистика сбросится).


а в новом скрипте лишь добавилась подбивка суммарных значений, или еще что-то? поскольку очень не хочется обнулять счетчики до конца месяца....

KinoMan
05-09-2010, 19:52
Здравствуйте!
То ли лыжи не едут, то ли..
В новой версии скрипта нашел такой баг(фичу?):
В самой нижней строке TOTAL отображается сумма значений из таблицы TOTAL и сумма значений из ежедневных таблиц, т.е., по сути - удвоенное значение.

Спасибо. Поправил. Замените свой index.php.

KinoMan
05-09-2010, 20:05
Возникла необходимость сброса лимитов не раз в месяц, а ежедневно.

замените
DATE=`date +%Y-%m`
на
DATE=`date +%Y-%m-%d`
и удалите файл /opt/Billing/date

Тем самым у вас будет ежедневно очищаться статистика и total обнулится.

KinoMan
05-09-2010, 20:34
а в новом скрипте лишь добавилась подбивка суммарных значений, или еще что-то? поскольку очень не хочется обнулять счетчики до конца месяца....

Отображение информации поменялось в основном. Добавил табличку с балансом (не будет отображаться если файл limit пустой).

aNGEl0
06-09-2010, 09:26
замените
DATE=`date +%Y-%m`
на
DATE=`date +%Y-%m-%d`
и удалите файл /opt/Billing/date

Тем самым у вас будет ежедневно очищаться статистика и total обнулится.
Ага, по сути, я так и сделал. Только хотелось бы, все же, хранить статистику месяцами, а не днями, поэтому сделал так. Как быть с нормальным отображением баланса в таком случае?
А в самом нижнем TOTAL отображается сумма из таблицы TOTAL и последнего дня. Все же фича? ))
Пример: http://angel.thruhere.net/statistic/

KinoMan
06-09-2010, 09:37
А в самом нижнем TOTAL отображается сумма из таблицы TOTAL и последнего дня. Все же фича? ))

Ошибка там была. Я исправил уже. Скачайте из первого поста и замените ваш php файл.


Я не понимаю. Зачем, имея безлимитный канал, ставить дневные лимиты по тафику? Настройте лучше nshaper.

aNGEl0
06-09-2010, 16:24
Ошибка там была. Я исправил уже. Скачайте из первого поста и замените ваш php файл.


Я не понимаю. Зачем, имея безлимитный канал, ставить дневные лимиты по тафику? Настройте лучше nshaper.
безлимитный канал надо разделить на нескольких пользователей поровну. и не все из них чисты на руку. Нередки случаи, когда у некоторых и торрент качает на всю катушку, оставляя остальных практически без инета. nshaper, насколько мне известно, с торрентами вряд ли сможет бороться, или я ошибаюсь?
спасибо за исправления ))

KinoMan
06-09-2010, 16:47
aNGEl0 Вы ошибаетесь.

vlas_val
07-09-2010, 09:17
KinoMan А как в новом скрипте прописать имена пользователей? Нельзя ли их прописать в файле ethers?

KinoMan
08-09-2010, 11:42
vlas_val
Обновил файл index.php (http://wl500g.info/attachment.php?attachmentid=7033).
Теперь можете в самом начале файла задавать имена пользователям следующим образом:

<?php
$userName['192.168.1.2'] = "ABCDEF";
$userName['192.168.1.5'] = "Qwerty";
$userName['192.168.1.6'] = "Vasya";
?>

vlas_val
08-09-2010, 13:51
KinoMan Спасибо!

fflyer
12-09-2010, 15:13
Вчера ночью поставил по инструкции из первого сообщния, но у меня почему то в разделе Total только две строчки вместо трех :-( Почему так?

2010-09-11
Vadim 0.00 0.00 0.00
Ivan 0.00 0.00 0.00
Vik 0.00 0.00 0.00
2010-09-12
Vadim 40.86 9.19 50.05
Ivan 0.00 0.00 0.00
Vik 0.39 0.12 0.52
DELTA
Vadim 0.05 0.01 0.06
Ivan 0.00 0.00 0.00
Vik 0.00 0.00 0.00
TOTAL
Vadim 40.86 9.19 50.05
Ivan 0.00 0.00 0.00
TOTAL 40.86 9.19 50.05
Добился появления третьей строчки в TOTAL путем добавления в /usr/local/etc/ethers еще одной строчки MAC - IP (придуманных).
То есть в ethers теперь четыре строки, и в статистике четыре во всех разделах, кроме TOTAL.

KinoMan
13-09-2010, 09:32
Когда задаете пользователей в файле /usr/local/etc/ethers, то после последнего пользователя тоже ставьте перевод строки. Тоже самое касается файла limit.

ale_xb
13-09-2010, 12:49
1.
Замените кусок скрипта end

read OLDDATE <$DATEFILE
if [ "$DATE" \> "$OLDDATE" ]
на

MDATE=`date +%d-%H-%M`
XDATE="02-19-40"
if [ "$XDATE" == "$MDATE" ]

"02-19-40" - 2 число каждого месяца в 19:40
в XDATE впишите свое значение по минутам кратное 5(если крон запускает скрипт ежеминутно то не обязательно кратное 5).
В этом случае, если день Х, например, 31-е число, то сброс статистики не будет производится в месяцы, где число дней меньше - в феврале, июне и т.п. (я об этом писал в своем первом посте).

j00e
13-09-2010, 18:12
Не знаю что и делать. Проблема как у первых пользователей, в консоли статистика растет, а на страничке нет.
привожу файлы:


Chain FORWARD (policy ACCEPT 13450 packets, 1147049 bytes)
pkts bytes target prot opt in out source destination
88420 59267445 ACCEPT udp -- * * 0.0.0.0/0 172.16.0.17 udp dpt:42795
49821 11023828 ACCEPT tcp -- * * 0.0.0.0/0 172.16.0.17 tcp dpt:42795
4916134 4537395287 STAT_IP all -- * * 0.0.0.0/0 0.0.0.0/0
2572652 1687222257 out_traffic all -- br0 * 0.0.0.0/0 0.0.0.0/0
2264829 2774873797 in_traffic all -- * br0 0.0.0.0/0 0.0.0.0/0
2597225 1690631329 MAC_IP all -- * !br0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * tun0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- tun0 * 0.0.0.0/0 0.0.0.0/0
2317455 2846661056 ACCEPT all -- ppp+ * 0.0.0.0/0 0.0.0.0/0
1488 106932 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
34 1817 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
6738 406224 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
2583765 1689486067 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- !br0 ppp0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- !br0 vlan2 0.0.0.0/0 0.0.0.0/0
1 61 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate DNAT
0 0 DROP all -- * br0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- tun+ * 0.0.0.0/0 0.0.0.0/0


/tmp/local/etc/ethers

00:25:d3:f3:xx:xx 172.16.0.17
00:16:ea:91:xx:xx 172.16.0.8
38:e7:d8:15:xx:xx 172.16.0.9

(после последнего энтер)

В файлах везде нули со статистикой напротив ипов. пример:
/opt/Billing/users/2010-09-13

172.16.0.17 0 0 0 0
172.16.0.8 0 0 0 0
172.16.0.9 0 0 0 0


/opt/Billing/total

172.16.0.17 0 0
172.16.0.8 0 0
172.16.0.9 0 0


В файл limit засунул энтер. (через мс)
В файл /tmp/local/sbin/lst/ip_piring.lst засунул энтер (через мс)

Пытался запустить end руками, ошибок не было\реакции тоже. Куда копать?

З.Ы. Нельзя ли добавить автоматическое добавление юзеров? типа если ставить на работе чтобы не надо было руками каждый раз дописывать.

KinoMan
13-09-2010, 18:19
j00e
Вы используете другую подсеть
поменяйте в скрипте end

grep 192.168
на

grep 172.16

fflyer
14-09-2010, 05:29
KinoMan спасибо огромное за скрипт!
Еще вопрос - можно ли внести в список ethers сам роутер? и какой MAC адрес тогда писать? (хочу торрентокачалку поставить на usb-диск, подключенный к роутеру)

Anton89
14-09-2010, 07:32
KinoMan спасибо огромное за скрипт!
Еще вопрос - можно ли внести в список ethers сам роутер? и какой MAC адрес тогда писать? (хочу торрентокачалку поставить на usb-диск, подключенный к роутеру)

Нет. Скрипт сделан для фиксации и подсчета ПРОХОДЯЩЕГО через роутер трафика ... Для подсчета трафика самого роутера нужно фиксировать/считать цепочки INPUT/OUTPUT. Добавить не сложно, но в текущем исполнении скрипта этого нет.

KinoMan
14-09-2010, 07:34
fflyer
На самом роутере интернет будет в любом случае. Ставьте дополнительно что хотите.
Если хотите чтоб считался отдельно тарфик роутера, то добавлю потом.

aNGEl0
14-09-2010, 23:16
Спасибо автору за простую реализацию ))
Пока осваиваю консольный кодинг, появилась идея - а что если по факту блокировки отсылать заблокированному СМС с соответствующим текстом? Или по факту приближения к лимиту? Соответствие СМС-ИП положить куда-нть отдельно. Или, если не сложно, сразу организовать соответствие ИП-Имя_пользователя-НомерТелефона в отдельном файле, чтобы не вносить изменения в php.
Спасибо за внимание :)

gingerino
18-09-2010, 16:56
И снова добрый день!
Роутер отработал c мая без существенных проблем. За что большое спасибо автору!!!
На днях появилось свободное время. В результате полностью обновил на 1825 прошивку и на последнюю версию скрипта. Но как и прошлый раз не могу разобраться с вайвай клиентами.

Суть дела такова: мак адрес клиента (телефон) занесён в /usr/local/etc/ethers с адресом 192,168,0,212 и в статистике он отображается (правда пока с нулями). Роутер работает в большой локалке его адрес 192.168.0.201. DHCP настоен на раздачу адресов от 192,168,0,200 до 192,168,0,255. Если не настроить принудительную выдачу адреса по маку, то клиент зависает в момент подключения. После настройки выдачи через веб интерфейс. В момент подключения клиента клиент говорит, что подключен, а в логе роутера появляется запись:


01:43:05 19-09-2010 (warning|daemon|dnsmasq-dhcp) dnsmasq-dhcp[69]: no address range available for DHCP request via br0
01:43:07 19-09-2010 (warning|daemon|dnsmasq-dhcp) dnsmasq-dhcp[69]: no address range available for DHCP request via br0

и в результате в инет из клиента не выходит...

ale_xb
20-09-2010, 11:13
fflyer
Если хотите чтоб считался отдельно тарфик роутера, то добавлю потом.
Мне тоже кажется полезным подсчет отдельно трафика роутера

KinoMan
20-09-2010, 18:34
gingerino
Блокировка по ip и mac была сделана как написано здесь http://wl500g.info/showthread.php?p=77148#post77148

Нам нужно будет подсунуть свой файл с привязками ip-mac DHCP серверу, роль которого на роутере исполняет dnsmasq. Если ассоциации положить в файл /usr/local/etc/ethers то прошивка автоматически добавит его содержимое к рабочему файлу /etc/ethers при составлении оного основываясь на настройках веб-интерфейса. Поэтому сей список будем вести именно в том файле.
То есть роутер сам должен раздать нужные ip клиентам без настройки через веб интерфейс. (правда сам я это не проверял, dhcp на роутере отключен)

nuivot
21-09-2010, 07:19
Мне тоже кажется полезным подсчет отдельно трафика роутера

Тоже хотелось бы статистику по роутеру в целом, так как у меня суточный лимит трафика. Если бы ещё ктото пояснил чайнику как по достижении определённого количества трафика резать скорость (общую на роутере) до 1-2 килобит в секунду был бы премного благодарен.

aNGEl0
21-09-2010, 10:03
чего-то перестала статистика считаться с 19 сентября: http://angel.thruhere.net/statistic
тут тоже пусто

iptables -nvxL FORWARD
Chain FORWARD (policy ACCEPT 2655 packets, 1626851 bytes)
pkts bytes target prot opt in out source destination

хотя до перезагрузки выводились STAT_IP и MAC_IP дважды, вот так:


iptables -nvxL FORWARD
Chain FORWARD (policy ACCEPT 624965 packets, 498647995 bytes)
pkts bytes target prot opt in out source destination
624965 498647995 STAT_IP all -- * * 0.0.0.0/0 0.0.0.0/0
367706 368483590 MAC_IP all -- * !br0 0.0.0.0/0 0.0.0.0/0
624965 498647995 STAT_IP all -- * * 0.0.0.0/0 0.0.0.0/0
367706 368483590 MAC_IP all -- * !br0 0.0.0.0/0 0.0.0.0/0


Куда копнуть? Можно, конечно, предположить, что юзеры перестали интернетом пользоваться, но, сами понимаете, это маловероятно :))
!fixed
каким-то образом "поломались" прописанные в вебморде разрешенные маки и лизы дхцп-сервера. После удаления и ввода заново все заработало.

nikolay_w
02-10-2010, 22:06
обновил прошивку роутера, установил самбу через http://wl500g.info/showthread.php?t=21889&page=374
все по пунктам сделал как тут написано, как не бился - инета нету,


00:09:34:20:7F:73 192.168.0.97
4C:00:10:51:A1:9C 192.168.0.25
00:1C:BF:C4:91:44 192.168.0.176


после этого закоментарил в /usr/local/sbin/post-firewall строку iptables -A MAC_IP -j DROP
получилось


#!/bin/sh

# port HTTP
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# port for rTorrent
iptables -I INPUT -p tcp -m tcp --dport 51778 -j ACCEPT

#1
iptables -N MAC_IP
iptables -I FORWARD 1 -o ! br0 -j MAC_IP
awk '{system("iptables -A MAC_IP -s "$2" -m mac --mac-source "$1" -j
RETURN")}' < /usr/local/etc/ethers
#iptables -A MAC_IP -j DROP
##
#2
iptables -N STAT_IP
awk '{system("iptables -A STAT_IP -s "$1" -j RETURN");
system("iptables -A STAT_IP -d "$1" -j RETURN") }' <
/usr/local/sbin/lst/ip_piring.lst
awk '{system("iptables -A STAT_IP -s "$2" -j RETURN")
system("iptables -A STAT_IP -d "$2" -j RETURN"); }' <
/usr/local/etc/ethers
iptables -A STAT_IP -j RETURN
iptables -I FORWARD 1 -j STAT_IP
##



инет появился, но статистики так и нету.


iptables -nvxL FORWARD
Chain FORWARD (policy ACCEPT 1722 packets, 148685 bytes)
pkts bytes target prot opt in out source destination
3969 676034 MAC_IP all -- * !br0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
400 19932 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
5383 2455329 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- !br0 ppp0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- !br0 vlan1 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate DNAT
0 0 DROP all -- * br0 0.0.0.0/0 0.0.0.0/0


и статистика не считается. может кто что подскажет?

fflyer
03-10-2010, 21:35
Обращаюсь к пользователям скрипта - у вас его данные совпадают с данными провайдера?
У меня пров - Дом.ру. В личном кабинете можно смотреть статистику (отдельно по интернет-зоне и местной зоне). Зона адресов, трафик с которой не учитывается и доступ до которой 10Мбит/с, нигде прямо не указан, но на сайте прова есть "определитель трафика", ну и на форуме местном поспрашивал - диапазон так называемых "местных" адресов определили. Записал их в пиринг.лист.
Все настроил (в сентябре еще). Роутер DIR-320, прошивка 1.9.2.7-d-r1825. Все работает.
В результате на 3 октября на роутере интернет трафик насчитался 1067,15 Мб, а на сайте дом.ру 1239,54 Мб. Мне это как-то не понравилось, на форуме админы прова молчат как партизаны.
Сегодня решил очистить пиринг.лист и сравнить с общим счетчиком трафика у провайдера. Вышло за три часа не очень активного использования мой трафик (зона пиринга очищена) 127,86 Мб - общий трафик (местная и интернет зоны) на сайте прова 134,02 Мб.
На роутере никаких качалок не запущено, настроен только прием времени с ntp.
Неужели служебный трафик роутера настролько велик???
В общем, прошу подсказки...

tempik
04-10-2010, 08:46
В результате на 3 октября на роутере интернет трафик насчитался 1067,15 Мб, а на сайте дом.ру 1239,54 Мб. Мне это как-то не понравилось, на форуме админы прова молчат как партизаны.
Сегодня решил очистить пиринг.лист и сравнить с общим счетчиком трафика у провайдера. Вышло за три часа не очень активного использования мой трафик (зона пиринга очищена) 127,86 Мб - общий трафик (местная и интернет зоны) на сайте прова 134,02 Мб.
На роутере никаких качалок не запущено, настроен только прием времени с ntp.
Неужели служебный трафик роутера настролько велик???
В общем, прошу подсказки...

Добиться полного соответствия показаний твоего счетчика и провайдерского как правило не удается, ведь он считает все пакеты которые он отправил на клиентский порт, а роутер только те что не отбросил. В принципе если нет постоянного сканирования портов и брутфорса на твой роутер то расхождение не должно быть сильно большим (максимально приближенно будет считать Входящий -цепочка PREROUTIN в таблице mangle, а Исходящий - цепочка POSTROUTIN в таблице mangle). Вообще ИМХО цепочки подсчета трафика лучше всего размещать именно в таблице mangle, преимущества:
1) По уму считать нужно до запрещающих правил.
2) В mangle очень редко добавляются правила другим софтом.

nikolay_w
07-10-2010, 07:34
хочу ответить на свой же пост. как оказалось просто копирование с браузера текста скриптов и вставки в редактор не достаточно. в него закрадываются лишние переносы строк, что и сказывается на неправильной работе. убрал все лишнее и все отлично работает. спасибо автору.

pharaoh2ths
07-10-2010, 14:00
Ребят, не нашел руководство, не подскажите как с 0 в роутер все установить ? У меня wl500g v2, я так понял что нужно на флэшку все ставить, поделитесь ссылкой если не трудно, заранее спасибо.

pharaoh2ths
13-10-2010, 07:30
Глупый вопрос, я самовар, у меня стоит lighttpd, т.к. я ставил vnstat, параллельно я могу поставить этот скрипт ? отображаться он у меня будет по какому адресу ? или lighttpd отображает только 1 адрес по которому настроен ?

fflyer
15-10-2010, 21:51
Мда, посчитал я тут трафик с 3го октября. Весь трафик, зона пиринга чистая. Разница за 12 дней составила 21931,68(провайдер) - 19680,25(статистика роутера) = 2251,43 Мб.. 10% разница! Жесть.

KinoMan
25-11-2010, 23:01
Обновил скрипт.
Теперь считает как весь трафик проходящий через роутер, так и внешний трафик самого роутера.
Отдельно считается интернет трафик(World) и пиринговый(City) трафик.

partner
26-11-2010, 11:36
Обновил скрипт.
Теперь считает как весь трафик проходящий через роутер, так и внешний трафик самого роутера.
Отдельно считается интернет трафик(World) и пиринговый(City) трафик.

откуда скачать обновленный скрипт?

KinoMan
26-11-2010, 12:12
В первом посте прикреплен файл.
Всю настройку надо произвести заново (настройки от старой версии работать не будут). Всё описание настройки также в первом посте этой темы.

akm2008
27-11-2010, 02:09
Во первых спасибо за Ваше создание :)

Установил все по инструкции минут 20 работало как часы !!!
Потом все сошло с ума :)
http://upload.akusherstvo.ru/thumbs/309375.jpg (http://upload.akusherstvo.ru/image309375.jpg)

А еще через 10 минут вижу только это

http://upload.akusherstvo.ru/thumbs/309376.jpg (http://upload.akusherstvo.ru/image309376.jpg)

Помогите разобраться !!! Два раза переустанавливал один и тот-же результат !!После перезагрузки работает минут 15-20 и все !!!
Поставил старую версию такая-же свистопляска !!! HELP !!!

KinoMan
27-11-2010, 08:53
akm2008
Выкладывайте содержимое файлов в каталогах:
/opt/etc/billing/city
/opt/etc/billing/world
/opt/etc/billing/router

ошибки выполнения команды /opt/etc/cron.5mins/billing

и результат выполнения команды iptables -nvxL -t mangle

(желательно прикрепленным файлом) будем смотреть

vlas_val
27-11-2010, 09:04
А у меня отрицательный трафик Router а

KinoMan
27-11-2010, 09:25
тоже выкладывайте, будем смотреть

у меня нормально работает третий день пошел.
прошлая версия отработала 3 месяца без глюков

partner
27-11-2010, 10:09
KinoMan подскажите плз. У меня следующая проблема: на работе есть ADSL-канал 2 Мб/сек и восемь пользователей. Раньше когда было только два юзера - шеф и бухгалтерша, у шефа все было Ок. Затем понадобилось интернет раздать всему офису, в итоге - офис стал как обычно использовать инет в основном не по рабочему назначению :), у шефа упала скорость, он в бешенстве и т.д. :(
Прочитав данный топик, я хочу попробовать пока тестово поставить в офисе свой резервный dir320, на нем мне нужно только статистика по пользователям, шейпер с возможностью назначения приоритетов и скоростных лимитов, да и вроде все. На свой домашний 500gPv.2 я поставил скрип "Установка программ для чайника" у меня дома таких задач нету. А вот что и как, в какой последовательности делать с офисным роутером под мою задачу я не знаю. Подскажите пожалуйста какую прошивку использовать, порядок установки программ. Лишнего ничего на роутер ставить не надо. Заранее спасибо.

KinoMan
27-11-2010, 22:12
обновил в первом посте файлы
замени файл billing
и удали файлы из каталогов
/opt/etc/billing/city
/opt/etc/billing/world
/opt/etc/billing/router

KinoMan
27-11-2010, 22:13
index.php тоже можешь поменять, немного цвета изменил для лучшего визуального восприятия )

KinoMan
27-11-2010, 23:22
фильм роутером качали?
цепочки iptables у вас нормальные
а файлы со статистикой сохраняются какие-то битые....

вручную запустите
/opt/etc/cron.5mins/billing
выдает какие-то ошибки?

KinoMan
27-11-2010, 23:55
Вот такие дела выдает ошибка в 126 строчке как я понял ???


[root@akm2008 root]$ /opt/etc/cron.5mins/billing
/opt/etc/cron.5mins/billing: let: line 126: syntax error: rco += r_city_output
[root@akm2008 root]$


это исправил.

не знаю почему у вас после перезагрузки статистика слетает... и файлы становятся битыми

MRit
28-11-2010, 10:45
Доброго времени дня.

Обустраиваем свой офис- есть мысль использовать маршрутизатор, чтобы не тратиться на отдельный компьютер (только начинаем самостоятельно работать, с деньгами жестко).

Подскажите- сможет ли asus wl500gp с прошивкой энтузиастов решить следующие задачи( если можно - развёрнуто)

1) Учёт трафика по ip(или мак)-адресам за месяц, и просмотр логов.
2) Индивидуальные приоритеты по ip (мак)
3) Разделение доступа по wifi и проводной сети. Имеется ввиду ситуация, когда человек подсоединяющийся по wifi может выйти в интернет, но не имеет доступа к ресурсам проводной сети.
4) Или более сложный случай – когда разные LAN(eternet) порты маршрутизатора смогут снабжать Интернетом различные непересекающиеся сегменты локальной сети.
5) Почтовый сервер.

Заранее спасибо.


Это фантастика. Под ваши задачи решение будет стоить несколько килоевро

KinoMan
28-11-2010, 15:23
Доброго времени дня.

Обустраиваем свой офис- есть мысль использовать маршрутизатор, чтобы не тратиться на отдельный компьютер (только начинаем самостоятельно работать, с деньгами жестко).

Подскажите- сможет ли asus wl500gp с прошивкой энтузиастов решить следующие задачи( если можно - развёрнуто)

1) Учёт трафика по ip(или мак)-адресам за месяц, и просмотр логов.
2) Индивидуальные приоритеты по ip (мак)
3) Разделение доступа по wifi и проводной сети. Имеется ввиду ситуация, когда человек подсоединяющийся по wifi может выйти в интернет, но не имеет доступа к ресурсам проводной сети.
4) Или более сложный случай – когда разные LAN(eternet) порты маршрутизатора смогут снабжать Интернетом различные непересекающиеся сегменты локальной сети.
5) Почтовый сервер.

Заранее спасибо.

1, 3, 4 - роутер справится.
2 - смотрите nshaper. С трафиком не более 20-25 мегабит у меня справляется.

5 - не знаю

KinoMan
28-11-2010, 15:24
А у меня отрицательный трафик Router а

исправил. было переполнение.

n70
28-11-2010, 16:39
у меня в статистике TOTAL:
Input City(MB) Output City(MB) Input+Output City(MB) по нулям, что это может быть?

KinoMan
28-11-2010, 17:09
у меня в статистике TOTAL:
Input City(MB) Output City(MB) Input+Output City(MB) по нулям, что это может быть?
Это баг. Исправил. Перекачайте index.php из первого поста.

KinoMan
30-11-2010, 11:56
Исправил баг с неправильной статистикой роутера при смене месяца.
перекачайте файл billing

KinoMan
01-12-2010, 02:30
Посмотрите что в файлах со статистикой. Может там такая белеберда осталась от прошлых запусков?
удалите их

rm /opt/etc/billing/city/*
rm /opt/etc/billing/world/*
rm /opt/etc/billing/router/*

KinoMan
01-12-2010, 13:21
akm2008
я не знаю чем вам помочь. попробуйте настроить на другом жестком диске или флешке ради эксперемента.
Из личного опыта: У меня есть флешка (с роутером я ее не испльзую). Вот на эту флешку почему-то файлы не большего размера (как правильно текстовые) часто записываются битые. При этом с крупными файлами такой проблемы я не замечал.
Может у вас похожий случай или диск начинает сыпаться. Других предположений у меня нет.

akm2008
01-12-2010, 17:16
akm2008
я не знаю чем вам помочь. попробуйте настроить на другом жестком диске или флешке ради эксперемента.
Из личного опыта: У меня есть флешка (с роутером я ее не испльзую). Вот на эту флешку почему-то файлы не большего размера (как правильно текстовые) часто записываются битые. При этом с крупными файлами такой проблемы я не замечал.
Может у вас похожий случай или диск начинает сыпаться. Других предположений у меня нет.

Ну вот наконец то проблема решилась :) Похоже скрипт некорректно на работает linux 2.6.x.x или проблема в прошивках 1.9.2.7-rtn !!! переполошившись на 2.4 прошивку 1.9.2.7-rtn-rxxxx подняв все необходимые сервисы скрипт начал работать как часики :D


АВТОРУ ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ !!!

http://upload.akusherstvo.ru/thumbs/310897.jpg (http://upload.akusherstvo.ru/image310897.jpg)

Iguana
01-12-2010, 18:23
Ну вот наконец то проблема решилась :) Похоже скрипт некорректно на работает linux 2.6.x.x или проблема в прошивках 1.9.2.7-rtn !!! переполошившись на 2.4 прошивку с 1.9.2.7-rtn-rxxxx подняв все необходимые сервисы скрипт начал работать как часики :D

Что-то "сломалось" в rt-n ветке :( Если заглянете в тему QoS - там тоже проблемы с 2.6 ядром, вернее с разделением трафа по полосам... Но на сборке rt-n-r2274 более/менее работает, так что, кому интересно запустить эту статистику на ядре 2.6 - понижайте версию до 1.9.2.7-rtn-r2274 :rolleyes:

akm2008
01-12-2010, 20:25
Что-то "сломалось" в rt-n ветке :( Если заглянете в тему QoS - там тоже проблемы с 2.6 ядром, вернее с разделением трафа по полосам... Но на сборке rt-n-r2274 более/менее работает, так что, кому интересно запустить эту статистику на ядре 2.6 - понижайте версию до 1.9.2.7-rtn-r2274 :rolleyes:

Как поздно откликнулся :D Я трое суток н спал все голову ломал :eek:

Iguana
02-12-2010, 12:22
Как поздно откликнулся :D Я трое суток н спал все голову ломал :eek:
Так я сам вчера весь день rt-n-овские сборки переливал с полным сбросом и восстановлением настроек, в ручную, после каждой заливки другой сборки...

partner
02-12-2010, 15:12
Так я сам вчера весь день rt-n-овские сборки переливал с полным сбросом и восстановлением настроек, в ручную, после каждой заливки другой сборки...

Подскажите как очистить роутер от всякого прежнего "мусора", нужно поставить заново с полным сбросом всех прежних настроек. Мне нужен роутер с установленным nShaper-ом и статистикой по трафику, ничего лишнего. Опишите порядок действий пожалуйста. В наличии DIR-320.

Iguana
02-12-2010, 16:58
Подскажите как очистить роутер от всякого прежнего "мусора", нужно поставить заново с полным сбросом всех прежних настроек. Мне нужен роутер с установленным nShaper-ом и статистикой по трафику, ничего лишнего. Опишите порядок действий пожалуйста. В наличии DIR-320.
Загружаете сборку от Vampik (по ссылке из моей подписи), делаете сброс в заводские установки (выбирая - сбросить всё), обязательно выпоняете Quick Setup, востанавливаете, если нужно МАС адреса. Далее, если нужен только nShaper, копируете его в sbin и запускаете из post-firewall с комманодй restart (nshaper restart).
Если нужна ещё статистика по IP и МАС - выпоняете действия описанные в этой теме ;)

partner
03-12-2010, 14:47
Спасибо Iguana! Завтра с утра попробую. :)

featZima
06-12-2010, 19:50
Подскажите какой-нибудь анализатор трафика для RT-N16-1.9.2.7-rtn-r2274.trx. Netflowd -- устанавливается, но работает не так как надо...

n70
07-12-2010, 14:32
еще одна ошибочка в скрипте?:
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 6, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 7, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 8, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 9, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 10, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: read /etc/ethers - 7 addresses
Jan 1 06:00:05 dhcp client: deconfig: lease is lost
Jan 1 06:00:05 dnsmasq[78]: read /etc/hosts - 7 addresses
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 6, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 7, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 8, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 9, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 10, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: read /etc/ethers - 7 addresses

происходит во время перезагрузке роутера, если файл /usr/local/etc/ethers переименовать то этих сообщений не наблюдается.
То есть происходит конфликт с dnsmasq?

KinoMan
07-12-2010, 16:51
n70
вам же пишут - повторяющийся ip адрес

файл /usr/local/etc/ethers при загрузке добавляется в конец рабочего файла DHCP сервера /etc/ethers

akm2008
07-12-2010, 20:36
еще одна ошибочка в скрипте?:
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 6, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 7, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 8, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 9, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 10, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: read /etc/ethers - 7 addresses
Jan 1 06:00:05 dhcp client: deconfig: lease is lost
Jan 1 06:00:05 dnsmasq[78]: read /etc/hosts - 7 addresses
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 6, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 7, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 8, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 9, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: ignoring /etc/ethers line 10, duplicate name or IP address
Jan 1 06:00:05 dnsmasq-dhcp[78]: read /etc/ethers - 7 addresses

происходит во время перезагрузке роутера, если файл /usr/local/etc/ethers переименовать то этих сообщений не наблюдается.
То есть происходит конфликт с dnsmasq?

Отключите в веб-интерфейсе IP Config - DHCP Server --- Manually Assigned IP List ---- Enable Manual Assignment постав те NO и будет Вам счастье а ip прошите в файле /usr/local/etc/ethers

Boris2777
17-12-2010, 21:35
Есть роутер asus 500gp v1, прошивка от энтузиастов, и не платящий брат за инет. Хочется сделать ему рандомное перенаправление на определенную страницу на локальном серваке, чтобы он задумался о своем поведении.. Как можно сделать?

Iguana
18-12-2010, 21:50
Есть роутер asus 500gp v1, прошивка от энтузиастов, и не платящий брат за инет. Хочется сделать ему рандомное перенаправление на определенную страницу на локальном серваке, чтобы он задумался о своем поведении.. Как можно сделать?
Легко ;) тыць (http://asfs.git.sourceforge.net/git/gitweb.cgi?p=asfs/asfs;a=blob;f=shell/adsl_qos;h=a1a00a521aef8ae3b27df13c325283bbc1f4bb8 e;hb=31ff1ed3d8054fd1ebee295442b77a48268313ad) IMQ есть ;)

featZima
18-12-2010, 22:11
Есть роутер asus 500gp v1, прошивка от энтузиастов, и не платящий брат за инет. Хочется сделать ему рандомное перенаправление на определенную страницу на локальном серваке, чтобы он задумался о своем поведении.. Как можно сделать?

Поговорить с ним...

Iguana
25-12-2010, 22:31
Есть роутер asus 500gp v1, прошивка от энтузиастов, и не платящий брат за инет. Хочется сделать ему рандомное перенаправление на определенную страницу на локальном серваке, чтобы он задумался о своем поведении.. Как можно сделать?

Легко ;) тыць (http://asfs.git.sourceforge.net/git/gitweb.cgi?p=asfs/asfs;a=blob;f=shell/adsl_qos;h=a1a00a521aef8ae3b27df13c325283bbc1f4bb8 e;hb=31ff1ed3d8054fd1ebee295442b77a48268313ad) IMQ есть ;)

И это на DIR-320 работает?
Работает, ну, может, что-то подправить/удалить прийдётся ;)

vlas_val
26-12-2010, 10:39
Работает, ну, может, что-то подправить/удалить прийдётся ;)

Не могли бы Вы выложить готовое реально работающее решение для ADSL

Iguana
26-12-2010, 20:28
Не могли бы Вы выложить готовое реально работающее решение для ADSL
К сожалению, пока, не могу :confused: Я его просматривал, но на рутер не устанавливал... Он написан на shell и при незначительных (а может и не надо будет) правках заработает...
Тут вот не хватает времени с nShaper-om "опыты" завершить, а браться за полностью др. скрипт и пилить его под рутер - совсем нет времени...
Закончу (надеюсь за праздникик успеть) с nShaper-om и шейпером в -rtn ветке - тогда буду смотреть этот скрипт, но думаю (при осуществлении моих задумок) это будет лишнее :rolleyes:

ConstAntz
22-01-2011, 17:13
KinoMan, есть подозрение что днс запросы клиентов идут мимо копилки клиентов и накручиваю счетчик роутера.
Отсюда вопрос, как заставить dnsmasq (или еще кого нить, кроме dhcpd) выдавать клиенту адреса днс-серверов?

KinoMan
22-01-2011, 18:23
KinoMan, есть подозрение что днс запросы клиентов идут мимо копилки клиентов и накручиваю счетчик роутера.
Ну правильно. Так и есть. Роутер сам делает запросы к dns серверам провайдера - это трафик роутера.
Клиенты делают запросы к роутеру в локальной сети роутера - этот трафик мы не считаем.
Если у вас такой большой трафик днс запросов, что его надо считать для клиентов, то и пропишите на компах днс сервера провайдера, гугла, опенднса или еще кого...

lsd_wiz
24-01-2011, 16:09
для того чтоб роутер считал весь трафик от клиентов нада в строчках:


iptables -A FORWARD -p tcp -m mac --mac-source "$1" -i br0 -s "$2"/32 -d 0.0.0.0/0 -j ACCEPT
iptables -A FORWARD -p tcp -i vlan2 -d "$2" -j ACCEPT"

убрать -p tcp, тогда скрипт начинает считать весь трафик проходящий через правило FORWARD. icmp,udp,tcp,igmp и тп.

KinoMan
24-01-2011, 18:11
убрать -p tcp
не нашел такого. да и не было там этого никогда.

lsd_wiz
24-01-2011, 19:30
не нашел такого. да и не было там этого никогда.
Быть то было. так как за основу взят скрипт написанный мною года полтора назад.
Тока я не пойму по чему ты считаетаешь трафик в таблице mаngle?

KinoMan
24-01-2011, 20:26
Тока я не пойму по чему ты считаетаешь трафик в таблице mаngle?

mаngle взял т.к. туда реже добавляются правила другими программами/пользователями. Еще mangle не перестраивается заново при обрыве соединения - т.е. мы не потеряем статистику за 5 минут.

Первоначально считал цепочкой filter, но потом прислушался к этому совету http://wl500g.info/showthread.php?p=212330#post212330

lsd_wiz
25-01-2011, 04:30
1) По уму считать нужно до запрещающих правил.
2) В mangle очень редко добавляются правила другим софтом.
Ну смотри смысл считать то то не пройдет, во вторых можно filter считает только то что пролетело к юзеру и от юзера, в третих в чтоб не потерять данные можно кидать даные в log файл хоть каждые 5 сек а уже от туда считать раз в 5 мин.

tempik
25-01-2011, 19:17
Ну смотри смысл считать то то не пройдет, во вторых можно filter считает только то что пролетело к юзеру и от юзера
Провайдер считает то что дошло до тебя и это придется оплатить ... ИМХО считать нужно, то что придется оплатить ...

lsd_wiz
25-01-2011, 20:11
Провайдер считает то что дошло до тебя и это придется оплатить ... ИМХО считать нужно, то что придется оплатить ...
Идею понял, биллинг который не даст уйти админу в минус.. :D
ЗЫ в расчёте сибестоймоти 1mb нужно всегда накидывать 5-10% на возможные потери.

DarthSemafor
05-02-2011, 19:00
Скажите пожалуйста, что в вашей последней версии скрипта нужно изменить, чтобы он считал трафик только с ppp0? Система debian с 2 интерфейсами eth1 - внешняя сеть, eth0 - внутренняя , с маской /16, ppp0 - соединение с интернет. На роутере стоит прокси. Изменил пути в скриптах под свой случай, но при запуске index.php везде одни нули :(

KinoMan
06-02-2011, 12:40
Скажите пожалуйста, что в вашей последней версии скрипта нужно изменить, чтобы он считал трафик только с ppp0? Система debian с 2 интерфейсами eth1 - внешняя сеть, eth0 - внутренняя , с маской /16, ppp0 - соединение с интернет. На роутере стоит прокси. Изменил пути в скриптах под свой случай, но при запуске index.php везде одни нули :(

уберите в файле makestat строчки, в которых встречается vlan1.
И запускайте скрипты из под рута. Всё должно работать.

DarthSemafor
06-02-2011, 17:18
уберите в файле makestat строчки, в которых встречается vlan1.
И запускайте скрипты из под рута. Всё должно работать.
Спасибо, что откликнулись!:) Изначально так и сделал, но, кажется что-то не то с фильтром:

Chain PREROUTING (policy ACCEPT 23071831 packets, 4954571400 bytes)
pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 23062388 packets, 4954033965 bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 36359981 packets, 46940062384 bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 36359920 packets, 46940044235 bytes)
pkts bytes target prot opt in out source destination

Chain city (0 references)
pkts bytes target prot opt in out source destination

Chain r_city_input (0 references)
pkts bytes target prot opt in out source destination

Chain r_city_output (0 references)
pkts bytes target prot opt in out source destination

Chain r_selector_input (0 references)
pkts bytes target prot opt in out source destination

Chain r_selector_output (0 references)
pkts bytes target prot opt in out source destination

Chain r_world_input (0 references)
pkts bytes target prot opt in out source destination

Chain r_world_output (0 references)
pkts bytes target prot opt in out source destination

Chain selector (0 references)
pkts bytes target prot opt in out source destination

Chain world (0 references)
pkts bytes target prot opt in out source destination
Все так и должно быть?

KinoMan
06-02-2011, 18:22
нет
Посмотрите файл makestat
там в нем указаны пути
/usr/local/etc/ethers - mac и ip пользователей
/usr/local/sbin/lst/ip_piring.lst - пиринговые подсети

поменяйте эти пути на свои

DarthSemafor
06-02-2011, 20:33
нет
Посмотрите файл makestat
там в нем указаны пути
/usr/local/etc/ethers - mac и ip пользователей
/usr/local/sbin/lst/ip_piring.lst - пиринговые подсети

поменяйте эти пути на свои
Уже лучше - перезапустил makestat и появились ип клиентов, но все равно одни нули:

iptables -t mangle -nvxL
Chain PREROUTING (policy ACCEPT 7054 packets, 474395 bytes)
pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 7053 packets, 474363 bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 12774 packets, 17594080 bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 12774 packets, 17594080 bytes)
pkts bytes target prot opt in out source destination

Chain city (0 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 0.0.0.0/0 192.168.1.2
0 0 RETURN all -- * * 192.168.1.2 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 192.168.2.2
0 0 RETURN all -- * * 192.168.2.2 0.0.0.0/0

Chain r_city_input (0 references)
pkts bytes target prot opt in out source destination

Chain r_city_output (0 references)
pkts bytes target prot opt in out source destination

Chain r_selector_input (0 references)
pkts bytes target prot opt in out source destination
0 0 r_world_input all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

Chain r_selector_output (0 references)
pkts bytes target prot opt in out source destination
0 0 r_world_output all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

Chain r_world_input (1 references)
pkts bytes target prot opt in out source destination

Chain r_world_output (1 references)
pkts bytes target prot opt in out source destination

Chain selector (0 references)
pkts bytes target prot opt in out source destination
0 0 world all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

Chain world (1 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 0.0.0.0/0 192.168.1.2
0 0 RETURN all -- * * 192.168.1.2 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 192.168.2.2
0 0 RETURN all -- * * 192.168.2.2 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

KinoMan
06-02-2011, 21:08
уберите из срипта условия и запустите без них
должны будут сработать все правила


iptables -t mangle -N city
iptables -t mangle -N world
iptables -t mangle -N selector


iptables -t mangle -I FORWARD -i ppp0 -j selector
iptables -t mangle -I FORWARD -o ppp0 -j selector


cat /путь_к_списку пользователей | while read MAC IP
do
iptables -t mangle -A city -d $IP -j RETURN
iptables -t mangle -A city -s $IP -j RETURN
iptables -t mangle -A world -d $IP -j RETURN
iptables -t mangle -A world -s $IP -j RETURN
done

iptables -t mangle -A city -j RETURN
iptables -t mangle -A world -j RETURN

cat /путь_к_пиринговым_подсетям | while read PIR
do
iptables -t mangle -A selector -d $PIR -j city
iptables -t mangle -A selector -d $PIR -j RETURN
iptables -t mangle -A selector -s $PIR -j city
iptables -t mangle -A selector -s $PIR -j RETURN
done

iptables -t mangle -A selector -j world
iptables -t mangle -A selector -j RETURN


iptables -t mangle -N r_city_input
iptables -t mangle -N r_city_output
iptables -t mangle -N r_world_input
iptables -t mangle -N r_world_output

iptables -t mangle -N r_selector_input
iptables -t mangle -N r_selector_output

iptables -t mangle -I r_city_input
iptables -t mangle -I r_city_output
iptables -t mangle -I r_world_input
iptables -t mangle -I r_world_output


iptables -t mangle -I INPUT -i ppp0 -j r_selector_input

iptables -t mangle -I OUTPUT -o ppp0 -j r_selector_output

cat /путь_к_пиринговым_подсетям | while read PIR
do
iptables -t mangle -A r_selector_output -d $PIR -j r_city_output
iptables -t mangle -A r_selector_output -d $PIR -j RETURN
iptables -t mangle -A r_selector_input -s $PIR -j r_city_input
iptables -t mangle -A r_selector_input -s $PIR -j RETURN
done

iptables -t mangle -A r_selector_output -j r_world_output
iptables -t mangle -A r_selector_output -j RETURN
iptables -t mangle -A r_selector_input -j r_world_input
iptables -t mangle -A r_selector_input -j RETURN

DarthSemafor
06-02-2011, 21:40
уберите из срипта условия и запустите без них
должны будут сработать все правила


iptables -t mangle -N city
iptables -t mangle -N world
iptables -t mangle -N selector


iptables -t mangle -I FORWARD -i ppp0 -j selector
iptables -t mangle -I FORWARD -o ppp0 -j selector


cat /путь_к_списку пользователей | while read MAC IP
do
iptables -t mangle -A city -d $IP -j RETURN
iptables -t mangle -A city -s $IP -j RETURN
iptables -t mangle -A world -d $IP -j RETURN
iptables -t mangle -A world -s $IP -j RETURN
done

iptables -t mangle -A city -j RETURN
iptables -t mangle -A world -j RETURN

cat /путь_к_пиринговым_подсетям | while read PIR
do
iptables -t mangle -A selector -d $PIR -j city
iptables -t mangle -A selector -d $PIR -j RETURN
iptables -t mangle -A selector -s $PIR -j city
iptables -t mangle -A selector -s $PIR -j RETURN
done

iptables -t mangle -A selector -j world
iptables -t mangle -A selector -j RETURN


iptables -t mangle -N r_city_input
iptables -t mangle -N r_city_output
iptables -t mangle -N r_world_input
iptables -t mangle -N r_world_output

iptables -t mangle -N r_selector_input
iptables -t mangle -N r_selector_output

iptables -t mangle -I r_city_input
iptables -t mangle -I r_city_output
iptables -t mangle -I r_world_input
iptables -t mangle -I r_world_output


iptables -t mangle -I INPUT -i ppp0 -j r_selector_input

iptables -t mangle -I OUTPUT -o ppp0 -j r_selector_output

cat /путь_к_пиринговым_подсетям | while read PIR
do
iptables -t mangle -A r_selector_output -d $PIR -j r_city_output
iptables -t mangle -A r_selector_output -d $PIR -j RETURN
iptables -t mangle -A r_selector_input -s $PIR -j r_city_input
iptables -t mangle -A r_selector_input -s $PIR -j RETURN
done

iptables -t mangle -A r_selector_output -j r_world_output
iptables -t mangle -A r_selector_output -j RETURN
iptables -t mangle -A r_selector_input -j r_world_input
iptables -t mangle -A r_selector_input -j RETURN

Спасибо! Роутерный трафик начал считаться, а по клиентам - нет. Вывод нетфильтра:

iptables -nvxL -t mangle
Chain PREROUTING (policy ACCEPT 62955 packets, 39098074 bytes)
pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 22489 packets, 2622311 bytes)
pkts bytes target prot opt in out source destination
37459 1759943 r_selector_input all -- ppp0 * 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT 40466 packets, 36475763 bytes)
pkts bytes target prot opt in out source destination
0 0 selector all -- * ppp0 0.0.0.0/0 0.0.0.0/0
0 0 selector all -- ppp0 * 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 40067 packets, 56980073 bytes)
pkts bytes target prot opt in out source destination
63379 85002157 r_selector_output all -- * ppp0 0.0.0.0/0 0.0.0.0/0

Chain POSTROUTING (policy ACCEPT 80533 packets, 93455836 bytes)
pkts bytes target prot opt in out source destination

Chain city (0 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 0.0.0.0/0 192.168.1.2
0 0 RETURN all -- * * 192.168.1.2 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 192.168.2.2
0 0 RETURN all -- * * 192.168.2.2 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

DarthSemafor
06-02-2011, 21:59
После того, как изменил
iptables -t mangle -I FORWARD -i ppp0 -j selector
iptables -t mangle -I FORWARD -o ppp0 -j selector на
iptables -t mangle -I INPUT -i eth0 -j selector
iptables -t mangle -I OUTPUT -o eth0 -j selector
учет по клиентам заработал. Учитывая, что eth0 - интерфейс внутренней локальной сети, могу предположить, что также будет учитываться весь внутрисетевой трафик. Или я не прав?

KinoMan
07-02-2011, 17:00
INPUT и OUTPUT - трафик самого роутера
FORWARD - трафик проходящий через роутер как через шлюз.

Так-как у вас стоит прокси на роутере, то весь трафик прокси - это трафик самого роутера (т.е. в FORWARD он не попадет, что логично).
Настройте раздачу инета через нат и все будет работать и считаться нормально.


После того, как изменил
iptables -t mangle -I FORWARD -i ppp0 -j selector
iptables -t mangle -I FORWARD -o ppp0 -j selector на
iptables -t mangle -I INPUT -i eth0 -j selector
iptables -t mangle -I OUTPUT -o eth0 -j selector
учет по клиентам заработал. Учитывая, что eth0 - интерфейс внутренней локальной сети, могу предположить, что также будет учитываться весь внутрисетевой трафик. Или я не прав?

теперь вы считаете внутренний трафик. трафик интервейса eth0. То есть если на роутере есть всякие фтп, самба и т.д., то этот внутренний трафик вы тоже посчитаете.

DarthSemafor
07-02-2011, 20:43
Большущее спасибо Вам, теперь все работает:) У меня только мааленький вопрос - что делают условия, которые пришлось удалить?

fflyer
08-02-2011, 17:10
Привет всем! Перепрошил роутер, поставил новую версию учета статистики, все настроил. Пользуемся активно, через роутер ходят два ноутбука, компьютер, телефон с Wi-Fi, читалка с Wi-Fi. Подключаеся по PPPoE. Но, блин, за 3 дня разница между общим входящим трафиком, сосчитанным на роутере (15532,48МБ) и по информации провайдера (16647,21МБ) составил 1114,73 мегабайт.

KinoMan
08-02-2011, 17:14
Большущее спасибо Вам, теперь все работает:) У меня только мааленький вопрос - что делают условия, которые пришлось удалить?
Я их ставил для того, чтобы при повторном запуске скриптов, создающих цепочки в iptables, эти самые цепочки не создавались по 2 раза.

KinoMan
08-02-2011, 17:36
Привет всем! Перепрошил роутер, поставил новую версию учета статистики, все настроил. Пользуемся активно, через роутер ходят два ноутбука, компьютер, телефон с Wi-Fi, читалка с Wi-Fi. Подключаеся по PPPoE. Но, блин, за 3 дня разница между общим входящим трафиком, сосчитанным на роутере (15532,48МБ) и по информации провайдера (16647,21МБ) составил 1114,73 мегабайт.

Я знаю в чем может быть причина. Допилю в следующей версии.

fflyer
09-02-2011, 19:32
KinoMan буду очень признателен! а то так получается никакого смысла нет заниматься учет трафика - слишком большие отклонения получаются :-(

KinoMan
23-02-2011, 10:04
KinoMan буду очень признателен! а то так получается никакого смысла нет заниматься учет трафика - слишком большие отклонения получаются :-(

Выложил новую версию.
Убрал все округления при подсчете.
Но все равно данные отличаются от данных провайдера. Полного соответствия получить не удастся.

vlas_val
23-02-2011, 10:26
Выложил новую версию.
Убрал все округления при подсчете.
Но все равно данные отличаются от данных провайдера. Полного соответствия получить не удастся.

Имена пользователей прописывать в файле FileExtractor.php ?

KinoMan
23-02-2011, 10:39
vlas_val
да

partner
23-02-2011, 13:12
vlas_val
да

а можно ли доработать чтобы имена пользователей вписывать в ethers

в этот файл (/usr/local/etc/ethers) вписываем MAC и IP адреса пользователей для которых хотим открыть доступ к интернету и считать статистику

Пример:

Код:
00:00:1c:1c:1a:00 192.168.1.2 vasya
00:00:11:11:11:00 192.168.1.11 petya
00:00:1a:1a:1a:00 192.168.1.15 sasha

KinoMan
23-02-2011, 20:08
ethers используется еще для других целей.
не нужно туда ничего вносить кроме мака и ip.

Соответствие между ip и именами можете задать в файле FileExtractor.php в конструкторе класса.

tempik
24-02-2011, 19:47
ethers используется еще для других целей.
не нужно туда ничего вносить кроме мака и ip.

Соответствие между ip и именами можете задать в файле FileExtractor.php в конструкторе класса.
+1
Не надо плодить ошибок ... Вспомните основной принцип построение баз данных (информация должна разделятся и затем объединяется запросами по связям ... Давайте добавим файл "юзвери" :) с соответствием "ИП" или "Адреса" имени ... и "волков обломали и овцы в пролете" ("правая копия" не помню чья)

Timuchin
26-02-2011, 07:33
Господа знающие, у меня вопрос: с часу до двух ночи мой роутер чтото качает на 4 гига и отдает чтото...
специально проверял, отключены все компы, отключен торрент...словом официально в инет ломиться нечему.
кто это меня тут пользует?

как это узнать ? как посмотреть логи ....подскажите пожалуйста.
в линуксе нуб. вообще нуб...

ну или ткните мордой в ссылку пожалуйста...

вайфай запоролен и зашифрован

Господа знающие, у меня вопрос: с часу до двух ночи мой роутер чтото качает на 4 гига и отдает чтото...
это отображается в VNSTAT для Internet (ppp0)
специально проверял, отключены все компы, отключен торрент...словом официально в инет ломиться нечему.
кто это меня тут пользует?
вайфай запоролен и зашифрован

как это узнать ? как посмотреть логи ....подскажите пожалуйста.
в линуксе нуб. вообще нуб...

ну или ткните мордой в ссылку пожалуйста...

вот что в логах если зайти на вебморду роутера

00:34:37 27-02-2011 (emerg|user|client) client: Synchronizing time with time.nist.gov ...
01:30:49 27-02-2011 (info|daemon|pppd) pppd[106]: LCP terminated by peer
01:30:49 27-02-2011 (info|daemon|pppd) pppd[106]: Connect time 1440.0 minutes.
01:30:49 27-02-2011 (info|daemon|pppd) pppd[106]: Sent 608299657 bytes, received 833091509 bytes.
01:30:50 27-02-2011 (emerg|user|PPPoE) PPPoE: Disconnected
01:30:50 27-02-2011 (info|daemon|dnsmasq) dnsmasq[75]: read /etc/hosts - 2 addresses
01:30:50 27-02-2011 (info|daemon|dnsmasq) dnsmasq[75]: using nameserver 217.23.176.1#53
01:30:50 27-02-2011 (info|daemon|dnsmasq) dnsmasq[75]: using nameserver 89.232.109.74#53
01:30:52 27-02-2011 (notice|daemon|pppd) pppd[106]: Connection terminated.
01:30:52 27-02-2011 (notice|daemon|pppd) pppd[106]: Modem hangup
01:31:22 27-02-2011 (info|daemon|pppd) pppd[106]: PPP session is 24231 (0x5ea7)
01:31:22 27-02-2011 (warning|daemon|pppd) pppd[106]: Connected to 68:ef:bd:22:9b:20 via interface vlan1
01:31:22 27-02-2011 (info|daemon|pppd) pppd[106]: Using interface ppp0
01:31:22 27-02-2011 (notice|daemon|pppd) pppd[106]: Connect: ppp0 <--> vlan1
01:31:22 27-02-2011 (notice|daemon|pppd) pppd[106]: PAP authentication succeeded
01:31:22 27-02-2011 (notice|daemon|pppd) pppd[106]: peer from calling number 68:EF:BD:22:9B:20 authorized
01:31:23 27-02-2011 (notice|daemon|pppd) pppd[106]: local IP address 178.205.60.231
01:31:23 27-02-2011 (notice|daemon|pppd) pppd[106]: remote IP address 10.16.255.136
01:31:23 27-02-2011 (notice|daemon|pppd) pppd[106]: primary DNS address 89.232.109.74
01:31:23 27-02-2011 (notice|daemon|pppd) pppd[106]: secondary DNS address 217.23.176.1
01:31:23 27-02-2011 (info|daemon|dnsmasq) dnsmasq[75]: read /etc/hosts - 2 addresses
01:31:23 27-02-2011 (info|daemon|dnsmasq) dnsmasq[75]: using nameserver 217.23.176.1#53
01:31:23 27-02-2011 (info|daemon|dnsmasq) dnsmasq[75]: using nameserver 89.232.109.74#53
01:31:23 27-02-2011 (emerg|user|PPPoE) PPPoE: connected to ISP
02:34:37 27-02-2011 (emerg|user|client) client: Synchronizing time with time.nist.gov ...
04:34:37 27-02-2011 (emerg|user|client) client: Synchronizing time with time.nist.gov ...
06:34:37 27-02-2011 (emerg|user|client) client: Synchronizing time with time.nist.gov ...
08:34:37 27-02-2011 (emerg|user|client) client: Synchronizing time with time.nist.gov ...

IP у меня динамический и постоянно меняется провайдером. так они деньгу на статику вымогают.

vectorm
26-02-2011, 11:16
Господа знающие, у меня вопрос: с часу до двух ночи мой роутер чтото качает на 4 гига и отдает чтото...

ЧЕМ Вы это определяете?
И лог роутера приложите.

DarthSemafor
26-02-2011, 15:09
А ограничение как-то можно прикрутить к новой версии?:rolleyes:

vectorm
27-02-2011, 16:16
Господа знающие, у меня вопрос: с часу до двух ночи мой роутер чтото качает на 4 гига и отдает чтото...
это отображается в VNSTAT для Internet (ppp0)
специально проверял, отключены все компы, отключен торрент...словом официально в инет ломиться нечему.
кто это меня тут пользует?
вайфай запоролен и зашифрован

как это узнать ? как посмотреть логи ....подскажите пожалуйста.
в линуксе нуб. вообще нуб...

ну или ткните мордой в ссылку пожалуйста...
IP у меня динамический и постоянно меняется провайдером. так они деньгу на статику вымогают.
Вот про это и надо было СРАЗУ писать. Еще в первом вопросе.
Почитайте ВНИМАТЕЛЬНО инструкции по установке VNSTAT - там черным по белому написано, что сделать, чтобы в его статистике не вылезали эти "левые" 4Гб несуществующего трафика.

KinoMan
27-02-2011, 17:35
А ограничение как-то можно прикрутить к новой версии?:rolleyes:

Можно.
Добавил в первый пост описание настройки ограничений.

DarthSemafor
28-02-2011, 22:16
Можно.
Добавил в первый пост описание настройки ограничений.

Спасибо ;)

kornet18
17-03-2011, 12:20
Есть локальная сеть 192.168.0.*/255.255.255.0 с DHCP сервером 192.168.0.1 (Win2003Server). Интернет подключен пользователям через UserGate, установленном на машине 192.168.0.11 (WinXPSP3). Задача подключить и настроить Asus WL-500GP v1, при чем пользователи интернета WiFi не должны иметь доступа к компьютерам локальной сети, только Интернет и должны проходить авторизацию на UserGate (логин и пароль будем предоставлять только нашим клиентам). Как правильно все это организовать? Помогите с настройками маршрутизатора.

FilimoniC
17-03-2011, 13:28
Есть локальная сеть 192.168.0.*/255.255.255.0 с DHCP сервером 192.168.0.1 (Win2003Server). Интернет подключен пользователям через UserGate, установленном на машине 192.168.0.11 (WinXPSP3). Задача подключить и настроить Asus WL-500GP v1, при чем пользователи интернета WiFi не должны иметь доступа к компьютерам локальной сети, только Интернет и должны проходить авторизацию на UserGate (логин и пароль будем предоставлять только нашим клиентам). Как правильно все это организовать? Помогите с настройками маршрутизатора.

Альтернативный вариант: поставьте на роутер Chillispot и аналоги

AndreyUA
17-03-2011, 13:50
Есть локальная сеть 192.168.0.*/255.255.255.0 с DHCP сервером 192.168.0.1 (Win2003Server). Интернет подключен пользователям через UserGate, установленном на машине 192.168.0.11 (WinXPSP3). Задача подключить и настроить Asus WL-500GP v1, при чем пользователи интернета WiFi не должны иметь доступа к компьютерам локальной сети, только Интернет и должны проходить авторизацию на UserGate (логин и пароль будем предоставлять только нашим клиентам). Как правильно все это организовать? Помогите с настройками маршрутизатора.

Заведите на компе отдельный сетевой интерфейс, втыкните туда роутер и разрулите юзергейтом. Или на роутере с помощью iptables настройте доступ пользователей WIFI только в инет.

Pablo Escobar
17-03-2011, 13:54
я б в отдельную подсеть вынес бы wifi и его юзеров, а на шлюзе +сетевуха, рулил бы уже как захочется.
можно и без отдельной сетевухи, тогда маршруты пропишите просто.

emk
14-04-2011, 08:35
Добрый день!
Настроен Manually Assigned IP List, где описаны все устройства сети которым выдается определенный ip адрес, проблема в том что на любом компе не важно есть он в списке Manually Assigned IP List или нет достаточно ввести ip адрес шлюз ДНС в ручную и клиент беспрепятственно получает выход в интернет и лок.сеть, как запретить доступ тем кому не выдавался ip по dhcp?

ale_xb
15-04-2011, 23:15
что-то у меня не считает статистику данный скрипт, точнее все считается в столбцах только City, а World - пустой. У меня dual access (PPPoE с динамическим белым IP для инета + статический IP для MAN - локалки провайдера и пиринговых сетей); RT-N16 (r2888). У него внешние интерфейсы именованы иначе, чем в WL500xxx: vlan1 - это LAN, vlan2 - MAN, остальное совпадает. Посему я раскоментировал в скрипте строки, где упоминался vlan1, заменив его на vlan2. Файл с пиринговыми сетями прописан и работает (он же используется для nShaper, с которым все в порядке).
Где что мне проверить, подскажите, плз?

KinoMan
16-04-2011, 05:38
покажите что выводит
iptables -nvxL -t mangle

pppoe соединение на RT-N16 - это ppp0?

Pablo Escobar
16-04-2011, 06:58
Добрый день!
Настроен Manually Assigned IP List, где описаны все устройства сети которым выдается определенный ip адрес, проблема в том что на любом компе не важно есть он в списке Manually Assigned IP List или нет достаточно ввести ip адрес шлюз ДНС в ручную и клиент беспрепятственно получает выход в интернет и лок.сеть, как запретить доступ тем кому не выдавался ip по dhcp?

а как связан Manually Assigned IP List с получением интернета?

из постановки вашего вопроса - штатными средствами никак.

ale_xb
17-04-2011, 10:21
покажите что выводит
iptables -nvxL -t mangle
во вложенном файле

pppoe соединение на RT-N16 - это ppp0?
Да, интерфейс для всех видов подключения, что PPPT, что PPPoE, что L2TP - это ppp0

KinoMan
17-04-2011, 16:32
ale_xb
зачем вы в пиринг внесли 192.168.0.0/16

она же включает вашу подсеть 192.168.1.0/24

ale_xb
17-04-2011, 17:13
Мой ляп! Спасибо, что заметили. Теперь считает нормально, попозже сравню с данными провайдера.
Кстати, где производится сброс данных с началом месяца? У меня расчетный период - не с 1-го числа, хочу для себя это поправить.

KinoMan
17-04-2011, 17:27
сброс в файле billing.php


$yesterday = date("Y-m", time()-300);
if (date("Y-m") != $yesterday) {
ob_start();
include("index.php");
$buffer=ob_get_contents();
ob_end_clean();
file_put_contents($yesterday.'.html', $buffer);

delFiles("billing/world/");
delFiles("billing/city/");
delFiles("billing/router/");
}

KinoMan
17-04-2011, 17:31
вам будет проще в кронтабе прописать когда сбрасывать -
вынести код из if в отдельный файл и вызвать этот сбрасывающий скрипт в нужный вам день

ale_xb
17-04-2011, 18:50
вам будет проще в кронтабе прописать когда сбрасывать -
вынести код из if в отдельный файл и вызвать этот сбрасывающий скрипт в нужный вам день

да, вы правы, спасибо за совет, но моих практически нулевых познаний в скриптах для этого уже не хватит, к сожалению.

Как будто все же разобрался. Может, кому еще пригодится:
1. создаем файл /opt/share/www/statistic/reset.php со следующим содержимым:
<?php
function delFiles($dir) {
$fileNames = scandir($dir);
foreach ($fileNames as $fileName) {
if ($fileName != "." && $fileName != "..") {
unlink($dir.$fileName);
}
}
}

ob_start();
include("index.php");
file_put_contents(date("Y-m").'.html', ob_get_contents());
ob_end_clean();

delFiles("billing/world/");
delFiles("billing/city/");
delFiles("billing/router/");
?>
2. в файле /opt/etc/crontab добавляем строку:
02 00 10 * * root cd /opt/share/www/statistic/ && /opt/bin/php ./reset.php > /dev/null 2>&1
здесь у меня указано, что сброс будет производится 10 числа каждого месяца в 00 часов 02 минуты.

3. в файле /opt/share/www/statistic/billing.php удаляем (у себя я их просто закомментировал) строки:
#function delFiles($dir) {
# $fileNames = scandir($dir);
# foreach ($fileNames as $fileName) {
# if ($fileName != "." && $fileName != "..") {
# unlink($dir.$fileName);
# }
# }
#}

# $yesterday = date("Y-m", time()-300);
# if (date("Y-m") != $yesterday) {
# ob_start();
# include("index.php");
# $buffer=ob_get_contents();
# ob_end_clean();
# file_put_contents($yesterday.'.html', $buffer);

# delFiles("billing/world/");
# delFiles("billing/city/");
# delFiles("billing/router/");
#}

PS. не знаю, нужны ли здесь вообще функции ob_start, ob_get_contents, ob_end_clean? пусть спецы в php подскажут.

И еще мелкая добавка, может, тоже кому пригодится. Т.к. для просмотра статистики прошлых периодов нужно в адресной строке браузера набирать точное имя файлов, это неудобно, я чуть дополнил скрипт:
5.Редактируем файл /opt/share/www/statistic/index.php Ищем в самом конце строки
</body>
</html>и перед ними вставляем это:
<div style="text-align: center;"><small style="font-weight: bold; font-family: Verdana;">
<a href="./prev.php">Статистика прошлых периодов</a></small></div>
6.Создаем файл /opt/etc/share/www/statistic/prev.php со следующим содержимым:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Статистика прошлых периодов</title>
</head>
<body>
<div style="text-align: center; font-weight: bold; font-family: Verdana;">
Статистика прошлых периодов<br><br>
<?php
foreach (glob("./*.html") as $f)
{
$rest = substr($f, 2);.
echo "<a href='$rest'>$rest</a>";
echo "<br><br>";
};
?>
</div>
</body></html>
В итоге внизу страницы статистики появится ссылка, по которой будет открываться список-ссылок на файлы html со статистикой прошлых периодов. Щелкая по ним, открываем нужный период (месяц).
Все не очень красиво и весьма примитивно, но все же удобнее, чем набор в адресной строке.

SaER
06-05-2011, 18:01
создал файлы как описано в настройке нового скрипта, старым никогда не пользовался. новый почему-то не работает.


Новый скрипт (февраль 2011)
Можно запустить подсчет трафика не перезагружая роутер запустив:

/usr/local/sbin/makefilter
/usr/local/sbin/makestat

при запуске /usr/local/sbin/makestat руками выдаёт слудущее:

Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `city'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `city'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `r_city_output'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `r_city_input'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.


подскажите что поменять, чтобы заработало.
хочу просто считать статистику на нужные маки-ip без всякой фильтрации и ограничений

KinoMan
06-05-2011, 18:43
есть предположение, что что-то не так с файлом /usr/local/sbin/lst/ip_piring.lst

SaER
06-05-2011, 19:38
есть предположение, что что-то не так с файлом /usr/local/sbin/lst/ip_piring.lst

вот мой ip_piring.lst:

87.224.0.1/16
90.157.0.1/16
92.54.0.1/16
94.31.0.1/16
188.73.0.1/16
213.142.0.1/16

но дело похоже не в нём.
я переделал /usr/local/sbin/makestat чтобы посмотреть, в каком месте он на чинает ругаться:

...
iptables -t mangle -F city > /dev/null 2>&1
iptables -t mangle -F world > /dev/null 2>&1
iptables -t mangle -F selector > /dev/null 2>&1

if [ "$?" -ne 0 ]; then
iptables -t mangle -N city
iptables -t mangle -N world
iptables -t mangle -N selector

# iptables -t mangle -I FORWARD -i vlan1 -j selector
# iptables -t mangle -I FORWARD -o vlan1 -j selector

iptables -t mangle -I FORWARD -i ppp0 -j selector
iptables -t mangle -I FORWARD -o ppp0 -j selector
fi
###########
echo before USERS
cat $USERS | while read MAC IP
do
iptables -t mangle -A city -d $IP -j RETURN
iptables -t mangle -A city -s $IP -j RETURN
iptables -t mangle -A world -d $IP -j RETURN
iptables -t mangle -A world -s $IP -j RETURN
done
###########
echo users readed
cat $PIRING | while read PIR
do
iptables -t mangle -A selector -d $PIR -j city
iptables -t mangle -A selector -d $PIR -j RETURN
iptables -t mangle -A selector -s $PIR -j city
iptables -t mangle -A selector -s $PIR -j RETURN
done
#################
iptables --version
echo " iptables VERSION"
...

вот что получилось

before USERS
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
users readed
Bad argument `city'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `city'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.9
iptables VERSION
Bad argument `r_city_output'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `r_city_input'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.

значит что-то не работает уже в секции


cat $USERS | while read MAC IP
do
iptables -t mangle -A city -d $IP -j RETURN
iptables -t mangle -A city -s $IP -j RETURN
iptables -t mangle -A world -d $IP -j RETURN
iptables -t mangle -A world -s $IP -j RETURN
done

но не пойму почему iptables ругается на RETURN только 4 раза, а не по 4 раза на каждого юзера???
/usr/local/etc/ethers состоит из 15-ти пар mac-ip и пустой строки в конце

tempik
07-05-2011, 21:40
но не пойму почему iptables ругается на RETURN только 4 раза, а не по 4 раза на каждого юзера???
/usr/local/etc/ethers состоит из 15-ти пар mac-ip и пустой строки в конце
добавь после

echo before USERS
cat $USERS | while read MAC IP
do

echo $IP

и после

echo users readed
cat $PIRING | while read PIR
do
echo $PIR

может станет понятно какие записи глючат ...

SaER
08-05-2011, 09:25
добавь
echo $IP
и
echo $PIR
может станет понятно какие записи глючат ...

добавил получилось так:

...
echo before USERS
cat $USERS | while read MAC IP
do
echo $IP
iptables -t mangle -A city -d $IP -j RETURN
iptables -t mangle -A city -s $IP -j RETURN
iptables -t mangle -A world -d $IP -j RETURN
iptables -t mangle -A world -s $IP -j RETURN
done
###########
echo users readed
cat $PIRING | while read PIR
do
echo $PIR
iptables -t mangle -A selector -d $PIR -j city
iptables -t mangle -A selector -d $PIR -j RETURN
iptables -t mangle -A selector -s $PIR -j city
iptables -t mangle -A selector -s $PIR -j RETURN
done
#################
iptables --version
echo " iptables VERSION"
...
получается, что iptables нормально обрабатывает в цикле каждую запись (т.к. м/у выводом каждого $IP и каждого $PIR iptables не ругается), но почему-то ругается в самом конце по 4 раза на RETURN и city:

before USERS
192.168.1.3
192.168.1.56
192.168.1.5
192.168.1.4
192.168.1.8
192.168.1.58
192.168.1.9
192.168.1.59
192.168.1.71
192.168.1.6
192.168.1.55
192.168.1.32
192.168.1.31
192.168.1.7

Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
users readed
87.224.0.1/16
90.157.0.1/16
92.54.0.1/16
94.31.0.1/16
188.73.0.1/16
213.142.0.1/16

Bad argument `city'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `city'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.9
iptables VERSION
Bad argument `r_city_output'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `r_city_input'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `RETURN'
Try `iptables -h' or 'iptables --help' for more information.

странным мне также показалось что не обрабатывается RETURN, r_city_output, r_city_input,
но с r_world_input, r_world_output, r_selector_input и r_selector_output проблем никаких нет.
закомментировал вывод в /dev/null думал, что какие-нибудь новые ошибки увижу, но вывод скрипта остался старым (как вверху).

...
iptables -t mangle -F city #> /dev/null 2>&1
iptables -t mangle -F world #> /dev/null 2>&1
iptables -t mangle -F selector #> /dev/null 2>&1
...
iptables -t mangle -F r_city_input #> /dev/null 2>&1
iptables -t mangle -F r_city_output #> /dev/null 2>&1
iptables -t mangle -F r_world_input #> /dev/null 2>&1
iptables -t mangle -F r_world_output #> /dev/null 2>&1
iptables -t mangle -F r_selector_input #> /dev/null 2>&1
iptables -t mangle -F r_selector_output #> /dev/null 2>&1
...

что ещё можно сделать, чтобы понять что именно не работает (или работает неправильно) и почему?

SaER
08-05-2011, 13:17
у меня подозрения, что iptables ругается при считывании $USERS и $PIR как раз из-за наличия пустой строки в /usr/local/etc/ethers и /usr/local/sbin/lst/ip_piring.lst
Похоже ей (команде iptables) передаются после последних MAC и IP, а потом и после последнего PIR пустые значения.
а вот почему она ругается на r_city_output, r_city_input я так и не понял?

кто-нибудь знает зачем нужна пустая строка в конце списка мак-айпи и в пиринг-листе?
может её просто убрать?

tempik
09-05-2011, 15:52
у меня подозрения, что iptables ругается при считывании $USERS и $PIR как раз из-за наличия пустой строки в /usr/local/etc/ethers и /usr/local/sbin/lst/ip_piring.lst
Похоже ей (команде iptables) передаются после последних MAC и IP, а потом и после последнего PIR пустые значения.
а вот почему она ругается на r_city_output, r_city_input я так и не понял?

кто-нибудь знает зачем нужна пустая строка в конце списка мак-айпи и в пиринг-листе?
может её просто убрать?
Там должна быть именно пустая строка ... Есть подозрение что там еще и пробелы есть....

alex_optek
14-05-2011, 17:21
Установил сразу новый скрипт.
Интернет через 3g модем.
Внешне все работает, но результат очень странный.
Сильно и с переменным коэффициентом (4-30) занижает.
Просмотр по команде "iptables -nvxL -t mangle", показывает, что на web эти странные данные доходят. Лог команды во вложении.
NAT в web отключен, других настроек тоже нет.
Если надо настраивать NAT, то как?
Куда копать?

KinoMan
14-05-2011, 18:59
Что значит Nat в web отключен?
Если используете fastNAT, то статистика работать не будет.

Расхождения с данными провайдера будут полюбому. Об этом уже писали. Сейчас скрипт снимает статистику с iptables без всяких округлений и прочего (в старой версии были еще +потери на округлениях).

alex_optek
14-05-2011, 19:13
Что значит Nat в web отключен?
Если используете fastNAT, то статистика работать не будет.

Расхождения с данными провайдера будут полюбому. Об этом уже писали. Сейчас скрипт снимает статистику с iptables без всяких округлений и прочего (в старой версии были еще +потери на округлениях).

Ручной настройки NAT и других версий NAT нет, отключен NAT в web интерфейсе.
Вообще, кажется, что трафик идет мимо таблицы mangle,в части заданных внутренних IP адресов пользователей. , поскольку в telenete при периодическом ручном опросе iptables -nvxL -t mangle, при наличии мегабитного трафика, изменения в привязке к IP адресам ничтожны.
Замечаний по работе сети и интернета нет.
Скрипт работает правильно, проблема скорее всего в iptables, но не могу понять где.

KinoMan
14-05-2011, 19:27
прочтите эту тему
http://wl500g.info/showthread.php?t=26228

alex_optek
14-05-2011, 19:59
прочтите эту тему
http://wl500g.info/showthread.php?t=26228
Большое спасибо, это видимо fastNAT, отключил, все заработало.
Тогда философский вопрос, если fastNAT хорошо, то возможно ли в будущем работа скрипта с включенным fastNAT?
P.S. Прочитав ветку по fastNAT, понял две вещи, скрипт работать не будет, а собственно для 3G модема fastNAT ничего на даст.

alex_optek
15-05-2011, 18:41
Как будто все же разобрался. Может, кому еще пригодится:


Спасибо за проделанную работу, все запустилось и работает.
Но есть просьба к автору, для упрощения установки скрипта будущими пользователями, прикрепить к сообщению файлы prev.php и reset.php.
При переносе копированием были проблемы, пришлось править вручную.
Возможно не все смогут быстро разобраться, что править, ну а набирать вручную, это много.

partner
16-05-2011, 03:54
... файлы prev.php и reset.php...


а за что отвечают эти за файлы?

alex_optek
16-05-2011, 15:49
а за что отвечают эти за файлы?

на этой странице http://wl500g.info/showpost.php?p=230029&postcount=157 отличное сообщение, все написано автором.

alex_optek
23-05-2011, 16:50
192.168.1.108 17592186044420.85 17592186044419.66 35184372088840.52 0.00 0.00 0.00
192.168.1.164 0.00 0.00 0.00 0.00 0.00 0.00
192.168.1.2 52776558133260.31 52776558133252.12 105553116266512.44 0.00 0.00 0.00
192.168.1.20 35184372088832.14 35184372088832.07 70368744177664.22 0.00 0.00 0.00
192.168.1.109 0.00 0.00 0.00 0.00 0.00 0.00
192.168.1.200 70368744177671.71 70368744177665.56 140737488355337.28 0.00 0.00 0.00
192.168.1.201 0.00 0.00 0.00 0.00 0.00 0.00
Router 0.52 0.21 0.74 0.00 0.00 0.00

Вот такие огромные выбросы по активным соединениям,раз в несколько дней , vnstat и darkstat работают нормально, разрыва соединения не было.
В чем может быть причина.

KinoMan
24-05-2011, 19:37
Не могу сказать в чем причина
Возможно что-то связано с особенностями rtn прошивки или 3g модема.
Надо смотреть что в эти моменты происходит в iptables и искать какие-то аномалии. (команда iptables -nvxL -t mangle). Смотреть как эти данные парсятся php скриптом.


У меня на роутере стоит -d прошивка. Зашкаливания данных не было ни когда.

alex_optek
28-05-2011, 13:41
Не могу сказать в чем причина
Возможно что-то связано с особенностями rtn прошивки или 3g модема.
Надо смотреть что в эти моменты происходит в iptables и искать какие-то аномалии. (команда iptables -nvxL -t mangle). Смотреть как эти данные парсятся php скриптом.


У меня на роутере стоит -d прошивка. Зашкаливания данных не было ни когда.

Во вложении лог на (команда iptables -nvxL -t mangle), 3 дня было тихо, отключений модема не было 22 часа, и вдруг несколько раз подряд зашкал, так что смог словить командой, куда искать?

KinoMan
29-05-2011, 21:24
У вас в цепочку world такие данные попадают.
Почему там появляются такие числа - не знаю. Возможно какой-то баг в rtn прошивке.


Chain world (1 references)

pkts bytes target prot opt in out source destination

18446744073709551587 18446744073709549533 RETURN all -- * * 0.0.0.0/0 192.168.1.108

18446744073709551584 18446744073709548700 RETURN all -- * * 192.168.1.108 0.0.0.0/0

0 0 RETURN all -- * * 0.0.0.0/0 192.168.1.164

0 0 RETURN all -- * * 192.168.1.164 0.0.0.0/0

18446744073709551044 18446744073709255380 RETURN all -- * * 0.0.0.0/0 192.168.1.2

18446744073709550845 18446744073709453848 RETURN all -- * * 192.168.1.2 0.0.0.0/0

18446744073709551602 18446744073709545379 RETURN all -- * * 0.0.0.0/0 192.168.1.20

18446744073709551597 18446744073709546685 RETURN all -- * * 192.168.1.20 0.0.0.0/0

0 0 RETURN all -- * * 0.0.0.0/0 192.168.1.109

0 0 RETURN all -- * * 192.168.1.109 0.0.0.0/0

0 0 RETURN all -- * * 0.0.0.0/0 192.168.1.200

0 0 RETURN all -- * * 192.168.1.200 0.0.0.0/0

314 103999 RETURN all -- * * 0.0.0.0/0 192.168.1.201

456 67995 RETURN all -- * * 192.168.1.201 0.0.0.0/0

almobil
13-06-2011, 14:11
Здравствуйте, подскажите как, используя файл post-firewall, сделать так, чтобы компьютер с определенным IP и MAC адресом не имел доступа к внутренней сети, но имел доступ к интернету?!

tempik
15-06-2011, 20:21
Здравствуйте, подскажите как, используя файл post-firewall, сделать так, чтобы компьютер с определенным IP и MAC адресом не имел доступа к внутренней сети, но имел доступ к интернету?!
Совсем не в тему ... Поиск по vlan ...

almobil
16-06-2011, 13:41
Совсем не в тему ... Поиск по vlan ...

Усложним задачу. Нужно отключить от локальной сети но оставить интернет компьютер, который является виртуальной машиной под VirtualBox.
Скажите правильную кто нибудь команду?

KinoMan
16-06-2011, 19:55
Усложним задачу. Нужно отключить от локальной сети но оставить интернет компьютер, который является виртуальной машиной под VirtualBox.
Скажите правильную кто нибудь команду?

1) Нафига это надо?
2) Если доступ надо закрыть системе под VirtualBox, то настраивать надо не роутер.

tempik
17-06-2011, 20:06
1) Нафига это надо?
2) Если доступ надо закрыть системе под VirtualBox, то настраивать надо не роутер.
+1
Если виртуалка использует сетевой интерфейс донора как бридж или использует свою подсеть и сетевой интерфейс донора как шлюз, то она не различима для роутера как отдельная машина (изучайте OSI)... Если другое, то приводите конкретный пример конфигурации сети ...

TReX
17-06-2011, 21:21
+1
Если виртуалка использует сетевой интерфейс донора как бридж или использует свою подсеть и сетевой интерфейс донора как шлюз, то она не различима для роутера как отдельная машина (изучайте OSI)... Если другое, то приводите конкретный пример конфигурации сети ...

Да неужели? Как раз в режиме бриджа она прекрасно видна роутеру, он ей и адрес выдает из пула DHCP )) Даже можно IPV6 поднять )

tempik
17-06-2011, 22:11
Да неужели? Как раз в режиме бриджа она прекрасно видна роутеру, он ей и адрес выдает из пула DHCP )) Даже можно IPV6 поднять )
Угу!!! адрес роутер дает из СВОЕЙ внутренней сети ... МАС не виден... Видимо Я не понимаем инициатора...

TReX
18-06-2011, 02:13
Угу!!! адрес роутер дает из СВОЕЙ внутренней сети ... МАС не виден... Видимо Я не понимаем инициатора...

)) да неужто MAC не виден? А DHCP как же без мака то адрес выдает?



Jun 18 00:08:21 dnsmasq-dhcp[222]: DHCPDISCOVER(br0) 192.168.1.230 00:03:ff:хх:хх:хх
Jun 18 00:08:21 dnsmasq-dhcp[222]: DHCPOFFER(br0) 192.168.1.230 00:03:ff:хх:хх:хх
Jun 18 00:08:21 dnsmasq-dhcp[222]: DHCPREQUEST(br0) 192.168.1.230 00:03:ff:хх:хх:хх
Jun 18 00:08:21 dnsmasq-dhcp[222]: DHCPACK(br0) 192.168.1.230 00:03:ff:хх:хх:хх VirtualXP-34829

tempik
19-06-2011, 20:58
)) да неужто MAC не виден? А DHCP как же без мака то адрес выдает?



Jun 18 00:08:21 dnsmasq-dhcp[222]: DHCPDISCOVER(br0) 192.168.1.230 00:03:ff:хх:хх:хх
Jun 18 00:08:21 dnsmasq-dhcp[222]: DHCPOFFER(br0) 192.168.1.230 00:03:ff:хх:хх:хх
Jun 18 00:08:21 dnsmasq-dhcp[222]: DHCPREQUEST(br0) 192.168.1.230 00:03:ff:хх:хх:хх
Jun 18 00:08:21 dnsmasq-dhcp[222]: DHCPACK(br0) 192.168.1.230 00:03:ff:хх:хх:хх VirtualXP-34829

Не спорю, могу ошибаться ... Тогда версию "виртуалки" и хоста, если не трудно...

vectorm
20-06-2011, 07:51
Не спорю, могу ошибаться ... Тогда версию "виртуалки" и хоста, если не трудно...
Не, TReX не так понял судя по всему.
Вы о разном бридже:
1. Бридж на самом хосте с виртуалками - сам раздает адреса, и на роутер все сливает под хостовым адресом (на DHCP роутера вообще не светится ни одна виртуалка). Получается двойной NAT.
2. Бридж роутерный - виртуалка получат IP от роутера, со своим собственным MAC адресом.

Так что нужно уточнение у автора вопроса, какой вариант у него.
Если 1, то все вопросы по настройке и блокированию - к Виртуалбоксу.
Если 2, то смотреть темы про iptables, в том числе эту тоже.
Но эта задача достаточно сложна в реализации - нельзя закрыть доступ к самому роутеру.

almobil
20-06-2011, 14:46
Не, TReX не так понял судя по всему.
Вы о разном бридже:
1. Бридж на самом хосте с виртуалками - сам раздает адреса, и на роутер все сливает под хостовым адресом (на DHCP роутера вообще не светится ни одна виртуалка). Получается двойной NAT.
2. Бридж роутерный - виртуалка получат IP от роутера, со своим собственным MAC адресом.

Так что нужно уточнение у автора вопроса, какой вариант у него.
Если 1, то все вопросы по настройке и блокированию - к Виртуалбоксу.
Если 2, то смотреть темы про iptables, в том числе эту тоже.
Но эта задача достаточно сложна в реализации - нельзя закрыть доступ к самому роутеру.

у меня второй вариант, в маршрутизаторе IP адрес виртуальной машины привязан через MAC. в iptables'ах не разбираюсь, поэтому здесь и спросил по сути надо чтобы этот компьютер не видел всего 3 компьютера в своём сетевом окружении сам маршрутизатор блокировать не обязательно.

j00e
01-07-2011, 05:03
Прошу помогите, не идет подсчет трафика.
Что имеется:
RT-N16 с установкой программ через "скрипт для чайников", установленный скрипт статистики из 1 поста. И инет через Automatic IP. Тоесть никакое соединение не поднимается. (надеюсь что проблема именно в этом). В настройках ДХЦП прописаны все компы, в файле ethers так же все компы.

Изначально, после установки трафик не считается, через запрос

iptables -nvxL -t mangle
появляются все юзеры, но трафика нет ни у юзеров ни у роутера.
Замечу что сеть имеет вид 192.168.2.*

После того как в файле makestat раскоментировал строки

# iptables -t mangle -I FORWARD -i vlan1 -j selector
# iptables -t mangle -I FORWARD -o vlan1 -j selector
Счет трафика пошел, но какой то левый и мало его.
В общем вот такая ситуация, кто может подсказать что делать?

alex_optek
02-07-2011, 11:04
Прошу помогите, не идет подсчет трафика.
Что имеется:

Счет трафика пошел, но какой то левый и мало его.
В общем вот такая ситуация, кто может подсказать что делать?

169 пост в этой теме возможная причина и результат выключения FASTNAT.
А вообще в последних версиях он отключен по умолчанию.

j00e
25-07-2011, 04:55
Приветствую всех, подскажите пожалуйста как надо отредактировать данный код

*/5 * * * * root cd /opt/share/www/statistic/ && /opt/bin/php ./limit.php > /dev/null 2>&1
1 0 1 * * root /user/local/sbin/makefilter
Чтобы лимит был не на месяц, а на сутки? Желательно сбрасывать его в 24:00.
З.Ы. еще вопрос, в новой версии скрипта пропала возможность в статистике давать имя для адреса?
тоесть при создании строчки mac-ip-name (через пробел конечно), у меня все ломается и ничего не работает.
Заранее спасибо.

max2007
07-08-2011, 14:21
Здравствуйте уважаемые форумчане , возникла надобность жёстко ограничить скорость закачки/отдачи для определённых IP во внутренней сети.Пару дней уже перечитываю форум , ответа так и не нашёл , тем милион не не одного дельного совета или решения. Прошу помощи в решении этой задачи ,может кто уже сталкивался с такими задачами и решил их ?? Спасибо !

ConstAntz
07-08-2011, 20:54
Здравствуйте уважаемые форумчане , возникла надобность жёстко ограничить скорость закачки/отдачи для определённых IP во внутренней сети.Пару дней уже перечитываю форум , ответа так и не нашёл , тем милион не не одного дельного совета или решения. Прошу помощи в решении этой задачи ,может кто уже сталкивался с такими задачами и решил их ?? Спасибо !

deja vu (http://wl500g.info/showpost.php?p=230711&postcount=940) :D
man tc (http://www.opennet.ru/cgi-bin/opennet/man.cgi?topic=tc)

max2007
07-08-2011, 21:03
deja vu (http://wl500g.info/showpost.php?p=230711&postcount=940) :D
man tc (http://www.opennet.ru/cgi-bin/opennet/man.cgi?topic=tc)
Эсли вы изучили роботу nShaper то должны знать что он в этой проблеме не помошник.А по поводу TC не могли бы вы по подробней описать что к чему

ConstAntz
07-08-2011, 21:24
по поводу TC не могли бы вы по подробней описать что к чему

Не занимался, не подскажу.

беглый взгляд на nShaper: универсальный скрипт, построенный на tc

В теории, глядя на него и вторую ссылку сможете сделать задуманное одной строкой. Практика покажет другое.

max2007
07-08-2011, 21:44
Не занимался, не подскажу.

беглый взгляд на nShaper: универсальный скрипт, построенный на tc

В теории, глядя на него и вторую ссылку сможете сделать задуманное одной строкой. Практика покажет другое.

Не это не по моим знаниям ,я в програмировании 0

oxy-fox
22-10-2011, 20:27
скажите а можно ли сделать, чтобы список пользователей брался из IP Config - DHCP Server - Manually Assigned IP List?

oxy-fox
30-10-2011, 00:43
В общем сделал чтобы список брался из IP Config - DHCP Server - Manually Assigned IP List, просто изменил путь к файлу пользователей.
И еще немного переделал внешне под себя, и кое-что добавил:
так у меня выглядит главная страница, ничего радикально не поменял ,пару ссылок добавил, при нажатии на ссылку ОБНОВИТЬ полностью обновляется статистика через billing.php
http://s017.radikal.ru/i435/1110/67/9fa2c4396ba1t.jpg (http://s017.radikal.ru/i414/1110/db/39d85c36fa35.jpg)

а так выглядит страница прошлых периодов
http://s017.radikal.ru/i443/1110/c6/fab422589f68t.jpg (http://s017.radikal.ru/i443/1110/c6/fab422589f68.jpg)
файлы прошлых периодов сохраняются в папке "archive"
что и где менял уже и не помню поэтому вот все файлы

vlas_val
30-10-2011, 07:50
А в каком месте изменен путь к файлу пользователей?

alex_optek
30-10-2011, 13:55
В общем сделал чтобы список брался из IP Config - DHCP Server - Manually Assigned IP List, просто изменил путь к файлу пользователей.
И еще немного переделал внешне под себя, и кое-что добавил:
так у меня выглядит главная страница, ничего радикально не поменял ,пару ссылок добавил, при нажатии на ссылку ОБНОВИТЬ полностью обновляется статистика через billing.php
ы
Спасибо, стало удобнее.
Но пара непоняток, на основной странице "обновить статистику посылает на 192.168.0.1 а не на 192.168.1.1 и аналогично со статистики прошлых периодов на ссылке "текущая статистика"
надо поправить адреса в preview и в billing.

oxy-fox
02-11-2011, 21:09
А в каком месте изменен путь к файлу пользователей?
makefilter
makestat

alex_optek, да

Grandorf
03-11-2011, 10:14
Есть задача, 2 пользователям из 5 необходимо отключить интернет, при этом сохранить доступ по локалке, подскажите пожалуйста простое решение

Спасибо

lohmatyi
03-11-2011, 13:34
Народ подскажите как ограничить доступ локальной машине в инет вовсюда кроме почты и XMPP, имею девайс WL500gpv2, с родной прошивкой. Настраиваю фильтр между локальной и глобальной сетями, роутер работает как шлюз. адрес локальной машины 192.165.1.200 адрес шлюза 192.168.1.1.Предпологаю что для локальной машины нужно, закрыть все порты кроме 110, 25 и 5223, но вот как это реализовать незнаю.

Grandorf
04-11-2011, 05:48
Присоединяюсь к вопросу ниже, есть аналогичное оборудование и 5 компьютеров, на 2 из них необходимо оставить доступ к интернету только для почтового клиента (Протоколы: IMAP, SMTP) + сохранить доступ к внутренним сетевым ресурсам. Хотелось бы включать/отключать интернет на локальных машинах как по расписанию, так и вручную.

192.168.1.1 Роутер
192.168.1.2 Локальный компьютер №1
192.168.1.4 Локальный компьютер №2

Вариант 1 (На локальных компьютерах работает только почта IMAP, SMTP и локальная сеть )
Вариант 2 (На локальных компьютерах работает интернет без любых ограничений)

С чего стоит начать?

Zitzy
20-11-2011, 13:53
А как можно настроить полосу пропускания без прокси? Приоритезация по ip или сервису меня не совсем устраивает. Нужно, чтобы определенным ip резалась скорость.

srzv1980
22-11-2011, 08:31
Вариант 1. Вопрос такой можно написать скрипт, чтобы на веб морде на каком-нибудь порту выводился список пользователей с IP и MAC, а напротив пользователя галки для доступа в интернет, установил доступ открыл - снял закрыл, без перезагрузки роутера. Прошивка 1.9.2.7-rtn-r3497 роутер asus rt-n16.
Вариант 2. На основе скрипта billing вместо limit по трафику лимит по дате, т.е. (Подключены соседи к интенету через мой роутер договорились вместе оплачивить интернет пополам, они забываю про оплату пока не отключишь пачкорд. Хотелось автоматизировать этот процесс без перезагрузки роутера.) Оплатили за два месяца в limit добавил что до 12.2011 оплачено, а 01.2012 что бы автоматом закрылся доступ.
Тема закрыта решение найдено userside_lite.

mishapk
07-01-2012, 19:07
Имею DIR-320+ 3g ZTE AC2726 + прошивка Олега
Подскажите можно ли как то подсчитывать суточный трафик Интернет, и если он превысит 200 мб в сутки автоматически делать отключение соединение интернет?

oxy-fox
31-01-2012, 11:23
srzv1980, я у себя реализовал ваш второй вариант. Немного топорно сделал пока, но функционально, позже выложу исходники, если надо.
В веб морде вводится сумма, которая потом рассчитывается на количество часов инета и добавляется к существующей дате либо к текущей если оплата просрочена, при неоплате отключается пользователь через iptables

Переделал немного свой вариант, теперь сумма не рассчитывается на сколько часов ее хватит, а считается баланс, который списывается раз в сутки "сумма списания"="абонплата"/"кол-во пользователей"/"кол-во дней в месяце"

dlink
01-02-2012, 13:51
Есть две локалки обе работают на основе DIR-320 с модифицированной прошивкой "от Олега" помимо этого и в той и вдругой сетях, работает (получает инет по файфаю) один злосчастный ноут с Windows XP SP3 со сброшенными в "поумолчанию" сетевыми настройками c программой WinsockXPFix и потом с помощью мастера настройки сети настроенным сетевым окружением.
Вообщем проблема в том что в одной локалке я могу зайти (через сетевое окружение) на другие компы, а в другой мне пишет "Нет доступа к ... Возможно, у вас нет прав на использование этого сетевого ресурса"
причём остальные компы этот комп видят.
В чём может быть проблемма? У меня в сетке с проблеммой на DIR-320 установлен скрипт Статистика и ограничение доступа по ip и mac (http://wl500g.info/showthread.php?t=22673)

Уж коли мой пост сюда перенесли- вопрос по теме - как можно временно отключить этот скрипт?

oxy-fox
05-02-2012, 14:42
Может кому пригодится мой вариант управления доступом к интернету для пользователей:
- для каждого пользователя создаётся запись с его текущим балансом
- раз в сутки происходит списание абонентской платы
- сумма списания рассчитывается по формуле <АП общ>/<кол-во пользователей>/<кол-во дней в месяце>
- кол-во пользователей считается автоматически
- при отрицательном балансе происходит отключение интернета (сумма задаётся в админке), но абонплата продолжает списываться
- при достижении порога отключения (настраивается) пользователь приостанавливается и списания абонплаты не происходит, платежи делятся поровну между остальными, восстановление доступа платное (настраивается)
- админка никак не защищена (если подскажете простой способ, спасибо)))

папку кидать в /opt/share/www/
!mac адреса берутся из файла /etc/ethers (можно настроить /usr/local/etc/ethers)
!не забудьте прописать в crontab запуск файла limit.php (у меня проверяет каждый час), но не знаю как сделать его проверку при включении роутера
!для работы нужен файл /usr/local/sbin/makefilter

сделано всё примитивно (в php вообще ничего не понимаю...), нет проверки вводимых символов, нет статистики платежей для каждого пользователя. Делал в стиле "Статистики"

буду благодарен за найденные ошибки и баги. Буду рад новым идеям.
http://s018.radikal.ru/i512/1202/5a/36a71f229f5dt.jpg (http://radikal.ru/F/s018.radikal.ru/i512/1202/5a/36a71f229f5d.jpg)
http://i008.radikal.ru/1202/e6/c99d75c898c0t.jpg (http://radikal.ru/F/i008.radikal.ru/1202/e6/c99d75c898c0.jpg)

zlodei2000
09-02-2012, 18:51
Подскажите пожалуйста, что нужно поправить в скрипте для работы на RT-n16 прошивка RTN-3702.

все установлено, настроено в соответствии с инструкциями автора, fastnat выключен параметром misc_fastnat_x=0, crond работает, в логах запускается billing.php, тот же rrdtool рисует свои графики

фильтры создаются, но почему-то "iptables -nvxL -t mangle" показывает нули в добавленных стартовым скриптом цепочках/правилах

zlodei2000
09-02-2012, 19:09
Подскажите пожалуйста, что нужно поправить в скрипте для работы на RT-n16 прошивка RTN-3702.

все установлено, настроено в соответствии с инструкциями автора, fastnat выключен параметром misc_fastnat_x=0, crond работает, в логах запускается billing.php, тот же rrdtool рисует свои графики

фильтры создаются, но почему-то "iptables -nvxL -t mangle" показывает нули в добавленных стартовым скриптом цепочках/правилах

похоже проблема решена. автор считал что интернет идет через ppp0, а у меня статический внешний ip. поправка в скриптах на vlan2 решила проблему

tempik
09-02-2012, 19:15
похоже проблема решена. автор считал что интернет идет через ppp0, а у меня статический внешний ip. поправка в скриптах на vlan2 решила проблему
Извините, но звучит примерно так:
"Автор думал что у меня машина красного цвета, а на самом деле у меня дизель"

zlodei2000
10-02-2012, 17:03
Извините, но звучит примерно так:
"Автор думал что у меня машина красного цвета, а на самом деле у меня дизель"

просто нигде не было написано об этой особенности скриптов. возможно следующие пользователи потратят меньше времени для настройки

tempik
10-02-2012, 21:02
просто нигде не было написано об этой особенности скриптов. возможно следующие пользователи потратят меньше времени для настройки
Видимо Вы неправильно поняли мой сарказм ... "а у меня статический внешний ip" не противоречит "интернет идет через ppp0", так-же как и "машина может быть красного цвета и дизель" ... Определение "статический внешний ip" говорит только о том, что ваш ip-адрес "белый" и "реальный". И ничего не говорит о способе подключения.

Zayas
11-03-2012, 06:55
Всем здрасте, собственно вопрос написан в теме, но для уточнения добавлю:
Хочется что-то типа этого http://ideco.ru/products/overview.html
Точнее часть функционала от туда, а именно:
1. Заведение пользователей по именам.
2. Онлайн просмотр потребления трафика подключенных в данный момент пользователей.
3. Возможность при необходимости отключения/ограничения скорости конкретного пользователя (стандартное ограничение похоже не работает, точнее ограничение минимально возможной скорости).
4. ну а если возможно сделать ещё заведение учетной записи для каждого пользователя с созданием логина и пароля для авторизации по VPN то было бы вообще супер :)

Zayas
11-03-2012, 12:38
Может кому пригодится мой вариант управления доступом к интернету для пользователей:.....

Скрипт работает только если адрес роутера 192.168.0.1 а вообще идея хорошая.


!не забудьте прописать в crontab запуск файла limit.php
!для работы нужен файл /usr/local/sbin/makefilter
Сказал бы как делается а то я чайник совсем...


Скрипт работает только если адрес роутера 192.168.0.1 а вообще идея хорошая.


Сказал бы как делается а то я чайник совсем...
Переделал адреса под себя вроде норм. заработало а да не совсем.
добавил 2 пользователя, пытаюсь пополнить баланс в списке пользователей 2 .lim и .lim - кто что не понятно, ввёл сумму, при переходе на save.php говорит ошибка.
и не удаляет пользователей, наверное всётаки что-то не так сделал
так что по поводу?

!не забудьте прописать в crontab запуск файла limit.php
!для работы нужен файл /usr/local/sbin/makefilter

oxy-fox
19-03-2012, 19:57
Originally Posted by oxy-fox
!не забудьте прописать в crontab запуск файла limit.php
!для работы нужен файл /usr/local/sbin/makefilter
файл /opt/etc/crontab добавляем:
01 * * * * root cd /opt/share/www/billing/ && /opt/bin/php ./limit.php > /dev/null 2>&1
если логин не root то пишм свой
/usr/local/sbin/makefilter файл из статистики, о которой описано в первом посте

Originally Posted by Zayas
Скрипт работает только если адрес роутера 192.168.0.1 а вообще идея хорошая.
да работает для этого адреса, я просто этим адресом пользуюсь, поменяй во всех файлах адрес. там почти в каждом он используется

добавил 2 пользователя, пытаюсь пополнить баланс в списке пользователей 2 .lim и .lim - кто что не понятно, ввёл сумму, при переходе на save.php говорит ошибка.
и не удаляет пользователей, наверное всё-таки что-то не так сделал
при добавлении для пользователя обязательно нужно указывать все данные: там где имя и фамилия будут учитываться только первые два слова разделённые пробелом, "имя латинскими" - обязательно указывать и указывать без пробелов и экзотических символов и точек.
Вообще не переходит на save.php или переходит но выдаёт ошибку? Какие короткие имена вводил??
пересмотри все ссылки, может у тебя другая папка не billing...
только что проверил все работает... добавляются, удаляются и баланс пополняется единственное настройки не сохраняются но там в файле saveset.php нужно заменить строчку "$fh = fopen($namel,"w+")" на "$fh = fopen('set.cfg',"w+");"
прилепил архив со всеми файлами и тестовым пользователем, файлы изменил под адрес 192.168.1.1

Nukede
01-05-2012, 15:36
Доброго времени суток. Нужен софт для контроля сети, то есть программное обеспечение которое будет вести статистку по трафику, подключениям, урезанию скорости для некоторых пользователей и все это конечно же на роутер wl500g v1.

oxy-fox
19-08-2012, 13:32
Достала уже проблема с заоблачными цифрами в статистике, мне кажется, что дело в том, что у меня дублируются записи в "Chain MAC_IP (1 references)"
при выполнении команды iptables -L видно, что в этом поле две иногда три одинаковых записи, после запуска makefilter всё становится нормально...
Что делать? подскажите!

upd: нет, тут дело в чём-то другом... а в чём понять не могу.

Graf-dubna
29-08-2012, 06:14
Установил данный скрипт. Скрипт работает, всё в порядке.
Но подскажите чайнику, следующее:
Есть сервер подключеный к LAN порту роутера и клиенты по WiFi.
Как посчитать клиентский трафик к серверу?!

Что прописать вместо:
iptables -t mangle -I FORWARD -i vlan1 -j selector
iptables -t mangle -I FORWARD -o vlan1 -j selector

j00e
05-09-2012, 09:01
Граждане пожалуйста, подскажите как сделать чтобы были дневные лимиты, а не месячные? как отредактировать файл limit.php?

koshak
11-10-2012, 19:46
у меня почем-то всё это дело не пашет
точнее даже не пашет примерно по двум причинам -
1. статистика не собирается потому что при установке всех пакетов с нового репозитория в папке /opt/bin нету того самого php, который должен запускать скрипт биллинга

4-59/5 * * * * root cd /opt/share/www/statistic/ && /opt/bin/php ./billing.php > /dev/null 2>&1
2. не пашет lighttpd, потому что во время старта отваливается mod_fastcgi, если кому интересно - вот лог

2012-10-11 22:26:44: (log.c.166) server started
2012-10-11 22:26:44: (mod_fastcgi.c.1365) --- fastcgi spawning local
proc: /opt/bin/php
port: 0
socket /opt/tmp/php-fastcgi.socket
max-procs: 4
2012-10-11 22:26:44: (mod_fastcgi.c.1389) --- fastcgi spawning
port: 0
socket /opt/tmp/php-fastcgi.socket
current: 0 / 4
2012-10-11 22:26:44: (mod_fastcgi.c.1103) the fastcgi-backend /opt/bin/php failed to start:
2012-10-11 22:26:44: (mod_fastcgi.c.1107) child exited with status 16 /opt/bin/php
2012-10-11 22:26:44: (mod_fastcgi.c.1110) If you're trying to run your app as a FastCGI backend, make sure you're using the FastCGI-enabled version.
If this is PHP on Gentoo, add 'fastcgi' to the USE flags.
2012-10-11 22:26:44: (mod_fastcgi.c.1397) [ERROR]: spawning fcgi failed.
2012-10-11 22:26:44: (server.c.945) Configuration of plugins failed. Going down.

кто-нибудь может помочь с настройкой?
или может быть есть ещё какой-нибудь способ мониторить трафик?
ограничение и запрет не нужны - интересна только статистика по айпишникам

Graf-dubna
12-10-2012, 06:18
Как вариант можешь попробовать устанавливать со старого репозитория. Сам ставлю только оттуда и всё окей.

Isourou
21-10-2012, 20:15
Проблема следующего плана: есть Asus WL-500 gpV2. в него сунута флешка на 2гб и расшарена как FTP. Интернет раздается по Wi-Fi с Мегафоновского ЮСБ модема. Необходимо на 2 ноутбука сделать посный доступ в интернет по Wi-Fi а еще одному ноутбуку сделать доступ только к FTP флешке а в интернет не пускать (доступ для соседа с которым мы часто файлами по работе обмениваемся. сосед этажем выше живет и к роутеру сможет свободно подключится). В гугле поискал решение, нашел только как ограничить доступ к роутеру в целом по мак адресам, но это вовсе не то, что мне нужно.

koshak
21-10-2012, 20:29
Как вариант можешь попробовать устанавливать со старого репозитория. Сам ставлю только оттуда и всё окей.
к сожалению не могу - в новом репозитории присутствует крайне нужный мне пакет n2n
пробовал сегодня параллельно с entware поставить php с optware - ничего не вышло, слишком много зависимостей, в итоге наткнулся на "can't resolve symbol '__ctype_b_loc'" при запуске php, с которым так и не понял что делать

acid
07-11-2012, 03:54
Здравствуйте всем!
Имею роутер Asus rt-n16, хочу сделать не хитрое правило, что бы несколько известных мне mac-адресов могли иметь доступ в и-нет/ЛС. Остальные - нет. На роутере сперва была родная прошивка 3.0.0.4.220, мучил, я там мучил, опцию "mac filter" и тупо ни чего не происходило, всё и у всех работало :) Затем прошил роутер на последнюю на текущий момент прошивку 3.0.0.4.246, в которой опция (в разделе LAN) "mac filter" - тупо пропала!! что делать?? люди добрые, подскажите.

П.С. если что в асусовской прошивки работает телнет, я к тому что не очень бы хотелось прошивать роутер на не родную прошивку....

Спасибо!

oxy-fox
20-11-2014, 20:14
Может кто знает что и где нужно подправить для RT-N66U? Не считает трафик.