Netmon Version 0.3 veröffentlicht

Benutzerseite, Karte und Routerseite in Netmon 0.3
Benutzerseite, Karte und Routerseite in Netmon 0.3

Hiermit veröffentlichen wir Netmon, eine Web-Applikation zur Verwaltung und zum Monitoring von Freifunk Netzwerken, in der Version 0.3. Mehr als drei Jahre und knapp 700 Commits liegen zwischen dem letzten und dem heutigen Release. In dieser Zeit hat sich viel getan. Insbesondere die Technik der Firmware für die Netmon bisher hauptsächlich entwickelt wurde hat sich in der Zwischenzeit mehrfach geändert. Von OLSR als Mesh-Protokoll zu B.A.T.M.A.N advanced, von IPv4 only zu IPv4+IPv6, von OpenVPN zu Tinc und weiter zu Fastd und viele weitere kleinere Änderungen wie der Wechsel von SVN auf Git.

Netmon wurde in der Zwischenzeit stetig an diese Änderungen angepasst. Das heutige Release legt den Fokus von Netmon auf fünf Kernbereiche deren Verwaltung und Monitoring Netmon unterstützen soll: Benutzer, Router, IP-Adressen, DNS und im Netzwerk angebotene Dienste wie z.B. Webseiten. Diese Kernbereiche sollen auch in Zukunft die Entwicklung bestimmen und werden auf der überarbeiteten Wiki-Seite von Netmon näher erläutert.

Vollständig neu in Netmon ist eine Web-API die dem REST-Standarf folgen soll und die die in Netmon vorgehaltenen Daten im XML-Format zur Verfügung stellt. Die Web-API ist noch nicht vollständig implementiert, jedoch lässt sich bereits jetzt ein großer Teil der vorgehaltenen Daten abrufen (siehe Artikel dazu vorab). In weiteren Schritten soll die Web-API zudem um Schreibfunktionen erweitert werden. Sie soll in Zukunft insbesondere die Fokussierung auf die fünf oben genannten Kernbereiche ermöglichen. Funktionalitäten die nicht in diese Kernbereiche fallen, sollen in Zukunft mit Hilfe der Web-API über externe Programme umgesetzt werden. Zu Demonstrationszwecken liegen dem Release im Ordner scripts/ zwei kleine Scripte bei, die die Web-API abfragen und Daten von Netmon für die FF3D-Map sowie die neue Freifunk.net-API aufbereiten.

Mit der Überarbeitung des Codes möchte ich Netmon  außerdem für weitere interessierte Entwickler öffnen. Zu diesem Zweck habe ich ein Development-HowTo veröffentlicht, das einen kleinen Einstieg in die Struktur des Codes gibt. Außerdem habe ich unser Projektmanagementsystem aufgeräumt und stehe auf der Entwicklermailingliste der Freifunk Community Oldenburg gerne für Fragen zur Verfügung.

Das nächste Release wird die Version 0.3.1 sein und ist für Anfang Oktober geplant. Mit diesem Release sollen ausschließlich dringende Bugs gefixed werden.

Download, Installation und Livedemo

Netmon 0.3 ist Freie Software unter der GPL und kann von unserem Webserver heruntergeladen werden.

Zur einfachen Installation bringt Netmon einen Web-Installer mit. Ergänzend dazu findet sich im Netmon-Handbuch eine Installationsanleitung, die bei der Installation behilflich sein soll und auch auf die weitergehenden Bereiche Cronjobs und Firmware-Anpassungen eingeht.

Eingesetzt wird Netmon aktuell in den Freifunk Communities Oldenburg und Franken. Deren Netmoninstallationen können unter den folgenden URLs aufgerufen werden:

Freifunkrouter in Sidebar der eigenen Website einbinden

Freifunkrouter in der Sidebar eines Wordpessblogs
Freifunkrouter in der Sidebar eines Wordpessblogs

Das Freifunknetzwerk Oldenburg hat schon knapp 50 Knoten, aber wir wünschen uns natürlich, dass das Netzwerk weiter wächst. Dazu müssen wir mehr Leuten von Freifunk erzählen und das tun wir am besten indem wir auf unseren eigenen Webseiten darüber berichten dass wir Freifunker sind.

