Domanda

Di recente sono stato contattato da un ingegnere di rete, un collega che vorrebbe trasferire i suoi doveri amministrativi di rete minori a una tecnologia di helpdesk di livello junior. La posizione specifica che necessita della gestione funge da ISP per gli inquilini nella sua proprietà a sito singolo, quindi vengono apportate molte piccole modifiche su base giornaliera.

Sto pensando che sarebbe utile scrivergli un'app winform per gestire i 32 dispositivi Cisco, sul posto. Vorrei inizialmente fornire funzionalità che potrebbero modificare elenchi di controllo di accesso, assegnazioni di porte VLAN e limiti di larghezza di banda per VLAN ... aggiungendo altro all'elenco come ritenuto utile.

Il mio pensiero iniziale era di emulare una sessione Telnet con il dispositivo di rete; utilizzando la familiarità del mio ingegnere di rete con l'interazione da riga di comando / IOS. Il minimo tempo necessario per apprendere da solo le convenzioni Cisco IOS.

Sebbene durante la ricerca di soluzioni, sembra che la maggior parte delle persone preferisca SNMP. Questo, o le loro circostanze specifiche, li hanno spinti nella direzione di SNMP.

Volevo sapere se ho trascurato un ovvio vantaggio di SNMP. Dovrei usare SNMP? Perché o perché no?

È stato utile?

Soluzione

SNMP è ottimo per ottenere informazioni in uscita su un dispositivo Cisco, ma non è molto utile per controllare il dispositivo. (sebbene tecnicamente, puoi inviare una nuova configurazione a un dispositivo Cisco IOS usando una combinazione di SNMP e TFTP. Ma inviare una configurazione completamente nuova è uno strumento piuttosto smussato per controllare il tuo router o switch).

Uno degli altri commentatori ha menzionato l'API XML Cisco IOS XR. È importante notare che l'API XML IOS XR è disponibile solo su dispositivi che eseguono IOS XR. IOS XR viene utilizzato solo su alcuni dispositivi Cisco di fascia alta di classe carrier, quindi per il 99% di tutti i router e switch Cisco l'API XML IOS XR non è un'opzione.

