NetDoc: analisi e documentazione di rete automatizzata

Andrea Dainese
28 Agosto 2022
Post cover

Anni fa ho lavorato a un progetto di migrazione di un data center. Ero responsabile della revisione della documentazione di rete e dell’automazione delle fasi di configurazione, test e migrazione. Non era possibile rivedere manualmente dozzine di switch, quindi ho scritto alcuni script Python per ottenere informazioni di vicinato e configurazione dagli switch, generando diagrammi Visio. Alla fine, sono riuscito a scoprire un’intera topologia di rete in pochi minuti.

NetDoc sarebbe lo strumento open-source industrializzato disponibile pubblicamente per la scoperta di reti multi-vendor. Si basa su Netbox, Netmiko, nornir, ntc-templates e netbox-topologyi-views.

Un passo successivo vedrebbe l’integrazione di draw.io in netbox-topology-views per esportare i diagrammi in un formato riutilizzabile.

Installazione

NetDoc richiede un’istanza funzionante di netbox. Consultare come installare netbox, quindi consultare come installare NetDoc. In questo post sto usando netbox 3.3.2.

Se lo trovi utile, non dimenticare di sponsorizzarlo.

Utilizzo

Una volta effettuato l’accesso, dobbiamo creare un sito. Poi andiamo su Plugin -> Netdoc -> Credenziali e aggiungiamo o importiamo tutte le credenziali utilizzate per accedere ai dispositivi di rete. Possiamo anche importare via CSV utilizzando il seguente formato:

name,username,password,enable_password
ssh-admin-w-enable,admin,C1sco123,C1sco123
ssh-admin-wo-enable,admin,C1sco123,

Quindi dobbiamo aggiungere/importare almeno un discoverable. Un discoverable è un nodo di rete da cui NetDoc può recuperare informazioni. Anche in questo caso possiamo importare via CSV utilizzando il seguente formato:

address,credential,mode,site
172.25.82.38,ssh-admin-w-enable,netmiko_cisco_nxos,Test Site
172.25.82.37,ssh-admin-w-enable,netmiko_cisco_nxos,Test Site
172.25.82.36,ssh-admin-w-enable,netmiko_cisco_nxos,Test Site
172.25.82.35,ssh-admin-w-enable,netmiko_cisco_nxos,Test Site

Dobbiamo modificare questi dispositivi e renderli discoverable. Ora possiamo avviare la scoperta, selezionando uno o più discoverable e premendo il pulsante.

Discoverables

Possiamo seguire il processo di scoperta utilizzando journalctl:

# journalctl -u netbox-rq -f
Aug 28 19:54:55 linux-station python3[306570]: multiple_tasks*******************
***********************************************
Aug 28 19:54:55 linux-station python3[306570]: * 172.25.82.35 ** changed : False
 **********************************************
Aug 28 19:54:55 linux-station python3[306570]: vvvv multiple_tasks ** changed :
False vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv INFO
Aug 28 19:54:55 linux-station python3[306570]: ---- show running-config ** chang
ed : False ------------------------------------ INFO
Aug 28 19:54:55 linux-station python3[306570]: Building configuration...
Aug 28 19:54:55 linux-station python3[306570]:
Aug 28 19:54:55 linux-station python3[306570]: Current configuration : 3662 bytes
Aug 28 19:54:55 linux-station python3[306570]: !
Aug 28 19:54:55 linux-station python3[306570]: ! Last configuration change at 12:00:59 UTC Wed Jul 13 2022
Aug 28 19:54:55 linux-station python3[306570]: !
Aug 28 19:54:55 linux-station python3[306570]: version 15.2

Gli script di scoperta dovrebbero popolare i seguenti elementi in netbox:

  • Devices
  • Manufacturers
  • Interfaces
  • Cables
  • IP Addresses
  • Prefixes
  • VRFs
  • VLANs

Inoltre, nuovi discoverable rilevati tramite i protocolli CDP/LLDP verranno aggiunti automaticamente: potranno essere scoperti dopo la revisione dell’indirizzo IP e del metodo di scoperta.

New discoverables

Il processo di scoperta dovrebbe associare un Dispositivo a ciascun discoverable, ma nel caso in cui ciò non accada (ad es. Cisco XR), possiamo associarli manualmente.

Informazioni aggiuntive

NetDoc scoprirà anche la tabella ARP, la tabella degli indirizzi MAC e la tabella di routing di ciascun discoverable.

MAC Address Table

Infine, tutti i dati (log) recuperati dai discoverable vengono memorizzati e possono essere consultati:

  • Il flag Configuration viene impostato se il log contiene la configurazione del discoverable.
  • Il flag Success viene impostato se il comando ha restituito un output valido.
  • Il flag Parsed viene impostato se l’output è stato analizzato con successo.
  • Il flag Ingested viene impostato se l’output analizzato è stato inserito in netbox.

NetDoc logs

Topologia di rete L2

Utilizzando CDP e LLDP, NetDoc può scoprire adiacenze L2. Per ogni adiacenza viene creato un cavo:

NetDoc cables

Utilizzando il plugin netbox-topologyi-views possiamo generare automaticamente topologie L2. Ogni dispositivo può essere associato a un’immagine specifica utilizzando l’attributo Device Role. I ruoli dispositivo devono essere creati con uno dei seguenti slug:

  • access-switch
  • backup
  • core-switch
  • distribution-switch
  • firewall
  • internal-switch
  • isp-cpe-material
  • non-racked-devices
  • power-units
  • role-unknown
  • router
  • server
  • storage
  • wan-network
  • wireless-ap

Aprendo Plugins -> Topology Views possiamo visualizzare un diagramma di topologia L2:

L2 topology

netbox-topology-views attualmente funziona solo con netbox 3.2.

Topologia di rete L3

Durante la mia valutazione di rete, ho avuto la necessità di generare diagrammi di topologia L3. Ho forkato netbox-topologyi-views, implementando la funzione di cui avevo bisogno:

L3 topology

Il diagramma L3 è compatibile con VRF: è necessario aggiornare manualmente VRF nei Prefissi (e anche negli Indirizzi IP).

Conclusions

NetDoc è in versione alpha. Attualmente supporta solo dispositivi Cisco ma può essere esteso. Anche se è un software alpha, mi sta facendo risparmiare molto tempo.

Se vuoi contribuire, scrivimi un messaggio. Non mi considero uno sviluppatore software e ci sono (sicuramente) molti bug.

Riferimenti