weidner/archives/2022/04/

NetFlow

Mit NetFlow kann ich Informationen über IP-Datenströme via UDP exportieren, um sie an anderer Stelle zu sammeln und auszuwerten.

NetFlow

Die Systeme, welche die Informationen exportieren, heißen Probe oder Sonde, diejenigen, welche die Informationen sammeln, Kollektor (engl. Collector).

Die Informationen aus NetFlow kann ich

Ursprünglich kommt NetFlow von Cisco. Später wurde es von etlichen anderen Herstellern übernommen und seit einiger Zeit gibt es Open-Source-Implementierungen sowohl für Sonden als auch für Kollektoren. RFC 3954 beschreibt die Version 9 von NetFlow und RFC 3917 mit IPFIX einen Nachfolger dieser Version.

Mit sFlow (RFC 3176) gibt es eine Alternative zu NetFlow, die statistisches Sampling verwendet. Damit müssen weniger Daten exportiert werden, allerdings sind nicht so detaillierte Auswertungen möglich.

NetFlow-Proben werden üblicherweise auf Gateways platziert, es ist aber auch möglich mit geeigneter Software beliebige Systeme als Probe zu betreiben. Meist lässt sich einstellen, von welchen Schnittstellen Informationen über IP-Flows exportiert werden sollen.

Ein Kollektor kann NetFlow-Daten von mehreren Proben entgegennehmen, die an geeigneten Stellen im Netz platziert werden. Der benötigte Speicherplatz beim Kollektor hängt von der Anzahl der Proben, die Daten senden, der Menge an Datenströmen an den Proben und der Vorhaltezeit der gesammelten Daten ab.

Die CPU der Sonden wird für den Export der Daten belastet. Außerdem erzeugen die NetFlow-Daten zusätzlichen Traffic. Ob ich diesen Aufwand auf mich nehme, hängt davon ab, welche Fragen ich mit NetFlow beantworten will und ob die Antworten mir das wert sind.

Mit einem Paketmitschnitt bekomme ich detailliertere Daten als mit NetFlow. Bin ich jedoch nur an den Metadaten interessiert, das heißt wer kommuniziert mit wem, wann, wie viel, mit welchen Protokollen und Ports, dann habe ich bei NetFlow den Vorteil, dass diese Daten bereits vorliegen, ohne dass ich erst einen Mitschnitt anfertigen muss und außerdem für einige Zeit aus der Vergangenheit verfügbar sind.

Die folgenden konkreten Fragen habe ich bei der Fehlersuche bereits zufriedenstellend mit NetFlow beantworten können.

Manche dieser Fragen lassen sich auch aus dem Monitoring mit SNMP ablesen, doch lässt sich mit NetFlow einerseits der Traffic genauer aufschlüsseln und andererseits nachträglich ein kleineres Intervall für die Auswertung wählen, wenn auch mit höherem Aufwand bei der Auswertung.

Natürlich muss ich die Daten, die ich mit NetFlow gewinne, mit einer Prise Salz nehmen. So kann es passieren, dass ein stark ausgelastetes Gateway nicht alle IP-Ströme korrekt via NetFlow exportiert. Ich bin also gut beraten, die CPU-Auslastung der Sonde zu überwachen.

Die gleiche Überlegung gilt für die NetFlow-Diagramme, die via UDP an den Kollektor gesendet werden. Kommt es auf diesem Wege zu Paketverlusten, dann fehlen die Daten zu den exportierten Flows. Monitoring der Netzwerk-Interfaces zwischen Sonde und Kollektor hilft mir, dieses Problem zu berücksichtigen.

Und schließlich ist es möglich, dass der Kollektor selbst einzelne NetFlow-Records verliert. Sei es weil er die Daten nicht schnell genug von der Netzwerkschnittstelle abnehmen kann oder weil er sie nicht schnell genug auf die Platte schreiben kann. Auch hier bin ich gut beraten, den Kollektor zu überwachen und mögliche Probleme in Betracht zu ziehen.

Habe ich jedoch die potentiellen Probleme im Blick, dann ist NetFlow ein gutes Diagnosewerkzeug, dass mir in vielen Fällen wertvolle Dienste leisten kann.

Ein NetFlow-Kollektor mit grafischer Oberfläche ist nfdump mit dem webbasierten Frontend NfSen. Mit diesen kann ich relativ einfach Erfahrungen mit NetFlow sammeln. In einem Folgeartikel beschreibe ich, wie man diese beiden Werkzeuge installiert.

Updates

2022-05-14: Ergänzung zu nfdump und NfSen.

Posted 2022-04-09
Tags: