NIPAP - The Neat IP Address Planer

Schonmal mehr als nur ein einziges /24 IPv4 Netz verwaltet?

Admins mit größeren oder gar mehreren Prefixen kennen den Aufwand und die organisatorischen Probleme, die die Verwaltung solcher Adressräume mit sich bringt. Große Adressräume werden meist in Subnetze zerteilt und den verschiedensten Aufgabenbereichen zugewiesen. Um nicht alle IPs in einem großen Adressraum durcheinander zu würfeln, werden kleinere Adressräume reserviert, aus denen später bei Bedarf IPs vergeben werden. Durch die Reservierungen sollen aber keine allzu großen ungenutzten Löcher im Adressraum entstehen.

Tools für die Verwaltung von Layer-3 Netzen, gibt es unzählige.
Neulich bin ich auf eins gestoßen, dass ich sehr gerne weiterempfehlen möchte - NIPAP.


NIPAP steht für 'Neat IP Address Planer' und das Tool wird seinem Namen gerecht. In seinem Kern handelt es sich um ipaddr-py, dass mit einer praktischen Google Suchmaske versehen ist, doch nach genauerem Hinsehen entdeckt man einige richtig ausgeklügelte Features, die einem die Arbeit echt erleichtern.

Neben einem Web-Frontend, wird ein CLI mitgeliefert, was sich leicht in Scripte einbetten lässt. Zum Einpflegen von Daten, werden die Meisten wohl das Web-Frontend benutzen.

Alt Text


Ausprobieren

Auf Derivaten von Debian lässt sich NIPAP ohne Probleme kurz und schmerzlos anschauen. Einfach das APT-Repo hinzufuegen und installieren:

echo "deb http://spritelink.github.io/NIPAP/repos/apt stable main extra" > /etc/apt/sources.list.d/nipap.list
apt-get update
apt-get install nipapd nipap-common nipap-www nipap-cli python-pynipap

Die RPM Benutzer müssen sich ihre Packete mithilfe des mitgelieferten Makefiles selbst bauen:

cd /tmp
virtualenv nipap
cd nipap
source bin/activate
pip install docutils pypi2rpm 
git clone git://github.com/SpriteLink/NIPAP.git
cd NIPAP
make buildrpm
rpm -ivh *.rpm

NIPAP richtet wärend der Installation die benötigte Postgres Datenbank ein und legt seine Config nach /etc/nipap/.


Objekt-Typen

NIPAP kennt die folgenden Objekt-Typen:

  • VRF

    Steht für Virtual Routing and Forwarding. Es ist das Root-Object aller Reservations. Die Meisten von euch werden hier eure AS eintragen.

  • Reservations

    Reservations sind zusammenhängende Adressräume, die keinen bestimmten Verwendungszweck haben, wohl aber existieren. Sie dienen als Container-Objekte fuer Assignments oder andere Reservations.

  • Assignment

    Assignments liegen immer in Reservations. Ein Assignment ist ein zusammenhängender Adressraum, der für einen bestimmten Verwendungszweck vorgesehen ist. Es besteht aus einem Prefix und einem Verwendungszweck.

Alt Text

  • Hosts

    Ein Host liegt immer in einem Assignment; er hat einen Node-Namen und eine IP-Adresse.

  • Pools

    Ein Pool ist ein weiteres Container-Objekt. Allerdings können in Pools auch nichtzusammenhängende Adressräume zusammengefasst werden. Wenn beispielsweise fuer alle Kunden-IPs die Prefixe 192.168.1.0/24 und 192.168.42.0/24 zur Verfügung stehen, so können diese im Pool 'Kunden' zusammengefasst werden.

Neue Objekte lassen sich mit wenigen Klicks und einem benutzerfreundlichen AJAX-Frontend hinzufügen. Die Bedienung ist sehr intuitiv, die Lernkurve progressiv (vorausgesetzt, man bringt das entsprechende Hintergrundwissen mit). Im Handumdrehen sind die existierenden Assignments und Hosts eingepflegt und der Admin muss sich nie wieder Gedanken um die Verwaltung seiner Adressräume machen.

Alt Text