
NetBox: sursa de adevar pentru infrastructura noastra (DCIM + IPAM)
Cel mai raspandit “IPAM” din industrie e un fisier Excel numit ip-uri-final-v3-FINAL.xlsx, pastrat pe desktopul cuiva care a plecat din companie acum doi ani. A doua cea mai raspandita metoda e cunostinta tribala: “acel /24 e al lui Andrei, dar Andrei acum e la alt job, asa ca intreaba-l pe Bogdan, care cred ca stie ce mai e liber.” Niciuna dintre ele nu are API, niciuna nu se valideaza singura, si niciuna nu-ti spune adevarul cand cineva a alocat manual o adresa fara sa updateze foaia.
NetBox (github.com/netbox-community/netbox , netboxlabs.com , licenta Apache-2.0) rezolva exact problema asta: e instrumentul open-source de facto pentru DCIM (data center infrastructure management) si IPAM (IP address management), combinate intr-un singur loc, interogabil prin API. Nu e doar un capriciu tehnic la noi: NetBox e CMDB-ul si IPAM-ul propriu al DreamServer, sursa de adevar pe care automatizarea noastra bazata pe Ansible o citeste (si scrie in ea) la fiecare provizionare. Cand ridicam o masina virtuala noua in clusterele noastre de virtualizare Proxmox, alocarea de IP si inregistrarea device-ului se intampla prin NetBox, nu intr-un cap de om sau intr-un fisier local. Inainte de NetBox, cunostinta despre infrastructura era tribala si foile de calcul erau deja invechite pana sa apuci sa le deschizi. Acum e interogabila, condusa de API, si automatizarea chiar citeste din ea.
Ce este, mai exact, NetBox
NetBox e o aplicatie web scrisa in Django, cu PostgreSQL ca baza de date, care modeleaza infrastructura ta fizica si logica: site-uri, rack-uri, dispozitive, cablaje, alimentare electrica, adrese IP, prefixe, VLAN-uri, VRF-uri, circuite de la providerii de transport, numere AS, masini virtuale si clusterele lor. Fiecare dintre aceste obiecte e conectat de celelalte: un device sta intr-un rack, rack-ul sta intr-un site, device-ul are interfete, interfetele au adrese IP, adresele IP apartin unor prefixe, prefixele apartin unor VRF-uri sau VLAN-uri. Nu e o baza de date plata cu randuri independente, e un graf al realitatii tale de retea.
De ce conteaza combinatia DCIM + IPAM
Majoritatea echipelor separa aceste doua lumi: un tool (sau o foaie de calcul) pentru “ce hardware avem si unde”, si alt tool (sau alta foaie de calcul) pentru “ce IP-uri sunt alocate cui”. Problema e ca cele doua lumi sunt de fapt aceeasi lume, vazuta din doua unghiuri. Un IP nu exista in vid, el e alocat unei interfete, care apartine unui device, care sta intr-un rack, care sta intr-un site. Cand DCIM si IPAM traiesc in acelasi model de date, poti intreba lucruri de genul “ce prefixe sunt libere in acest site” sau “ce device foloseste acest IP” fara sa faci join-uri mentale intre doua sisteme care nu se cunosc. Asta e conceptul de “sursa de adevar”: un singur loc unde intrebi si primesti raspunsul corect, nu doua locuri care se pot contrazice.
Ce primesti din cutie
NetBox vine cu modele de date gata construite pentru aproape tot ce inseamna infrastructura de datacenter si retea:
- Dispozitive, rack-uri, cabluri - inventarul fizic, cu pozitii exacte in rack si conexiuni cablu-cu-cablu documentate.
- Alimentare electrica - panouri, feed-uri, prize, cu putere alocata per device.
- Site-uri si locatii - ierarhie de facilitati, camere, randuri de rack-uri.
- Masini virtuale si clustere - pentru medii de virtualizare, ca sa nu tratezi VM-urile ca pe niste fantome fara evidenta.
- Adrese IP si prefixe - alocare ierarhica, cu status (activ, rezervat, deprecated) per adresa.
- VLAN-uri si VRF-uri - segmentare de retea documentata, nu doar configurata pe switch si uitata.
- Circuite si provideri - conexiunile de transport catre exterior si furnizorii care le opereaza.
- Numere AS - relevant daca operezi propriul spatiu de rutare, ca noi.
- API REST si API GraphQL - orice poti face din interfata web, poti face si programatic.
- Webhooks - evenimente declansate cand ceva se schimba, utile pentru sincronizari automate catre alte sisteme.
- Custom fields - extinzi modelele de date cu atribute specifice organizatiei tale, fara sa modifici codul.
- Change logging - istoric complet al modificarilor, cine a schimbat ce si cand.
Instalare NetBox pe un VPS
Calea realista de instalare azi e prin proiectul oficial netbox-community/netbox-docker, care aduce NetBox impreuna cu PostgreSQL si Redis (Redis e folosit pentru cache si cozi de task-uri, nu e optional):
git clone -b release https://github.com/netbox-community/netbox-docker.git
cd netbox-docker
# creeaza un fisier de override cu setarile tale (porturi, superuser, etc.)
cp docker-compose.override.yml.example docker-compose.override.yml
# porneste stack-ul: netbox, netbox-worker, postgres, redis, redis-cache
docker compose pull
docker compose up -d
# creeaza primul superuser
docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser
Compose-ul ridica toate containerele necesare (NetBox, worker-ul lui pentru task-uri asincrone, PostgreSQL, Redis). Daca expui portul aplicatiei direct pe un VPS, foloseste ufw (sau firewall-ul echivalent) ca sa limitezi accesul doar de unde ai nevoie, si pune un reverse proxy cu TLS in fata (Nginx sau Traefik) in loc sa lasi containerul expus direct. NetBox contine harta completa a infrastructurii tale, adrese IP incluse, deci nu e un serviciu pe care vrei sa-l lasi la vedere pe internet fara autentificare si criptare in tranzit. Daca vrei sa nu gestionezi tu partea de VPS, firewall si mentenanta OS, avem pagina de VPS
cu resurse dedicate pentru exact genul asta de aplicatie self-hosted.
Tipare de configurare care merita stiute
Modeleaza site-uri, rack-uri si dispozitive inainte sa arunci IP-uri in sistem
Cea mai frecventa greseala e sa incepi direct cu prefixele si adresele IP, ignorand ierarhia fizica. NetBox e mult mai util cand modelul e complet: site, apoi rack-uri, apoi dispozitive, apoi interfete, si abia dupa aceea IP-uri atasate interfetelor. Altfel ajungi cu un IPAM bun dar fara nicio legatura cu realitatea fizica, ceea ce e jumatate din valoarea pe care o pierzi.
Prefixe si VLAN-uri, consistent, de la inceput
Aloca prefixele ierarhic (un /24 parinte, apoi subretele copil pentru fiecare VLAN sau functie) si leaga fiecare VLAN de prefixul lui real. Cand faci asta consistent, NetBox iti arata instant ce spatiu e liber, ce e alocat si unde sunt suprapunerile, fara sa numeri manual randuri intr-un tabel.
Custom fields pentru metadate specifice organizatiei
O sa ai mereu date care nu se incadreaza in modelul standard: cine e proprietarul unui serviciu, un cod intern de proiect, o data de expirare a unui contract de hosting pentru un anumit rack. Custom fields iti permit sa extinzi orice model (device, prefix, VLAN, ce vrei) fara sa umfli baza de date cu campuri inutile pentru toata lumea. Rezista tentatia de a le pune in campul de descriere ca text liber, nu le poti interoga eficient asa.
Automatizare din API, nu editare manuala repetitiva
Asta e piesa care face din NetBox mai mult decat o baza de date frumoasa: cand automatizarea ta (Ansible, Terraform, orice altceva) citeste inventarul dinamic din NetBox si scrie inapoi alocari de IP prin API-ul REST sau GraphQL, datele raman mereu sincronizate cu realitatea, pentru ca automatizarea e cea care creeaza realitatea. Adaugi si webhooks daca vrei sa declansezi actiuni in alte sisteme (notificari, sincronizari, tichete) exact cand se schimba ceva in NetBox, in loc sa astepti pe cineva sa observe manual.
Unde NetBox nu e raspunsul potrivit
NetBox nu e un tool de monitorizare live a retelei. Nu iti va spune daca un switch e jos acum sau daca o interfata pica pachete; pentru asta ai nevoie de un sistem separat de monitorizare si alerting. NetBox descrie cum ar trebui sa arate infrastructura ta, nu cum se comporta ea in timp real.
Nu e nici un motor de automatizare sau de management de configurare in sine. E datele, nu executia. Poti sa-l folosesti ca sursa pentru Ansible, Terraform sau orice altceva, dar el nu aplica singur configuratii pe echipamente.
E overkill daca ai o mana de servere si o singura subretea. Beneficiul lui creste odata cu numarul de dispozitive, VLAN-uri si oameni implicati; sub un anumit prag, o foaie de calcul bine tinuta chiar poate fi suficienta pentru o vreme.
Si cel mai important: NetBox nu se auto-descopera singur. Nu scaneaza reteaua ta si nu isi umple modelele automat (exista integrari si scripturi pentru asta, dar nu e comportamentul default). Daca nu ai disciplina sa introduci datele corect de la inceput si sa le mentii actualizate cand faci schimbari manuale, ajungi cu o sursa de adevar care minte, ceea ce e mai rau decat sa nu ai deloc un IPAM, pentru ca acum lumea are incredere gresita in el.
Alternative pe care le-am luat in calcul
- phpIPAM - un IPAM mai usor, fara pretentii de DCIM, bun daca ai nevoie strict de gestiune de adrese IP fara rack-uri si dispozitive fizice.
- Racktables - orientat mai mult spre partea de DCIM (rack-uri, dispozitive, cablaje), cu IPAM ca functie secundara. Interfata e mai in varsta decat a NetBox, dar functioneaza.
- Nautobot - un fork al NetBox, aparut din aceeasi baza de cod, cu accent suplimentar pe plugin-uri si integrare cu platforme de automatizare de retea. Daca esti deja adanc in ecosistemul NetBox si ai nevoie de flexibilitate suplimentara de plugin-uri, merita comparat direct.
Am ramas la NetBox pentru ca ne acopera atat DCIM cat si IPAM in acelasi model de date, cu API matur si o comunitate mare in spate, ceea ce conteaza cand vrei sa integrezi cu automatizare proprie pe termen lung.
Deci, sa-l rulezi?
Daca gestionezi mai mult decat o mana de servere si simti ca infrastructura traieste in capul unei singure persoane (de multe ori chiar al tau), NetBox merita instalat inainte sa devina o problema, nu dupa. Il poti pune sus rapid pe un VPS cu resurse dedicate, in spatele unui reverse proxy cu TLS. Daca vrei ca cineva sa se ocupe de partea de sistem de operare, firewall si actualizari in timp ce tu te concentrezi pe modelarea infrastructurii tale, echipa noastra de administrare servere poate prelua exact partea aia. Si daca esti in faza de a-ti pune ordine in intreaga retea , NetBox e locul de unde incepi sa scrii adevarul in loc sa-l tii minte.