Dazu gibt es nun ein kleines Iframe, das es erlaubt den Status des eigenen Freifunkrouters mit einem kleinen Infotext in die eigene Website einzubinden. Aktuell existiert dieses Iframe als kleines 200×450 Pixel großes Proof of Concept zum Einbinden in die Sidebar eines Blogs. In Zukunft werde ich aber auch noch einige andere Formate hinzufügen (bspw. eine Liste der eigenen Router oder ein etwas breiteres Iframe zum Einbinden in einen Blogbeitrag).

Der Code zum Nutzen des Iframes sieht wie folgt aus und kann bspw. über ein Text-Widget in eine WordPress-Sidebar eingefügt werden. Der Wert von router_id sollte natürlich durch die ID eines eignen Routers ersetzt werden. Man bekommt die Router-ID in Netmon in der Adressleiste seines Browsers angezeigt, wenn man auf seinen Router klickt:

<iframe width="200" height="450" src="https://netmon.freifunk-ol.de/status.php?router_id=78&embed=true" frameborder="0"></iframe>

Ich würde mich freuen wenn ihr hier einen kleinen Kommentar hinterlasst, falls ihr diese Funktion nutzt. Wer Anregungen oder wünsche hat, gerne ebenfalls hier in die Kommentare oder als Bugreport.

Neue Passwörter für Netmon

Netmons Loginfeld
Netmons Loginfeld

In den kommenden Stunden wird es einige Änderungen an unserem Monitoringportal Netmon geben, die für alle Benutzer relevant sind. So wird das interne Hashing der Benutzerpasswörter vom veralteten md5 auf bcrypt umgestellt. Außerdem wird die Bibliothek für den Open-ID Login ausgewechselt und die Remember-Me Funktion auf Basis eines guten Best-Practice Artikels an die neue Hashfunktion angepasst.

Im Zuge dessen verlieren alle bisherigen Passwörter ihre Gültigkeit. Alle Benutzer müssen sich selbst ein neues Passwort zusenden. Hierzu kann die Passwort-Vergessen Seite genutzt werden.

Nach erfolgreichem Login mit neuem Passwort kann das Passwort unter Benutzer->Einstellungen wieder auf auf ein selbst ausgesuchtes Passwort geändert werden. Sollte bei der Umstellung ein Fehler auftreten, können Bugs hier gemeldet werden.

Ein erster Blick auf die Netmon XML REST API

Ausschnitt aus der Antwort auf die Anfrage nach einer Routerliste
Ausschnitt aus der Antwort auf die Anfrage nach einer Routerliste

Wer die Commitlogs unseres Netzwerkverwaltungs und Monitoringportals Netmon aufmerksam verfolgt, dem wird aufgefallen sein, dass in Netmon aktuell eine neue Web API auf Basis des REST Standards entwickelt wird.

Ein bisschen konnten wir ja schon immer mit Netmon kommunizieren. Die Schnittstellen dafür bestehen aber nur aus einfachen CSV Strings was vorallem dem Umstand geschuldet ist, dass unsere Router bisher einfache Bash-Scripte nutzen um sich zu Netmon zu verbinden und das Parsen komplexer Datenstrukturen damit mindestens umständlich ist. Vor einiger Zeit haben wir uns dann entschieden, dass wir diese Scripte in Zukunft nach C/C++ portieren wollen.

Das eröffnet uns die Möglichkeit seitens der Router komplexere Datenstrukturen zu verarbeiten und damit auch seitens Netmon komplexere Datenstrukturen anzubieten ohne zwei verschiedene APIs dauerhaft warten zu müssen. Die Entwicklung der API steht noch am Anfang, jedoch möchte ich einen kleinen Teil hier bereits einmal vorstellen.

In Netmon und damit auch in der API gibt es verschiedenste Objekte. So gibt es Benutzer, IP-Adressen, Interfaces, Events und natürlich Router. Oftmals benötigt man aber nicht nur eines der Objekte, sondern eine ganze Liste an Objekten. Zum Beispiel alle Router. Und so gibt es neben den einzelnen Objekten auch noch eine ganze Reihe von Listen die eine Menge von Objekten enthalten, wie z.B. die Routerliste die ich im Folgenden vorstellen möchte. (mehr …)

