Мониторинг IPv4 против трафика IPv6
В нашем бизнесе работает полнофункциональная сеть с двумя стеками. Кто-нибудь нашел простой инструмент для мониторинга соотношений трафика IPv4 против IPv6 на данном хосте? Когда я говорю "просто", я имею в виду демон / сервис, похожий на "vnstat"
Идеальный отчет в его простейшей форме будет выглядеть примерно так:
Total IPv4 IPv6 Ratio
This Month: 300gb 100gb (33%) 200gb (66%) 1:2
This Week: 5gb 1gb (20%) 4gb (80%) 1:4
Today: 1.2gb 400mb (33%) 800mb (66%) 1:2
Простите, если какая-то из моих математик не так, поэтому я хочу инструмент;)
В первую очередь меня интересуют хосты Linux (CentOS 6), но любые инструменты Windows (2008R2) тоже были бы полезны.
Я нашел тему, предлагающую netstat -s -6 | grep -i octets
но -6
опция недействительна в CentOS 6; Я предполагаю, что это недавнее дополнение к netstat.
2 ответа
Я уже делаю это и уже некоторое время использую munin и собственный плагин, который я написал сам, который получает данные от iptables
правила аудита. Он работает на коробке C6, так что вы должны иметь возможность погрузить его на место, если у кого-то нет идей получше. Это не простая однострочная строка, которую вы хотели, но она работает и выдает такие данные:
Плагин достаточно прост, он просто берет данные из двух плоских файлов, созданных в /var/tmp
:
#!/bin/bash
#
# (c) Gatekeeper Technology Ltd., 2013
# May be used under the terms of GPLv3 or, at your discretion, any later version
if [ "$1" = "config" ]; then
echo 'graph_title Network Throughput'
echo 'graph_category network'
echo 'graph_info This is the total throughput on the NIC since the beginning of the calendar month, or the last reboot, whichever was mo
st recent.'
echo 'graph_vlabel bytes'
echo 'graph_args --logarithmic'
echo 'in4.label in v4'
echo 'in4.colour ff0000'
echo 'out4.label out v4'
echo 'out4.colour 00ff00'
echo 'in6.label in v6'
echo 'in6.colour aa0088'
echo 'out6.label out v6'
echo 'out6.colour 00aa88'
echo 'total.label total'
echo 'total.colour 0000ff'
exit 0
fi
out=`head -3 /var/tmp/audit.out.counts | tail -1 | awk '{print $2}'`
echo "out4.value $out"
in=`head -3 /var/tmp/audit.in.counts | tail -1 | awk '{print $2}'`
echo "in4.value $in"
out6=`head -3 /var/tmp/audit.out.v6.counts | tail -1 | awk '{print $2}'`
echo "out6.value $out6"
in6=`head -3 /var/tmp/audit.in.v6.counts | tail -1 | awk '{print $2}'`
echo "in6.value $in6"
total=$(($in+$out+$in6+$out6))
echo "total.value $total"
Запись в crontab, которая делает их похожими на это:
# output the audit rule counts for munin purposes
* * * * * /sbin/iptables -L AUDIT-I -n -x -v > /var/tmp/audit.in.counts
* * * * * /sbin/iptables -L AUDIT-O -n -x -v > /var/tmp/audit.out.counts
* * * * * /sbin/ip6tables -L AUDIT-I -n -x -v > /var/tmp/audit.in.v6.counts
* * * * * /sbin/ip6tables -L AUDIT-O -n -x -v > /var/tmp/audit.out.v6.counts
# and zero the counts once a month
0 0 1 * * /sbin/iptables -Z AUDIT-I
0 0 1 * * /sbin/iptables -Z AUDIT-O
0 0 1 * * /sbin/ip6tables -Z AUDIT-I
0 0 1 * * /sbin/ip6tables -Z AUDIT-O
и iptables
правила сделаны со следующим /etc/sysconfig/iptables
правила:
:AUDIT-I - [0:0]
:AUDIT-O - [0:0]
# audit input traffic
-A INPUT -i eth0 -j AUDIT-I
[ALL OTHER INPUT RULES APPEAR HERE, AFTER THE AUDIT RULE]
# audit outbound traffic
-A OUTPUT -o eth0 -j AUDIT-O
[ALL OTHER OUTPUT RULES APPEAR HERE, AFTER THE AUDIT RULE]
# AUDIT rules
-A AUDIT-I -p all
-A AUDIT-O -p all
Причина crontab
участвует в том, чтобы остановить плагин munin, необходимый для запуска с привилегиями root; если вы не возражаете против этого, вы можете получить плагин для получения количества пакетов напрямую, вызвав iptables
сам.
Счетчик не переживает перезагрузку (отсюда и дополнительное падение до нуля на графике выше), но если ваш сервер настроен на сохранение iptables
правила и количество пакетов при перезагрузке, это не повлияет на вас.
Вы можете попробовать этот плагин Munv для IPv6 на GitHub: