# Cisco IOS

Cisco IOS (originalmente Internetwork Operating System) es el software utilizado en la gran mayoría de routers (encaminadores) y switches (conmutadores) de Cisco Systems (algunos conmutadores obsoletos ejecutaban CatOS). IOS es un paquete de funciones de enrutamiento, conmutamiento, trabajo de internet y telecomunicaciones que se integra estrechamente con un sistema operativo multitarea.
La interfaz de línea de comandos de IOS (IOS CLI) proporciona un conjunto fijo de comandos de múltiples palabras. El conjunto disponible se determina mediante el "modo" y el nivel de privilegios del usuario actual. El modo "Global configuration" proporciona comandos para cambiar la configuración del sistema y el modo "interface configuration" a su vez, proporciona comandos para cambiar la configuración de una interfaz específica. A todos los comandos se les asigna un nivel de privilegios, de 0 a 15, y pueden ser accedidos por usuarios con los privilegios necesarios. A través de la CLI, se pueden definir los comandos disponibles para cada nivel de privilegio.

## Arranque del IOS

Al arrancar un dispositivo de Cisco este realiza un Bootstrap (comprobación de hardware).
Después intentará cargar una imagen IOS desde la memoria Flash o desde un servidor TFTP. En el caso de no hallarla ejecutará una versión reducida de la IOS ubicada en la ROM.
Tras el arranque del sistema localizará la configuración del mismo, generalmente en texto simple. Puede estar ubicada en la memoria NVRAM o en un servidor de TFTP. En el caso de no encontrarla iniciará un asistente de instalación (modo Setup).
Con la siguiente imagen puede quedar más claro:

## Sistema de Archivos

IOS File System (IFS) puede acceder y almacenar distintos tipos de datos en:
* Bootflash
* Flash se usa para almacenar imágenes completas del software cisco IOS. Guarda copia del sistema operativo.
* Flh ASI
* Nvram es uno de los componentes de configuración interna de un enrutador. Se usa para almacenar un archivo de configuración de respaldo/inicio
* RCP
* Slo
* Slot1
* System
* TFTP

## Modos de configuración

* *Modo USER EXEC: Modo sin privilegios en el que no podemos modificar ni leer la configuración del equipo. Básicamente, solo podemos utilizar: show, ping, telnet, traceroute.
* *Modo PRIVILEGED EXEC: Modo de visualización con privilegios.
* *Modo de Configuración Global o CONFIGURE: Permite configurar aspectos simples del equipo como pueden ser el nombre, alias de comandos, reloj, etc.
* *Modos de configuración específicos: Permiten configurar protocolos, interfaces o en general aspectos más complejos del equipo.

## Ejemplos de configuración
### Creación de Vlans

* Switch#config t e
* Switch(config)#vlan 3
* Switch(config-vlan)#name verde
* Switch(config-vlan)#exit
* Switch(config)#exit
* Switch#
De este modo hemos creado la vlan 3 con nombre verde.

### Eliminación de Vlans

* Switch#
* Switch(vlan)#no vlan 3
De este modo hemos eliminado la vlan 3.

### Asignando ip a VLANs

* Switch#enable
* Switch#configure terminal
* Switch(config)#interface vlan 3
* Switch(config-if)#ip address 192.168.1.1 255.255.255.0

### Puerto de acceso (switchport mode access)

El puerto solo pertenece a una VLAN asignada de forma estática (VLAN nativa). Modo por defecto. Inicialmente, todos asignados á VLAN 1

#### Asignando Vlan a un puerto

* Switch#configure terminal
* Switch(config)#interface fastEthernet 0/1
* Switch(config-if)#switchport access vlan 10
Asegurarse de que el puerto está configurado como vlan access y sino ejecut
* Switch#configure termin
De este modo el puerto fastEthernet 0/1 pertenece ah

### Puerto trunk (switchport mode trunk)

Puerto miembro de múltiples VLANs. Por defecto es miembro de todas, pero la lista de VLANs permitidas es configurable.

#### Cambiar un puerto a modo trunk

* Switch>enable
* Switch#configure terminal
* Switch(config)#interface fastEthernet 0/1
* Switch(config-if)#switchport mode trunk
Podemos modificar un puerto en modo trunk para elegir que vlans pasan a través de éste.

#### Quitar vlan de un puerto Vlan trunk

* Switch>enable
* Switch#configure terminal
* Switch(config)#interface fastEthernet 0/1
* Switch(config-if)#switchport trunk allowed vlan remove 1

#### Añadir Vlan a un puerto Vlan trunk

* Switch>enable
* Switch#configure terminal
* Switch(config)#interface fastEthernet 0/1
* Switch(config-if)#switchport trunk allowed vlan add 1

## Seguridad y vulnerabilidades

Cisco IOS ha demostrado ser vulnerable a desbordamientos de buffer y otros problemas que han afectado a otros sistemas operativos y aplicaciones.
Debido a que el IOS tiene que saber la contraseña de texto para determinados usos (por ejemplo, la autenticación CHAP), las contraseñas de entrada en la línea de comandos por defecto son débilmente codificado como "Tipo 7" ,texto cifrado. Esto está diseñado para evitar la ataques "shoulder-surfing" durante la visualización de configuraciones del enrutador y no es seguro - que son fáciles de descifrar utilizando un software llamado "getpass", disponible desde 1995, aunque las contraseñas pueden ser decodificados por el enrutador usando el "key-chain" de comandos y entrando como la llave, y luego utilizando el comando “show-key”.
Nota: Cisco recomienda que todos los dispositivos Cisco IOS implementar la autenticación, autorización y contabilidad (AAA), el modelo de seguridad. AAA puede utilizar RADIUS local, y TACACS + bases de datos. Sin embargo, una cuenta local por lo general sigue siendo necesario para situaciones de emergencia.

## Simulador IOS de Cisco

GNS3 (graphical network simulator 3) es un simulador gráfico de red basado en la IOS de Cisco. Con este simulador se puede crear un laboratorio completamente operativo de dispositivos Cisco; para ello es necesario disponer de las imágenes IOS de cada uno de los enrutadores, conmutadores o cortafuegos que se utilizarán. Resulta útil para la preparación de certificaciones CCNA, CCNP, CCIE y otras, además de volcar entornos de clientes y realizar pruebas reales.
Además en un programa de código abierto y compatible con muchos sistemas operativos:
GNS3

## Imágenes de IOS

Poseen una denominación establecida por Cisco. He aquí un ejemplo: c3000-js-l_121-3.bin
* 3000: es el modelo del enrutador, por ejemplo: 801, 1841, etc
Imagen de la última versión del Ios de Cisco: