Ipv6

監控 IPv4 與 IPv6 流量

  • April 26, 2017

我們有一個功能齊全的雙棧網路在我們的業務中執行。有沒有人找到一個簡單的工具來監控給定主機上的 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 的補充。

我已經這樣做了,並且已經有一段時間了,使用munin和我自己編寫的自定義外掛,它從iptables審計規則中獲取數據。它在 C6 盒子上執行,所以如果沒有人有更好的想法,你應該能夠將它叉車就位。這不是您想要的簡單的單線,但它正在工作,並產生如下數據:

網路吞吐量的 munin 圖

該外掛很簡單,它只從創建的兩個平面文件中獲取數據/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是停止需要以root權限執行的munin外掛;如果您不介意這樣做,您可以讓外掛通過呼叫iptables自身來直接獲取數據包計數。

這些計數不會在重新啟動後繼續存在(因此上圖中的額外下拉為零),但如果您將伺服器設置為在重新啟動時保存iptables規則和數據包計數,這不會影響您。

引用自:https://serverfault.com/questions/556124