Netmon RrdTool Datenbanken zurückgesetzt

Björn hat Netmon von einem 64 Bit auf einen 32 Bit Server umgezogen. Die RrdTool Datenbanken sind zwischen den Systemen aber leider nicht kompatibel weshalb er sie gestern Abend zurücksetzen mussten. Das hat zur Folge das es derzeit keine langfristigen Statistiken mehr bei Netmon gibt, da diese erst über die Zeit wieder generiert werden müssen. Also keine Panik, alles eine Frage der Zeit.

Netmon 0.2 beta 1

Nach über einem dreiviertel Jahr Entwicklungszeit seit Netmon 0.1 möchte ich euch heute die erste Betaversion von Netmon 0.2 vorstellen. Ob vor der endgültigen Veröffentlichung noch eine zweite Betaversion erscheinen wird, ist bisher nicht absehbar, da diese Betaversion bereits stabil im Produktiveinsatz bei uns läuft.

Netmon ist eine Webaplikation zur Verwaltung von Freifunk Netzen. Als Scriptsprachen kommen PHP und Smarty sowie als Datenbank  Mysql (intern über PDO) zum Einsatz. Netmon wird als freie Software von und für Freifunk Oldenburg entwickelt, mit dem Ziel auch in anderen Freifunknetzen einsetzbar zu sein. Netmon bietet umfangreiche Möglichkeiten Projekte und IP Adressen anzulegen, VPN-Netze zu verwalten sowie Karten und fertige Images zum Flashen zu generieren. Des Weiteren ist es möglich Funktionen über eine JSON-RPC-API nach außen verfügbar zu machen.

Ziel ist es, alle Daten zur Konfiguration des Netzwerkes für ein Klick Konfigurationen an einer Zentralen stelle zu Speichern und den Status des Netzwerkes zu visualisieren.

Die Entwicklung von Netmon orientierte sich bisher am aktuellen OpenWrt 8.09, dem Luci Webinterface sowie IPv4 und dem Routingprotokoll Olsr. Inspiriert wird Netmon vom veralteten FFSomething, der Verwaltungssoftware von WLAN Ljubljana und den Bedürfnissen der Oldenburger Freifunkcommunity.

In naher Zukunft stehen in unserem noch kleinen Netzwerk große Änderungen an. Wir wollen wenn möglich von IPv4 und Olsr auf IPv6 und B.A.T.M.A.N (welche Version ist noch unklar) umsteigen.
Welche Rolle Netmon dabei spielen wird ist noch unklar. Sicher ist aber, dass die Knoten aufgrund weitgehender Dezentralisierung des Netzwerks ihre Daten in Zukunft selbst an Netmon senden müssen. Das hat den Vorteil, dass wir noch genauere Informationen über das Netzwerk erhalten können (Traffic z.B.) und trotzdem den Dezentralisierungsgedanken von Freifunk ausbauen können.
Insbesondere im Hinblick auf IPv6 wird die klassische statische IP-Verwaltung an Bedeutung verlieren und Benutzerverwaltung sowie die Visualisierung und Bereitstellung von Statusinformationen an Bedeutung gewinnen.

Wann und wie diese Ideen umgesetzt werden, steht bisher in den Sternen. Dafür steht mit Netmon 0.2 Beta 1 eine relativ stabile Version zum Einsatz bereit.

Netmon 0.2 beta 1 kann direkt aus unserem SVN-Repository geladen werden:

svn export https://svn.freifunk-ol.de/netmon/Tags/netmon_0.2_beta_1

Über Feedback freue ich mich natürlich sehr. Auch Wenn du Interesse an der Entwicklung von Netmon hast, freue ich mich über deine Mitarbeit. Gerne darf Netmon auch als Inspiration oder Codequelle für andere Projekte genutzt werden.

Weitere Informationen:

Bye
Floh1111

Netmon 0.1 Vorstellung

Vor einigen Tagen ist unser Netzwerkverwaltungstool Netmon in der ersten Version 0.1 erschienen. Ich möchte die Gelegenheit Nutzen und Netmon einmal vorstellen.