Altre possibilità sono SSH o HTTP (molti router Cisco, switch, AP, ecc. hanno un'interfaccia web opzionale). Ma consiglierei contro uno di questi. Per quanto ne so, l'interfaccia Web non è molto coerente tra i dispositivi e un numero piuttosto sorprendente di dispositivi Cisco non supporta SSH o almeno non lo supporta nella licenza di base.

Telnet è davvero l'unica strada da percorrere, a meno che tu non stia prendendo di mira solo una piccola gamma di modelli di dispositivi. Per darti qualcosa a cui confrontare, il software di gestione della rete Cisco Cisco di Cisco utilizza Telnet per connettersi ai dispositivi gestiti.

Altri suggerimenti

Non userei SNMP, ma guarderei un po 'di lingua chiamata' prevede '. è un ottimo processore attesa / risposta per questi router.

Ho fatto una quantità ragionevole di programmazione SNMP nel mondo reale con switch Cisco e ho trovato Python in cima a Net-SNMP abbastanza ragionevole. Ecco un esempio, tramite Google books, del caricamento di una nuova configurazione Cisco tramite Net-SNMP e Python: Cisco Switch Upload via Net-SNMP e Python . Dovrei rivelare di essere il coautore del libro a cui si fa riferimento nel link.

Il chilometraggio di tutti può variare, ma personalmente non mi piace usare prevede e preferisco usare SNMP perché è stato effettivamente progettato per essere un "semplice protocollo di gestione della rete". In un pizzico, aspettarsi è ok, ma non sarebbe la mia prima scelta. Uno dei motivi per cui alcune aziende si aspettano è che uno sviluppatore si abitui a utilizzare aspettarsi. Non rischierei necessariamente di bypassare SNMP solo perché c'è un esempio di qualcuno che automatizza telnet o ssh. Provalo prima per te.

Ci possono essere alcune cose davvero orribili che accadono con aspettarsi, che potrebbe anche non essere ovvio. Perché aspettarsi che vengano immessi input, nelle giuste condizioni ci sono problemi molto sottili che sono difficili da eseguire il debug. Questo non significa che uno sviluppatore molto esperto non possa sviluppare un codice affidabile con aspettarsi, ma è qualcosa di cui devi essere consapevole.

Una delle altre cose che potresti voler guardare è un esempio dell'uso del modulo multiprocessore per scrivere codice SNMP non bloccante. Poiché questo è il mio primo post su StackOverflow, non posso pubblicare più di un link, ma se lo cerchi su Google puoi trovarlo, o un altro su IPython e Net-SNMP.

Una cosa da tenere a mente quando si scrive il codice SNMP è che comporta la lettura di molta documentazione e l'esecuzione di prove ed errori. Nel caso di Cisco, tuttavia, la documentazione è abbastanza buona.

SNMP non è male ma potrebbe non essere in grado di fare tutto ciò di cui hai bisogno. A seconda della libreria che usi e di come nasconde i dettagli dell'interazione con SNMP, potresti avere difficoltà a trovare le parti corrette della MIB da cambiare e persino a sapere cosa o come cambiarle per fare quello che vuoi.

Un motivo per non usare SNMP è che puoi fare tutta la configurazione di cui hai bisogno usando API XML IOS XR . Potrebbe essere molto più semplice raggruppare i comandi che si desidera inviare ai dispositivi utilizzando quello piuttosto che interagire con SNMP.

Ho riscontrato che SNMP è un problema per la gestione. Se hai solo bisogno di prendere un po 'di dati è fantastico; se hai bisogno di cambiare qualcosa o usarlo se pesantemente può richiedere molto tempo. Nel mio caso sono a mio agio con la CLI, quindi un approccio Telnet funziona bene. Ho scritto alcuni script Python per eseguire attività amministrative su vari dispositivi di rete usando Telnetlib

SNMP ha un notevole successo della CPU sui dispositivi in ??questione rispetto a telnet; Consiglierei telnet ove possibile. (Come affermato in una risposta precedente, l'API XML di IOS XR sarebbe piacevole, ma per quanto ne so IOS XR è distribuito solo su router di fascia alta di fascia alta).

In termini di sistemi di gestione della configurazione esistenti, due attori commerciali sono HP Opsware e EMC Voyence. Entrambi probabilmente faranno ciò di cui hai bisogno. Non sono a conoscenza di molte soluzioni open source che supportano effettivamente l'implementazione delle modifiche. ( RANCID , ad esempio, esegue solo il monitoraggio della configurazione, non pre-stadiazione e distribuzione delle modifiche di configurazione).

Se hai intenzione di implementare la tua soluzione, una cosa che consiglierei è di sederti con il tuo amministratore di rete e trovare un modello di implementazione delle migliori pratiche per il servizio che sta fornendo (ad esempio ACL standard, coda QoS e VLAN nomi; voci simili negli ACL che hanno la stessa funzione per clienti diversi, ecc.). Assicurati che tutte le configurazioni implementate esistenti siano conformi a questa BP prima di iniziare la progettazione, renderà il problema molto più gestibile. Buona fortuna.

Sidenote: prima di reinventare la ruota scrivendo un altro sistema di provisioning di servizi / sistema di gestione della rete, prova a cercare quelli esistenti. Conosco molte soluzioni commerciali di vari gradi di flessibilità / funzionalità, ma sono sicuro che ce ne sono molte open source.

Cisco ha incluso opzioni di menu per le applicazioni dell'helpdesk. Fondamentalmente telnet alla scatola e presenta un bel menu pulito (premere 1, 2, 3). Per maggiori informazioni controlla questo link:

http: / /www.cisco.com/en/US/docs/ios/12_2/configfun/command/reference/frf001.html#wp1050026

Un altro voto per aspettarsi.

Inoltre, non si desidera consentire la configurazione dei firewall tramite Telnet o SNMP: ssh è l'unica strada da percorrere. Il motivo è che ssh crittografa il suo payload e non esporrà le credenziali di gestione privilegiate a potenziali intercettazioni.

Se per qualche motivo non è possibile utilizzare direttamente ssh, prendere in considerazione la connessione di un server console seriale abilitato per ssh alla porta della console del firewall e configurarlo in questo modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top