Das Munin Monitoring Paket auf Ubuntu LTS (10.04, lucid) bringt unter anderem ein nettes Plugin zum iptables basierten Traffic Monitoring mit:
ip_
Nett ist es deshalb, weil es die getrennte Trafficüberwachung pro IP Adresse ermöglicht.
So kann z.B. auch der ipv4 und ipv6 Traffic auf dem selben Interface schön auseinander sortiert werden.
Weniger schön: das Plugin ist mit von Haus aus schon am Server laufenden Firewalls, auch der ufw (Uncomplicated FireWall), nicht kompatibel.
Im folgenden Beispiel wird gezeigt, wie es trotzdem klappt:
- Plugin aktivieren (verlinken)
- Plugin konfigurieren
- ufw before.rules anpassen
- Plugin testen
- Munin durchstarten
Voraussetzung ist: ufw und Munin laufen bereits einwandfrei und ipv6 ist am System und auch in der Firewall aktiv.
Die IP Adressen seien in diesem Beispiel 12.34.56.78 und 2a00:1450:8007::6
ln -s /usr/share/munin/plugins/ip_ /etc/munin/plugins/ip_12.34.56.78
ln -s /usr/share/munin/plugins/ip_ /etc/munin/plugins/ip_2a00:1450:8007::6
Hoppla, Problem: auf lucid steckt ein Bug im ip_ Plugin (Syntaxfehler bei ipv6).
Deshalb auf Ubuntu lucid statt der zweiten Zeile:
cp /usr/share/munin/plugins/ip_ /etc/munin/plugins/ip_2a00:1450:8007::6
Dann mit einem Editor öffnen und
eval 'function iptables() { <- BUG!
ersetzen durch
eval 'iptables() {
Für die beiden IPs brauchen wir auch eine passende Konfiguration in /etc/munin/plugin-conf.d/munin-node:
[ip_*]
user root
[ip_12.34.56.78]
env.input ufw-before-input
env.output ufw-before-output
[ip_2a00:1450:8007::6]
env.input ufw6-before-input
env.output ufw6-before-output
Der "user" Teil ist schon vorhanden. Wir ergänzen hier die chains, in denen das Plugin suchen soll. Default wären das INPUT und OUPUT, die aber in der ufw nicht verwendet werden.
Als nächstes müssen wir die ufw before.rules und before6.rules in
/etc/ufw/ entsprechend anpassen:
# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT
# needed for munin monitoring:
-A ufw-before-input -d 12.34.56.78
-A ufw-before-output -s 12.34.56.78
# quickly process packets for...
Der orange Teil muss in before.rules ergänzt werden (für ipv4)
# allow all on loopback
-A ufw6-before-input -i lo -j ACCEPT
-A ufw6-before-output -o lo -j ACCEPT
# needed for munin monitoring:
-A ufw6-before-input -d 2a00:1450:8007::6
-A ufw6-before-output -s 2a00:1450:8007::6
# for stateless autoconfig...
Der orange Teil muss in
before6.rules ergänzt werden (für ipv6)
Danach die ufw durchstarten.
ufw disable && ufw enable
Jetzt sollte das Plugin eigentlich schon Werte ausgeben. Wir testen das mit:
munin-run ip_12.34.56.78
munin-run ip_2a00:1450:8007::6
Wenn alles geklappt hat, kann Munin durchgeladen werden.
reload munin-node
(Munin ist auf lucid schon zu Upstart konvertiert. Es funktioniert aber auch der "normale" Weg über
/etc/init.d/munin-node reload.)