Netmon wird seit Jannuar 2009 im Rahmen des jungen Oldenburger Freifunkprojekts entwickelt, und soll uns die Verwaltungs- und Monitoringarbeit abnehmen.
Netmon ist ein in Php und Smarty geschriebenes Verwaltungsportal für Freifunknetze, das eine Zentrale stelle zur Benutzer-, Node- und Diensteverwaltung bieten soll. Netmon soll sich dabei ausschließlich auf Verwaltung und Monitoring des Netzes konzentrieren und keine Wikiintegration o.Ä. bieten.

Das Bild unten visualisiert in etwa Netmon Hirarchie.

Ein Benuter kann sich am Portal anmelden und in den von Admins angelegten Subnetzen IP´s reservieren. Auf diesen IP´s wird wiederum mindestens ein Service angelegt. Ein Subnetz ist dabei die 3. Stelle der kompleten IP. Erste und zweite Stelle sind das Stadtpräfix. Eine sogenannte IP (Node) setzt sich aus 3. und 4. Stelle zusammen und ergibt im enteffekt die reale IP unter der ein Router im Netz erreichbar ist.

Zur weiteren Beschreibung einer IP gibt es 4 Servicetypen: Client, Node, VPN und Server. In der Regel ist eine IP ein Node. Das heißt die IP bietet einen Wlan-Hotspot an. Nun kann es aber sein, dass auf einem Router zusätzlich zum Node noch ein FTP-Server auf Port 21 läuft, der eine öffentliche Musiksammlung anbietet. Um das im Netz auf der Nodelist publik zu machen, kann man der IP einen Weiteren Service von Typ Server zuweisen.

Die Typen sind auch interessant beim Monitoring. Netmon prüft alle bekannten IP´s in regelmäßigen abständen auf Verfügbarkeit. Dabei kann Netmon von einem Service vom Typ Node die gesammten Statusdaten wie Geoposition, ESSID Routen oder Uptime holen und in einer Datenbank speichern. Ein Sevice vom Typ Service kann wiederum explizit auf einem Port (z.B. 21) auf verfügbarkeit geprüft werden. Dadurch ergibt sich eine genaue Übersicht was im Netz Verfügbar ist.

Aus den Vorhandenen Statusdaten generiert Netmon eine Map mithilfe der OpenLayer Bibliothek und OpenStreetmap. Unser Vorbild von dem wir leider noch sehr weit entfernt sind ist die Map aus Halle http://karte.freifunk-halle.net/

Ein weiteres Feature ist, dass man Subnetzen Daten zur erstellung eines VPN-Netzes mitgeben kann. So kann Netmon auf Befehl VPN-Zertifikate und VPN-Configs erstellen und als Zip zum Download anbieten. Diese müssen dann nur noch auf einem Router entpackt werden und schon ist dieser z.B. im Wolknverbindungs-VPN.

Netmon 0.1 soll ein erstes benutzbares proof of concept darstellen. Das heißt, es ist durchaus stabil und benutzbar, enhällt aber bei weitem noch nicht den geplanten oder notwendigen Funktionsumfang den wir uns wünschen. Daher auch die niedrige Versionsnummer.

Netmon 0.1 kann hier heruntergeladen werden: http://dev.freifunk-ol.de/netmon/0.1/
Weitere Informationen zu netmon gibt es bei uns im Wikiartikel über Netmon.
Da wir unser Netzwerk bereits erfolgreich mit Netmon verwalten, kann es hier auch live betrachetet werden.

Für Netmon 0.2 stehen einige größere Änderungen auf dem Plan:

  • Umstellung des Dateiaufbaus
  • Verbesserte Benutzerführung
  • Umstellung der SQL-Statements auf PDO
  • Support für Munin-Graphen
  • Installer
  • Einführung einer rudimentären API (Ausbau in 0.3)

Im Archiv der Berliner Mailingliste gibt es dazu noch weitere Informationen.

Da ich derzeit alleine arbeite, suche ich natürlich für alle bereiche (Php, JavaScript (Map), Design) noch interessierte Entwickler. Melde dich dazu unter clemens[at]freifunk-ol.de direkt bei mir.

Ich hoffe Netmon wird später einmal ein Portal, das neuen und alten Communities ein einfaches gutes Monitoringportal bietet.

Bye
Floh1111