.. meta:: :language: it :description language=it: Networking Fundamentals: Configurare un sistema operativo di rete :description language=en: Networking Fundamentals: Configure a network operating system :keywords: Networking Fundamentals, configure a network operating system :author: Luciano De Falco Alfano 2 Configurare un sistema operativo di rete ============================================= .. contents:: :local: 2.0 Introduzione -------------------- Ogni computer richiede un sistema operativo. Questo vale anche per i computer su cui si basa la rete: *switch*, *router*, *accessp point*, *firewall*. Questi **network device** sono dotati di un **network operating system** I *network operating system* gestiscono il funzionamento dell'hardware e forniscono l'interfaccia con cui l'utente può interagire. È necessario saper configurare per l'utilizza in rete sia gli *end device* (PC) che gli *intermediary device*. Il sistema operativo di rete Cisco si chiama *Cisco Internetwork Operating System*, abbreviato in **Cisco IOS** 2.1 Cisco IOS bootcamp -------------------------- **Sistema operativo**. Il **kernel** è la porzione di sistema operativo che interagisce direttamente con l'hardware. La **shell** invece è la parte di sistema operativo che interfaccia applicazioni e utenti. Un utente può interagire con la *shell* utilizzando una interfaccia a linea di comando (**CLI**: *command-line interface*) o una interfaccia grafica (**GUI**: graphical user interface*). Una *CLI* impegna meno il sistema, ma richiede che l'utente conosca la struttura dei comandi che controllano il sistema. Una **GUI** permette l'interazione dell'utente tramite strumenti grafici, quali icone, finestre, menù. Ma è più impegnativa per il sistema, e a volte è limitata rispetto una *CLI*. Per questi motivi usualmente gli *intermediay device* di rete utilizzano sistemi operativi con interfacce utente di tipo *CLI*. Un caso a parte sono i router per uso domestico. Questi usualmente vengono configurati tramite *GUI* web based. **Scopo del sistema operativo**. Il *Cisco IOS* permette all'utente: * di usare una tastiera per far girare tramite *CLI* programmi di rete; * tramite tastiera inviare comandi; * visualizzare l'otput su monitor. Tutti i device di rete Cisco sono dotati di Cisco IOS, in versioni diverse a seconda del device e delle funzionalità richieste. I diversi sistemi sono upgradabili. In questo ambito si considera l'uso di Cisco IOS ver.15.x. **Metodi di accesso**. Uno switch non ha bisogno di configurazione iniziale per essere operativo. Ma è comunque una attività raccomandata. A questo scopo vi sono più sistemi per accere alla *CLI*: * **Console** è una porta fisica che fornisce accesso *out-of_band* [#]_ al device; * **SSH** (*Secure Shell*) usa la rete per stabilire una connessione remota *sicura* [#]_ con il device; a differenza della *console* richede un servizio di rete attivo nel device, inclusa una interfaccia di rete attiva e configurata con un indirizzo di rete; * **Telnet** usa la rete per stabilire una connessione remota *non sicura*; questa non cripta quanto inviato via rete [#]_. Alcuni device, in particolare i router, possono supportare una porta seriale legacy (*AUX port*) utilizzabile per stabilire una connessione da remoto tramite modem. Analogamente alla *console* anche la *AUX port* lavora fuori banda e non richiede la presenza di servizi di rete configurati nel device. **Programmi di emulazione di terminale**. Per la connessione seriale tramite console port, o tramite SSH/Telnet, è possibile usare un emulatore di terminale. Tra questi: PuTTY, Tera Term, SecureCRT, OS X Terminal. I primi due sono open source, il terzo è proprietario, come il quarto, che è un componente del macOS. **Modalità di comando primarie**. Cisco IOS ha due modalità di comando principali: * **User EXEC Mode** (*view-only mode*), solo comandi di monitoraggio, non permette configurazioni; prompt: ``switch>``; comando ``disable`` da *privileged EXEC mode*; * **Privileged EXEC Mode**, tutti i comandi; prompt: ``switch#``; si attiva con il comando ``enable`` da *user EXEC mode*. **Configuration command mode** (*global config mode*). Da questa modalità si configura il device. Si attiva con il comando ``configure terminal`` da *privileged EXEC mode*. Prompt: ``switch(config)#``. Vi sono delle modalità di sub-configuration: * **line configuration mode**, per configurare gli accessi tramite console, SSH, Telnet o AUX port; prompt: ``switch(config-line)#`` * **interface configuration mode**, per configurare una porta di uno switch o l'interfaccia di rete di un router; prompt: ``switch(config-if)#``. **Navigazione tra le modalità**. .. image:: ./images/02_ios_modes.svg :align: center **Struttura di base dei comandi**: il comando è seguito da: * **parole chiave**, che sono termini definiti nel sistema operativo, vanno digitati come previsto dal sistema; * oppure **argomenti**, valori non predefiniti La **sintassi dei comandi** è riportata nel Cisco IOS Command Reference (vedi [CISCR]_) **IOS help**. Vi sono due possibilità di aiuto: * sensibile al contesto (*context-sensitive help*), si attiva digitando un punto interrogativo; * controllo della sintassi del comando (*command syntax check*), questo è automatico: tutte le volte che l'interprete non comprende un comando, indica dove ritiene vi sia un errore. **Hotkeys e abbreviazioni**, comandi e parole chiave possono essere abbreviati al numero minimo di lettere che li identificano univocamente. Riguardo gli *hotkeys*, per interrompere, usare **Ctrl-C**, **Ctrl-Z**, **Ctrl-Shift-6** [#]_. Gli altri tasti sono i soliti in ambito Unix/Linu per il comando *more* per l'editing di riga e per il richiamo di comandi precedenti (*history*). Ricordare il fatto che in scrittura dei comandi si può essere interrotti da eventi asincroni che effettuano output nella CLI. In questi casi è utile il comando di *redisplay the line*, ovvero **Ctrl-R**. 2.2 Configurazioni di base del dispositivo ---------------------------------------------- **Nome del dispositivo** (*device name*). Ogni device deve avere un *hostname* univoco, se non altro per distinguerlo quando ci si collega. Lunghezza max 64 caratteri, solo lettere, cifre e trattini, no spazi, primo carattere una lettera. A differenza della maggioranza dei device in Internet, Cisco distingue per gli *hostname* tra lettere maiuscole e minuscole. **Configurare l'hostname**, si esegue in *global configuration mode* con il comando: .. code:: console switch(config)# hostname SW-01 SW-01(config)# Per rimuovere l'hostname: .. code:: console SW-01(config)# no hostname switch(config)# **Configurare l'accesso al device** per metterlo in **sicurezza** è fondamentale, e si compone delle seguenti attività: * assegnare una password per l'accesso al *privileged EXEC mode*; * assegnare una password per l'accesso al *user EXEC mode*; * assegnare una password per l'accesso tramite *remote Telnet*; * criptare tutte le password: * impostare la notifica legale. Riguardo le politiche da seguire per scegliere le password: * lunghe oltre gli 8 caratteri; * presenxa di lettere minuscole e maiuscole, cifre, caratteri speciali, sequenze numeriche; * usare password diverse per i diversi device; * non utilizzare parole d'uso comune. **Configurare le password** si fa da *global config mode* come segue. Per l'accesso al *privileged EXEC mode*: .. code:: console SW-01(config)# enable secret chosen_password Per l'accesso allo *user EXEC mode* è necessario configurare la linea della console: .. code:: console SW-01(config)# line console 0 SW-01(config-line)# password chosen_password SW-01(config-line)# login # enable user EXEC access SW-01(config-line)# exit SW-01(config)# Per l'accesso tramite *remote Telnet* è necessario configurare le linee di terminale virtuale (*virtual terminal lines*: VTY) che sono utilizzate per SSH e per Telnet: .. code:: console SW-01(config)# line vty 0 15 SW-01(config-line)# password chosen_password SW-01(config-line)# login # enable user EXEC access SW-01(config-line)# exit SW-01(config)# **Criptare le password**. Di default, le password sono registrate in chiaro nei file di configurazione (*startup-config* e *running-config*). Per evitare questo problema è necessario dare il seguente comando in *global config mode*: .. code:: console SW-01(config)# service password-encryption Per verificare se le password sono criptate, si può visualizzare la configurazione corrente, come segue: .. code:: console SW-01# show running-config **Messaggi di avviso**. Cisco enfatizza la necessità di carattere legale di dichiarare che l'accesso al device è permesso solo al personale autorizzato. Per questo scopo va utilizzato un avviso, e si rivela utile il *message of the day* (*motd*) che è sempre visualizzato quando ci si collega. Il *motd* si crea da *global config mode* come segue: .. code:: console SW-01(config)# banner motd #message_content# i caratteri ``#`` sono delimitatori del messaggio. Possono essere diversi dal cancelletto, purché non compaiano nel messaggio. **Salvataggio delle configurazioni**. Come accennato vi sono due file di sistema per memorizzare la configurazione: * **startup-config** memorizzato in NVRAM (*NonVolatile Random Access Memory*) [#]_, contiene tutti i comandi usati dal device all'avvio o in caso di reboot. * **running-config** questo è memorizzato in RAM (*Random Access Memory*) e riporta la configurazione corrente. La sua modifica ifluisce immediatamente sul comportamento del device. Il contenuto della RAM è perso se il device viene spento o riavviato. Per visualizzare la configurazione: .. code:: console SW-01# show running-config # visualizza la config.corrente SW-01# show startup-config # visualizza la config.d'avvio Per caricare la configurazione corrente in caso di spegnimento o riavvio, è necessario copiarla in startup-config come segue: .. code:: console SW-01# copy running-config startup-config # running-config -> startup-config Destination filename [statup-config]? # ENTER to accept default Building configuration... [OK] SW-01# dir nvram: # flash:, nvram:, Directory of nvram:/ 238 -rw- 1205 startup-config 1205 bytes total (237588 bytes free) SW-01# Il comando *dir nvram:* ci permette di controllare la presenza del file *startup-config* in NVRAM. Il comando di riavvio è **reload**. Questa operazione che può causare un breve periodo di caduta della rete, ad es. se si effettua il reload di uno switch. .. code:: console SW-01# reload Proceed to reload? [confirm] # ENTER to accept default ... Per cancellare la startup-config (ripristina la configurazione di fabbrica): .. code:: console SW-01# erase startup-config Erasing the nvram filesystem will remove all configuration files! Continue? [confirm] # ENTER to accept default [OK] .... Per cancellare la running-config (in caso si vogliano eliminare delle modifiche running), copiare su di essa la startup-config: .. code:: console SW-01# copy startup-config running-config # startup-config -> running-config Destination filename [running-config]? # ENTER Building configuration... [OK] in questo modo non è necessario riavviare il device [#]_. Cisco suggerisce di utilizzare la funzionalità di logging dell'emulatore di terminale, ad es. putty, per registrare su file di testo i comandi per la configurazione del device visualizzato con *show running-config* o con *show setup-config*. I file di logging possono essere editati per lasciare i soli comandi, togliendo eventuale output in eccesso, per poi fare cut & paste in una sessione di lavoro dell'emulatore di terminale. 2.3 Schemi di indirizzamento ---------------------------------- La localizzazione di un device, per stabilire una comunicazione, avviene tramite l'uso di **indirizzi IP**. La struttura di un IPv4 [#]_ è detta *dotted decimal notation* (notazione decimale con punti), ed è rappresentata da 4 numeri decimali di valori compresi tra 0 e 255. Oltre l'indirizzo, è necessaria anche una *subnet mask*. Questo è un valore a 32 bit che va usato congiuntamente all'indirizzo IPv4 per suddividere la porzione d'indirizzo che identifica la sottorete rispetto la porzione che identifica l'host nella sottorete. Tipicamente un device avrà un indirizzo IPv4, relativa subnet mask, e un indirizzo IPv4 di default gateway, ovvero il sistema da indirizzare se il destinatario del messaggio non è nella stessa sottorete del mittente. Gli indirizzi IP possono essere assegnati nei device sia a porte fisiche, che ad interfacce virtuali, ovvero programmi che rispondono all'indirizzo senza avere un NIC associato. **Interfacce e porte**. La comunicazione in rete dipende dalle interfacce fisiche dei device (end e intermedi), e dei cavi che le collegano. Ogni interfaccia fisica ha delle specifiche (standard) che la definiscono. Un cavo che la collega deve aderire allo standard dell'interfaccia. I media di rete tipici sono: cavi di rame intrecciati (*twisted-pair copper cable*), cavi in fibra ottica, wireless. Un media può essere appropriato o meno in funzione delle caratteristiche richieste per: * distanza su cui i segnali possono essere trasmessi; * ambiente in cui installare il media; * quantità di dati e velocità a cui devono essere trasmessi; * costo del media e dell'installazione. Un link, oltre il media opportuno, richiede anche una tecnologia di rete opportuna. Ad esempio, oggi Ethernet è la tecnologia di rete più diffusa nelle LAN. Uno switch layer 2 lavora a livello di data link: ovvero solo MAC addresses. Di consequenza **non** necessita di indirizzo IP per svolgere la sua funzione. Gli switch Cisco di layer 2 hanno un indirizzo IP per poter essere gestiti da remoto. La interfaccia SVI (switch virtual interface) che presentano, serve a questo scopo. Di default la SVI è sulla VLAN 1. Gli switch layer 2 sono detti *access layer switch*. Il 2960 è un access layer switch. **Configurazione manuale degli indirizzi IP degli end device**. Un indirizzo IP può essere assegnato manualmente a un end device, oppure automaticamente tramite DHCP. Ad esempio, per configurare manualmente in Windows, si può utilizzare la GUI in ``Control Panel > Network sharing center > change adapter settings``, mentre in MS Windows 10: ``Pannello di controllo\Tutti gli elementi del Pannello di controllo\Connessioni di rete`` Nota: nella GUI di Windows è impostabile anche l'indirizzo IP del DNS, ovvero del servizio che risolve nomi di dominio in indirizzi IP e viceversa. **Configurazione automatica degli indirizzi IP degli end device**. Di solito i PC usano DHCP (*Dynamic Host Configuration Protocol*) di default. DHCP assegna automaticamente un indirizzo IP a ogni end device configurato per chiederlo. Questo permette di risparmiare il tempo necessario alla configurazione manuale e diminuisce le possibilità di errore. In un PC Windows, si può controllare l'indirizzo IP, la relativa subnet mask, e altri parametri ricevuti dal DHCP utilizzando il comando **ipconfig** nel command prompt. **Configurazione della Switch Virtual Interface**. Per effettuare l'accesso *da remoto* [#]_ ad uno switch è necessario utilizzare la SVI, che deve essere configurata con indirizzo IP e subnet mask da *global configuration mode*: .. code:: console SW-01(config)# interface vlan 1 # setting vlan 1 SW-01(config-if)# ip address chosen_ip chosen_subnet # set ip address and subnet mask SW-01(config-if)# no shutdown # enable vlan Di default la SVI è sulla VLAN 1. Normalmente **anche** *tutte le porte fisiche* dello switch sono assegnate a VLAN 1. Quindi ci si può collegare da remoto tramite una qualunque porta dello switch. Come usuale, è possibile controllare la configurazione usando il comando *show running-config*. Inoltre si può controllare la sola configurazione IP delle interfacce tramite *privileged EXEC mode*: .. code:: console SW-01# show ip interface brief .... GigabitEthernet0/2 unassigned YES manual down down Vlan1 192.168.1.10 YES manual up down dove il parametro *up* indica che è fisicamente pronta, perchè abbiamo dato in comando *no shutdown*. Mentre il parametro *down* indica che logicamente non è pronta perché nessuna delle porte fisiche Ethernet assegnate alla VLAN è configurata fisicamente *up*, ovvero: nessuna ha un cavo collegato ad una porta Ethernet di un end device. Se si collega un cavo Ethernet da un end device ad una qualunque porta dello switch, la Vlan1 andrà *up* anche logicamente. Con la Vlan1 configurata, lo switch sarà anche in grado di rispondere al ping. **Verifica dell'assegnazione dell'indirizzo dell'interfaccia**. Come accennato nel precedente paragrafo, si può controllare la configurazione delle interfacce tramite *privileged EXEC mode*: .. code:: console SW-01# show ip interface brief .... GigabitEthernet0/2 unassigned YES manual down down Vlan1 192.168.1.2 YES manual administratively down down dove la voce *administratively down* ci dice che la Vlan1 è ancora shutdowned. **Test di connessione end-to-end**. Si può usare il comando **ping**. Ed è bene utilizzarlo in entrambi i sensi di percorrenza dei dati per verificare che la comunicazione sia bidirezionale. Se il ping non funziona, verificare che non venga bloccato da un firewall. Questa è la condizione tipica quando il ping funziona in un senso e non nell'altro. ------------------------ .. |space| unicode:: U+0020 .. space .. [#] Out-of-band: canale di gestione dedicato. .. [#] Sicura: significa che i dati trasmessi/ricevuti sono criptati. .. [#] Si consideri che anche eventuali utenza e password sono trasmesse in chiaro. .. [#] In particolare *Ctrl-Shift-6* è particolarmente utile perché è in grado di interrompere anche le sequenze di ricerca DNS, oltre traceroute e ping. Per omprendere l'utilità: se si sbaglia a digitare un comando, IOS tenta di interpretarlo come nome a dominio, lanciando il *DNS lookup* e inchiodando l'operatore per una congrua quantità di tempo. .. [#] La NVRAM non si cancella quando il sistema viene spento. .. [#] Una risposta di assesment recita: "The technician does not want to make any mistakes trying to remove all the changes that were done to the running configuration file. The solution is to reboot the router without saving the running configuration. The copy startup-config running-config command does not overwrite the running configuration file with the configuration file stored in NVRAM, but rather it just has an additive effect". *Quindi* sembra che la copia del setup su running non sia una vera copia, ma una aggiunta (? con quali criteri?). .. [#] IPv4 è la versione più comune, e piu anziana, di indirizzamento. Esiste IPv6 che è più recente ed è in fase di diffusione. .. [#] Da remoto: ovvero via LAN, non con cavo console.