Jump to content
Калькуляторы

iptables>snmp>rrdstats рисование правил iptables

Помогите... можно ли с iptables правил вытянуть счетчики трафика, и вывести их на график через snmp? например как с обычного eth или vlan.

нужен только INPUT

 

root@s1:~# iptables -L INPUT --line-numbers -nv

Chain INPUT (policy ACCEPT 96M packets, 9453M bytes)

num pkts bytes target prot opt in out source destination

1 0 0 ACCEPT tcp -- * * 10.1.1.1/29 0.0.0.0/0 tcp dpt:4444

2 61M 2744M ACCEPT tcp -- * * 192.168.0.1/24 0.0.0.0/0 tcp dpt:4444

3 54398 4488K fail2ban-ssh tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22

4 3501K 140M ACCEPT tcp -- * * 192.168.1.1/24 0.0.0.0/0 tcp dpt:4444

5 47M 2132M ACCEPT tcp -- * * 192.168.2.1/24 0.0.0.0/0 tcp dpt:4444

Share this post


Link to post
Share on other sites

Помогите... можно ли с iptables правил вытянуть счетчики трафика, и вывести их на график через snmp? например как с обычного eth или vlan.

нужен только INPUT

Думаю, что можно. Как вариант, используя "свои" OIDs.

Снимаю таким образом данные с UPS-ов.

В snmpd.conf машины с iptables добавляете что-то типа того

# UPS
extend .1.3.6.1.4.1.2021.401 upsVoltage /usr/local/sbin/ups_voltage.sh
#

Скрипт

[root@router sbin]# cat ups_voltage.sh
#!/bin/bash
#
#
/usr/bin/upsc APC2000@localhost input.voltage
/usr/bin/upsc APC2000@localhost output.voltage
/usr/bin/upsc APC2000@localhost battery.voltage
/usr/bin/upsc APC2000@localhost ups.load
/usr/bin/upsc APC2000@localhost ups.temperature
/usr/bin/upsc -l
#

Ну и забираем этот OID в кактусе.

Для вашего случая потребуется в скрипте правильно отпарсить счетчики в выводе iptables -L INPUT --line-numbers -nv.

 

P.S. Интересно, а для каких целей Вам это нужно?

Edited by AlKov

Share this post


Link to post
Share on other sites

иптв ...

нужно видеть сколько, когда каждая подсеть смотрит

Share this post


Link to post
Share on other sites

иптв ...

нужно видеть сколько, когда каждая подсеть смотрит

Гм.. Не понял.. А зачем тогда INPUT анализировать? FORWARD наверное должно быть, или OUTPUT, если машина является "вещателем" тв по требованию.

Или Вас интересует кол-во потребителей в "штуках"? Тогда причем тут счетчики трафика?

Share this post


Link to post
Share on other sites

хз... я и сам запутался

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

2 61M 2744M ACCEPT tcp -- * * 192.168.0.1/24 0.0.0.0/0 tcp dpt:4444

4 3501K 140M ACCEPT tcp -- * * 192.168.1.1/24 0.0.0.0/0 tcp dpt:4444

5 47M 2132M ACCEPT tcp -- * * 192.168.2.1/24 0.0.0.0/0 tcp dpt:4444

 

graph2.cgi_240.jpgi.gif

тут я вижу все гамузом, хотелось его разбить на 3 графика

Edited by Sided

Share this post


Link to post
Share on other sites

хз... я и сам запутался

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

Ну так Вы определитесь, КАК трафик, который Вас интересует, проходит через машину с iptables. Если Вы просто транслируете ТВ через IP, то это явно будет "транзит", т.е. "FORWARD" в понимании iptables. Если же Вы являеетесь "вещателем ТВ", то это будет "OUTPUT" для "машины-вещателя".

Я так понимаю, что у Вас используется "транзит".

 

P.S. Сам IPTV, слава Богу, не занимаюсь (ИМХО, эта услуга не имеет перспективы), моя компания предоставляет абонентам обычное аналоговое ТВ, плюс "цифровое", но НЕ по IP, а в том же коаксиале (для конечного пользователя). Посему, конкретных рекомендаций дать не могу..

Share this post


Link to post
Share on other sites

да услуга эта один гемор.

Данный сервер и есть стример, там же стоит релей с udp на http {udpxy}

iptables все запрещено

что бы дать доступ пишу

iptables -I INPUT -p tcp -s 192.168.0.0/24 --dport 4444 -j ACCEPT

в гугле нашел что то типа этого

#!/bin/bash

case "$1" in

-g)

ifconfig | grep "inet addr" | awk '{print $2}' | awk -F: '{print $2}'

;;

 

-i)

ipcount=`ifconfig | grep "inet addr" | awk '{print $2}' | awk -F: '{print $2}' | wc -l`

for i in `seq 1 $ipcount`; do

echo $i;

done

exit $ipcount # this is the value at OID .1.3.6.1.4.1.2021.49.42.100.1

;;

 

*)

exit 254

;;

esac

 

но это пока для меня сложно

Share this post


Link to post
Share on other sites

Общая идея дана в первом же ответе - парсить вывод iptables и пихать это в кастомный OID, если для вас это сложно, то найдите студента, который это сделает за еду и прикрутит в snmpd.

 

Поскольку я не студент, то готов решить вашу задачу не за еду, а всего за 100$, если интересно, пишите в личку.

 

HINT: модные iptables умеют xml

Share this post


Link to post
Share on other sites

))

Спасибо и на этом!

100уе!? Блин где взять голодного толкового студента? ))

попробую осилить

Share this post


Link to post
Share on other sites

Блин где взять голодного толкового студента? ))

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this