Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [HOWTO] Подсчёт трафика по ip на шлюзе (через iptables)  (Прочитано 24161 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн andreyos

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
могу дать доступ посмотреть, там все так, если не так то вытрешь под рутом все))))))) ну чтото раком смотрит, спасибо за пост подробный!!!

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Хорошо пост правила, но не люблю mysql и php, только у меня cgi-bin и bash скрипт нормально. =)
Wars ~.o

Оффлайн deFont

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
File "./traffic.py", line 24, in <module>
    ip = arIP
IndexError: list index out of range
При запуске скрипта .
Подскажите в чем проблема

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6846
    • Просмотр профиля
IndexError: list index out of range
посмотри, что у тебя в массиве, скорее всего он пуст, смотри почему он пуст.

Оффлайн vbaltern

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Спасибо, вроде эта штуковина заработала.
Но вопрос - откуда ограничение на недельный объем трафика 100 МБ ? Как его обойти?

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6846
    • Просмотр профиля
это просто объявление, чтобы не жировали сильно.
Поправь *.php как тебе надо же. Реально нет никакого ограничения, просто предупреждение, что если будет больше, я могу отключить инет.

Оффлайн nedovolnyi

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: [HOWTO] Подсчёт трафика по ip на шлюзе (через iptables)
« Ответ #36 : 23 Сентября 2012, 21:42:37 »
Отличная тема, к тому же все время попадается в поиске Гугла, если искать что-то типа "подсчет трафика Ubuntu". Имею проблемы при запуске скрипта на питоне, поскольку совершенно не программист:

Traceback (most recent call last):
  File "./calc.py", line 21, in <module>
    down = int(arByte[i + 1])
IndexError: list index out of range[/i]

Об этом вопрошали чуть выше, но ответа нет. Насколько я понимаю, скрипт выбирает из стандартного вывода все строчки с вхождениями типа "ip-адрес" + "байты ACCEPT". Вышеприведенная ругань видимо означает, что данных нет, хотя вывод не пуст:

171    42017 ACCEPT     all  --  br0    *       192.168.0.3         0.0.0.0/0
190    44828 ACCEPT     all  --  *      br0     0.0.0.0/0            192.168.0.3

Не могу понять, куда копать.


К вопросу не относится: чтобы попусту не засорять топик, позволю себе подкинуть пару рабочих идей (не автору темы, поскольку он видимо человек шарящий):

При желании заниматься фильтрацией трафика, к примеру, по портам, структура iptables должна будет иметь более замороченный вид. Если в данном примере дописать что-то типа
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT,
т.е. открыть локальный 80 порт для веб-сервера, скрипт видимо будет выбирать ненужные в данном случае строчки из вывода команды iptables -L -xnv:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts     bytes target     prot opt in     out     source               destination
 2        345   ACCEPT     tcp  --  *      *       192.168.0.0/24       192.168.0.1        tcp dpt:80

Дальше - больше, и подходящих вхождений может быть много. Поэтому есть минимум два вывода: строчку
cmd = 'iptables -L -vnx'
заменить на cmd = 'iptables -L FORWARD -vnx',
а в самой цепочке FORWARD не использовать других конструкций с директивой ACCEPT.

Оффлайн asnerd

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
а у меня политика входящая по умолчанию дропать:
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
и соответственно используется conntrack для входящих соединений и отрезание всего не нужного в FORWARD
$IPTABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
...
$IPTABLES -A FORWARD -p tcp -s $LAN_RANGE -m multiport ! --dports 80,25,53,143,110,443,445,465,995 -j DROP
и на выходе получается суммарный траффик
iptables -L FORWARD -vnx
...
Chain FORWARD (policy ACCEPT 5823 packets, 430578 bytes)
    pkts      bytes target     prot opt in     out     source               destination
  133001 119993632 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED
...

В таком случае не удается посчитать предложенным способом.
« Последнее редактирование: 11 Апреля 2013, 12:22:35 от asnerd »

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6846
    • Просмотр профиля
asnerd,
Естественно) Правь под свой случай)
Я вот скоро снова этот метод заюзаю, только опять же правила iptables повеселее будут, нужно будет доработать метод.

Оффлайн iDiablo

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
еще бы допилить, что бы можно было детальней, за период посмотреть какие домены посещал данный IP

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28375
    • Просмотр профиля
Домены - сомневаюсь, что возможно. На пакетном уровне эта информация отсутствует.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн k790

  • Участник
  • *
  • Сообщений: 218
    • Просмотр профиля
    • Компьютерная - Лаборатория
При запуске ошибка:
./python.py
Traceback (most recent call last):
  File "./python.py", line 80, in <module>
    gateway_up = int(gateway_up[0])
IndexError: list index out of range

У таблицы и у базы данных какие должны быть имена?

Пользователь решил продолжить мысль 05 Июля 2013, 14:14:19:
Сейчас скрипт обрабатывается без ошибок, но в базу данных ничего не пишется, куда копать?
« Последнее редактирование: 05 Июля 2013, 14:14:19 от k790 »

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6846
    • Просмотр профиля
k790,
правь скрипт так, чтобы видеть состояние переменных, ищи где пусто.

попробуй тестовую запись в базу, в ручную вписав поля для записи.

Оффлайн k790

  • Участник
  • *
  • Сообщений: 218
    • Просмотр профиля
    • Компьютерная - Лаборатория
⚡ Thunde® ⚡,
У тебя не может быть в скриптах ошибок?
1) в бд заносится криво статистика, то есть

idipuploaddownloadtimestamp
49192.168.0.1013079082013-07-06 21:30:17
50192.168.0.11690257602013-07-06 21:30:17

вместо одной строки используется две

2) в php морде показывает только статистику самого прокси
« Последнее редактирование: 06 Июля 2013, 21:40:42 от k790 »

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6846
    • Просмотр профиля
k790,
У меня все может быть, но как видишь на моих скринах пришло/ушло в одной записи в БД

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

 

Страница сгенерирована за 0.055 секунд. Запросов: 25.